|
@@ -0,0 +1,65 @@
|
|
|
+package dockerfile
|
|
|
+
|
|
|
+import "testing"
|
|
|
+
|
|
|
+type testCase struct {
|
|
|
+ name string
|
|
|
+ args []string
|
|
|
+ attributes map[string]bool
|
|
|
+ expected []string
|
|
|
+}
|
|
|
+
|
|
|
+func initTestCases() []testCase {
|
|
|
+ testCases := []testCase{}
|
|
|
+
|
|
|
+ testCases = append(testCases, testCase{
|
|
|
+ name: "empty args",
|
|
|
+ args: []string{},
|
|
|
+ attributes: make(map[string]bool),
|
|
|
+ expected: []string{},
|
|
|
+ })
|
|
|
+
|
|
|
+ jsonAttributes := make(map[string]bool)
|
|
|
+ jsonAttributes["json"] = true
|
|
|
+
|
|
|
+ testCases = append(testCases, testCase{
|
|
|
+ name: "json attribute with one element",
|
|
|
+ args: []string{"foo"},
|
|
|
+ attributes: jsonAttributes,
|
|
|
+ expected: []string{"foo"},
|
|
|
+ })
|
|
|
+
|
|
|
+ testCases = append(testCases, testCase{
|
|
|
+ name: "json attribute with two elements",
|
|
|
+ args: []string{"foo", "bar"},
|
|
|
+ attributes: jsonAttributes,
|
|
|
+ expected: []string{"foo", "bar"},
|
|
|
+ })
|
|
|
+
|
|
|
+ testCases = append(testCases, testCase{
|
|
|
+ name: "no attributes",
|
|
|
+ args: []string{"foo", "bar"},
|
|
|
+ attributes: nil,
|
|
|
+ expected: []string{"foo bar"},
|
|
|
+ })
|
|
|
+
|
|
|
+ return testCases
|
|
|
+}
|
|
|
+
|
|
|
+func TestHandleJSONArgs(t *testing.T) {
|
|
|
+ testCases := initTestCases()
|
|
|
+
|
|
|
+ for _, test := range testCases {
|
|
|
+ arguments := handleJSONArgs(test.args, test.attributes)
|
|
|
+
|
|
|
+ if len(arguments) != len(test.expected) {
|
|
|
+ t.Fatalf("In test \"%s\": length of returned slice is incorrect. Expected: %d, got: %d", test.name, len(test.expected), len(arguments))
|
|
|
+ }
|
|
|
+
|
|
|
+ for i := range test.expected {
|
|
|
+ if arguments[i] != test.expected[i] {
|
|
|
+ t.Fatalf("In test \"%s\": element as position %d is incorrect. Expected: %s, got: %s", test.name, i, test.expected[i], arguments[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|