浏览代码

TestParseInitVersion: add some additional tests

Also slightly harden parseInitVersion

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sebastiaan van Stijn 5 年之前
父节点
当前提交
2030daf2ee
共有 2 个文件被更改,包括 26 次插入10 次删除
  1. 3 2
      daemon/info_unix.go
  2. 23 8
      daemon/info_unix_test.go

+ 3 - 2
daemon/info_unix.go

@@ -205,14 +205,15 @@ func getBackingFs(v *types.Info) string {
 //
 //     tini version 0.18.0 - git.fec3683
 func parseInitVersion(v string) (version string, commit string, err error) {
-	parts := strings.Split(strings.TrimSpace(v), " - ")
+	parts := strings.Split(v, " - ")
 
 	if len(parts) >= 2 {
-		gitParts := strings.Split(parts[1], ".")
+		gitParts := strings.Split(strings.TrimSpace(parts[1]), ".")
 		if len(gitParts) == 2 && gitParts[0] == "git" {
 			commit = gitParts[1]
 		}
 	}
+	parts[0] = strings.TrimSpace(parts[0])
 	if strings.HasPrefix(parts[0], "tini version ") {
 		version = strings.TrimPrefix(parts[0], "tini version ")
 	}

+ 23 - 8
daemon/info_unix_test.go

@@ -26,12 +26,24 @@ func TestParseInitVersion(t *testing.T) {
 		}, {
 			output:  "tini version 0.13.2",
 			version: "0.13.2",
+		}, {
+			output:  "tini version 0.13.2 - ",
+			version: "0.13.2",
+		}, {
+			output: " - git.949e6fa",
+			commit: "949e6fa",
 		}, {
 			output:  "tini version0.13.2",
 			invalid: true,
+		}, {
+			output:  "version 0.13.0",
+			invalid: true,
 		}, {
 			output:  "",
 			invalid: true,
+		}, {
+			output:  " - ",
+			invalid: true,
 		}, {
 			output:  "hello world",
 			invalid: true,
@@ -39,14 +51,17 @@ func TestParseInitVersion(t *testing.T) {
 	}
 
 	for _, test := range tests {
-		version, commit, err := parseInitVersion(test.output)
-		if test.invalid {
-			assert.Check(t, is.ErrorContains(err, ""))
-		} else {
-			assert.Check(t, err)
-		}
-		assert.Equal(t, test.version, version)
-		assert.Equal(t, test.commit, commit)
+		test := test
+		t.Run(test.output, func(t *testing.T) {
+			version, commit, err := parseInitVersion(test.output)
+			if test.invalid {
+				assert.Check(t, is.ErrorContains(err, ""))
+			} else {
+				assert.Check(t, err)
+			}
+			assert.Equal(t, test.version, version)
+			assert.Equal(t, test.commit, commit)
+		})
 	}
 }