package util import ( "testing" "github.com/stretchr/testify/assert" ) var ( sliceData = []string{"one", "two", "three", "four"} ) func TestStringInSlice(t *testing.T) { // string is in the slice assert.True(t, StringInSlice("one", sliceData)) // string is not in the slice assert.False(t, StringInSlice("five", sliceData)) // string is not in empty slice assert.False(t, StringInSlice("one", []string{})) } func TestParseChanges(t *testing.T) { // CMD=/bin/sh _, vals, err := ParseChanges("CMD=/bin/sh") assert.EqualValues(t, []string{"/bin/sh"}, vals) assert.NoError(t, err) // CMD [/bin/sh] _, vals, err = ParseChanges("CMD [/bin/sh]") assert.EqualValues(t, []string{"/bin/sh"}, vals) assert.NoError(t, err) // CMD ["/bin/sh"] _, vals, err = ParseChanges(`CMD ["/bin/sh"]`) assert.EqualValues(t, []string{`"/bin/sh"`}, vals) assert.NoError(t, err) // CMD ["/bin/sh","-c","ls"] _, vals, err = ParseChanges(`CMD ["/bin/sh","c","ls"]`) assert.EqualValues(t, []string{`"/bin/sh"`, `"c"`, `"ls"`}, vals) assert.NoError(t, err) // CMD ["/bin/sh","arg-with,comma"] _, vals, err = ParseChanges(`CMD ["/bin/sh","arg-with,comma"]`) assert.EqualValues(t, []string{`"/bin/sh"`, `"arg-with`, `comma"`}, vals) assert.NoError(t, err) // CMD "/bin/sh"] _, _, err = ParseChanges(`CMD "/bin/sh"]`) assert.Error(t, err) assert.Equal(t, `invalid value "/bin/sh"]`, err.Error()) // CMD [bin/sh _, _, err = ParseChanges(`CMD "/bin/sh"]`) assert.Error(t, err) assert.Equal(t, `invalid value "/bin/sh"]`, err.Error()) // CMD ["/bin /sh"] _, _, err = ParseChanges(`CMD ["/bin /sh"]`) assert.Error(t, err) assert.Equal(t, `invalid value "/bin /sh"`, err.Error()) // CMD ["/bin/sh", "-c","ls"] whitespace between values _, vals, err = ParseChanges(`CMD ["/bin/sh", "c","ls"]`) assert.Error(t, err) assert.Equal(t, `invalid value "c"`, err.Error()) // CMD? _, _, err = ParseChanges(`CMD?`) assert.Error(t, err) assert.Equal(t, `invalid format CMD?`, err.Error()) // empty values for CMD _, _, err = ParseChanges(`CMD `) assert.Error(t, err) assert.Equal(t, `invalid value `, err.Error()) // LABEL=blue=image _, vals, err = ParseChanges(`LABEL=blue=image`) assert.EqualValues(t, []string{"blue", "image"}, vals) assert.NoError(t, err) // LABEL = blue=image _, vals, err = ParseChanges(`LABEL = blue=image`) assert.Error(t, err) assert.Equal(t, `invalid value = blue=image`, err.Error()) }