github.com/opentofu/opentofu@v1.7.1/internal/command/flag_kv_test.go (about) 1 // Copyright (c) The OpenTofu Authors 2 // SPDX-License-Identifier: MPL-2.0 3 // Copyright (c) 2023 HashiCorp, Inc. 4 // SPDX-License-Identifier: MPL-2.0 5 6 package command 7 8 import ( 9 "flag" 10 "reflect" 11 "testing" 12 ) 13 14 func TestFlagStringKV_impl(t *testing.T) { 15 var _ flag.Value = new(FlagStringKV) 16 } 17 18 func TestFlagStringKV(t *testing.T) { 19 cases := []struct { 20 Input string 21 Output map[string]string 22 Error bool 23 }{ 24 { 25 "key=value", 26 map[string]string{"key": "value"}, 27 false, 28 }, 29 30 { 31 "key=", 32 map[string]string{"key": ""}, 33 false, 34 }, 35 36 { 37 "key=foo=bar", 38 map[string]string{"key": "foo=bar"}, 39 false, 40 }, 41 42 { 43 "map.key=foo", 44 map[string]string{"map.key": "foo"}, 45 false, 46 }, 47 48 { 49 "key", 50 nil, 51 true, 52 }, 53 54 { 55 "key=/path", 56 map[string]string{"key": "/path"}, 57 false, 58 }, 59 } 60 61 for _, tc := range cases { 62 f := new(FlagStringKV) 63 err := f.Set(tc.Input) 64 if err != nil != tc.Error { 65 t.Fatalf("bad error. Input: %#v\n\nError: %s", tc.Input, err) 66 } 67 68 actual := map[string]string(*f) 69 if !reflect.DeepEqual(actual, tc.Output) { 70 t.Fatalf("bad: %#v", actual) 71 } 72 } 73 }