github.com/icebourg/terraform@v0.6.5-0.20151015205227-263cc1b85535/command/flag_kv_test.go (about) 1 package command 2 3 import ( 4 "flag" 5 "io/ioutil" 6 "reflect" 7 "testing" 8 ) 9 10 func TestFlagKV_impl(t *testing.T) { 11 var _ flag.Value = new(FlagKV) 12 } 13 14 func TestFlagKV(t *testing.T) { 15 cases := []struct { 16 Input string 17 Output map[string]string 18 Error bool 19 }{ 20 { 21 "key=value", 22 map[string]string{"key": "value"}, 23 false, 24 }, 25 26 { 27 "key=", 28 map[string]string{"key": ""}, 29 false, 30 }, 31 32 { 33 "key=foo=bar", 34 map[string]string{"key": "foo=bar"}, 35 false, 36 }, 37 38 { 39 "key", 40 nil, 41 true, 42 }, 43 } 44 45 for _, tc := range cases { 46 f := new(FlagKV) 47 err := f.Set(tc.Input) 48 if err != nil != tc.Error { 49 t.Fatalf("bad error. Input: %#v", tc.Input) 50 } 51 52 actual := map[string]string(*f) 53 if !reflect.DeepEqual(actual, tc.Output) { 54 t.Fatalf("bad: %#v", actual) 55 } 56 } 57 } 58 59 func TestFlagKVFile_impl(t *testing.T) { 60 var _ flag.Value = new(FlagKVFile) 61 } 62 63 func TestFlagKVFile(t *testing.T) { 64 inputLibucl := ` 65 foo = "bar" 66 ` 67 68 inputJson := `{ 69 "foo": "bar"}` 70 71 cases := []struct { 72 Input string 73 Output map[string]string 74 Error bool 75 }{ 76 { 77 inputLibucl, 78 map[string]string{"foo": "bar"}, 79 false, 80 }, 81 82 { 83 inputJson, 84 map[string]string{"foo": "bar"}, 85 false, 86 }, 87 } 88 89 path := testTempFile(t) 90 91 for _, tc := range cases { 92 if err := ioutil.WriteFile(path, []byte(tc.Input), 0644); err != nil { 93 t.Fatalf("err: %s", err) 94 } 95 96 f := new(FlagKVFile) 97 err := f.Set(path) 98 if err != nil != tc.Error { 99 t.Fatalf("bad error. Input: %#v", tc.Input) 100 } 101 102 actual := map[string]string(*f) 103 if !reflect.DeepEqual(actual, tc.Output) { 104 t.Fatalf("bad: %#v", actual) 105 } 106 } 107 }