github.com/hashicorp/packer@v1.14.3/command/flag-slice/flag_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package sliceflag 5 6 import ( 7 "flag" 8 "reflect" 9 "testing" 10 ) 11 12 func TestStringFlag_implements(t *testing.T) { 13 var raw interface{} 14 raw = new(StringFlag) 15 if _, ok := raw.(flag.Value); !ok { 16 t.Fatalf("StringFlag should be a Value") 17 } 18 } 19 20 // TestStringFlagSet tests for setting the same flag more than once on the CLI 21 // like: blah -flag foo -flag bar 22 func TestStringFlagSet(t *testing.T) { 23 sv := new(StringFlag) 24 err := sv.Set("foo") 25 if err != nil { 26 t.Fatalf("err: %s", err) 27 } 28 29 err = sv.Set("bar") 30 if err != nil { 31 t.Fatalf("err: %s", err) 32 } 33 34 expected := []string{"foo", "bar"} 35 if !reflect.DeepEqual([]string(*sv), expected) { 36 t.Fatalf("Bad: %#v", sv) 37 } 38 } 39 40 // TestMultiStringFlag tests for setting the same flag using a comma-separated 41 // list of items like: blah -flag=foo,bar 42 func TestMultiStringFlag(t *testing.T) { 43 sv := new(StringFlag) 44 err := sv.Set("chocolate,vanilla") 45 if err != nil { 46 t.Fatalf("err :%s", err) 47 } 48 49 expected := []string{"chocolate", "vanilla"} 50 if !reflect.DeepEqual([]string(*sv), expected) { 51 t.Fatalf("Expected: %#v, found: %#v", expected, sv) 52 } 53 }