github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+incompatible/daemon/info_unix_test.go (about)

     1  // +build !windows
     2  
     3  package daemon // import "github.com/docker/docker/daemon"
     4  
     5  import (
     6  	"testing"
     7  
     8  	"gotest.tools/v3/assert"
     9  	is "gotest.tools/v3/assert/cmp"
    10  )
    11  
    12  func TestParseInitVersion(t *testing.T) {
    13  	tests := []struct {
    14  		output  string
    15  		version string
    16  		commit  string
    17  		invalid bool
    18  	}{
    19  		{
    20  			output:  "tini version 0.13.0 - git.949e6fa",
    21  			version: "0.13.0",
    22  			commit:  "949e6fa",
    23  		}, {
    24  			output:  "tini version 0.13.0\n",
    25  			version: "0.13.0",
    26  		}, {
    27  			output:  "tini version 0.13.2",
    28  			version: "0.13.2",
    29  		}, {
    30  			output:  "tini version 0.13.2 - ",
    31  			version: "0.13.2",
    32  		}, {
    33  			output: " - git.949e6fa",
    34  			commit: "949e6fa",
    35  		}, {
    36  			output:  "tini version0.13.2",
    37  			invalid: true,
    38  		}, {
    39  			output:  "version 0.13.0",
    40  			invalid: true,
    41  		}, {
    42  			output:  "",
    43  			invalid: true,
    44  		}, {
    45  			output:  " - ",
    46  			invalid: true,
    47  		}, {
    48  			output:  "hello world",
    49  			invalid: true,
    50  		},
    51  	}
    52  
    53  	for _, test := range tests {
    54  		test := test
    55  		t.Run(test.output, func(t *testing.T) {
    56  			version, commit, err := parseInitVersion(test.output)
    57  			if test.invalid {
    58  				assert.Check(t, is.ErrorContains(err, ""))
    59  			} else {
    60  				assert.Check(t, err)
    61  			}
    62  			assert.Equal(t, test.version, version)
    63  			assert.Equal(t, test.commit, commit)
    64  		})
    65  	}
    66  }
    67  
    68  func TestParseRuntimeVersion(t *testing.T) {
    69  	tests := []struct {
    70  		output  string
    71  		runtime string
    72  		version string
    73  		commit  string
    74  		invalid bool
    75  	}{
    76  		{
    77  			output: `
    78  runc version 1.0.0-rc5+dev
    79  commit: 69663f0bd4b60df09991c08812a60108003fa340
    80  spec: 1.0.0
    81  `,
    82  			runtime: "runc",
    83  			version: "1.0.0-rc5+dev",
    84  			commit:  "69663f0bd4b60df09991c08812a60108003fa340",
    85  		},
    86  		{
    87  			output: `
    88  runc version 1.0.0-rc5+dev
    89  spec: 1.0.0
    90  `,
    91  			runtime: "runc",
    92  			version: "1.0.0-rc5+dev",
    93  		},
    94  		{
    95  			output: `
    96  commit: 69663f0bd4b60df09991c08812a60108003fa340
    97  spec: 1.0.0
    98  `,
    99  			commit: "69663f0bd4b60df09991c08812a60108003fa340",
   100  		},
   101  		{
   102  			output: `
   103  crun version 0.7
   104  spec: 1.0.0
   105  +SYSTEMD +SELINUX +CAP +SECCOMP +EBPF +YAJL
   106  `,
   107  			runtime: "crun",
   108  			version: "0.7",
   109  		},
   110  		{
   111  			output:  "",
   112  			invalid: true,
   113  		},
   114  		{
   115  			output:  "hello world",
   116  			invalid: true,
   117  		},
   118  	}
   119  
   120  	for _, test := range tests {
   121  		runtime, version, commit, err := parseRuntimeVersion(test.output)
   122  		if test.invalid {
   123  			assert.Check(t, is.ErrorContains(err, ""))
   124  		} else {
   125  			assert.Check(t, err)
   126  		}
   127  		assert.Equal(t, test.runtime, runtime)
   128  		assert.Equal(t, test.version, version)
   129  		assert.Equal(t, test.commit, commit)
   130  	}
   131  }