github.com/hashicorp/packer@v1.14.3/command/flag-kv/flag_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package kvflag 5 6 import ( 7 "flag" 8 "reflect" 9 "testing" 10 ) 11 12 func TestFlag_impl(t *testing.T) { 13 var _ flag.Value = new(Flag) 14 } 15 16 func TestFlag(t *testing.T) { 17 cases := []struct { 18 Input string 19 Output map[string]string 20 Error bool 21 }{ 22 { 23 "key=value", 24 map[string]string{"key": "value"}, 25 false, 26 }, 27 28 { 29 "key=", 30 map[string]string{"key": ""}, 31 false, 32 }, 33 34 { 35 "key=foo=bar", 36 map[string]string{"key": "foo=bar"}, 37 false, 38 }, 39 40 { 41 "key", 42 nil, 43 true, 44 }, 45 } 46 47 for _, tc := range cases { 48 f := new(Flag) 49 err := f.Set(tc.Input) 50 if (err != nil) != tc.Error { 51 t.Fatalf("bad error. Input: %#v", tc.Input) 52 } 53 54 actual := map[string]string(*f) 55 if !reflect.DeepEqual(actual, tc.Output) { 56 t.Fatalf("bad: %#v", actual) 57 } 58 } 59 }