//go:build !windows package daemon // import "github.com/docker/docker/daemon" import ( "testing" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" ) func TestParseInitVersion(t *testing.T) { tests := []struct { output string version string commit string invalid bool }{ { output: "tini version 0.13.0 - git.949e6fa", version: "0.13.0", commit: "949e6fa", }, { output: "tini version 0.13.0\n", version: "0.13.0", }, { 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, }, } for _, test := range tests { 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) }) } } func TestParseRuntimeVersion(t *testing.T) { tests := []struct { output string runtime string version string commit string invalid bool }{ { output: ` runc version 1.0.0-rc5+dev commit: 69663f0bd4b60df09991c08812a60108003fa340 spec: 1.0.0 `, runtime: "runc", version: "1.0.0-rc5+dev", commit: "69663f0bd4b60df09991c08812a60108003fa340", }, { output: ` runc version 1.0.0-rc5+dev spec: 1.0.0 `, runtime: "runc", version: "1.0.0-rc5+dev", }, { output: ` commit: 69663f0bd4b60df09991c08812a60108003fa340 spec: 1.0.0 `, commit: "69663f0bd4b60df09991c08812a60108003fa340", }, { output: ` crun version 0.7 spec: 1.0.0 +SYSTEMD +SELINUX +CAP +SECCOMP +EBPF +YAJL `, runtime: "crun", version: "0.7", }, { output: "", invalid: true, }, { output: "hello world", invalid: true, }, } for _, test := range tests { runtime, version, commit, err := parseRuntimeVersion(test.output) if test.invalid { assert.Check(t, is.ErrorContains(err, "")) } else { assert.Check(t, err) } assert.Equal(t, test.runtime, runtime) assert.Equal(t, test.version, version) assert.Equal(t, test.commit, commit) } }