| // +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) |
| } |
| } |