diff --git a/daemon/info_unix.go b/daemon/info_unix.go index 89f349e31e..43ed11a8b8 100644 --- a/daemon/info_unix.go +++ b/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 ") } diff --git a/daemon/info_unix_test.go b/daemon/info_unix_test.go index 92b3eafd2b..e1883ad926 100644 --- a/daemon/info_unix_test.go +++ b/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) + }) } }