mirror of
https://github.com/containers/podman.git
synced 2025-05-22 17:46:52 +08:00

currently, podman import change do not support syntax like - KEY val - KEY ["val"] This adds support for both of these syntax along with KEY=val Signed-off-by: Kunal Kushwaha <kunal.kushwaha@gmail.com>
89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
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())
|
|
|
|
}
|