github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/helper/flags/flag_test.go (about) 1 package flags 2 3 import ( 4 "flag" 5 "reflect" 6 "testing" 7 8 "github.com/hashicorp/nomad/ci" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestStringFlag_implements(t *testing.T) { 13 ci.Parallel(t) 14 15 var raw interface{} 16 raw = new(StringFlag) 17 if _, ok := raw.(flag.Value); !ok { 18 t.Fatalf("StringFlag should be a Value") 19 } 20 } 21 22 func TestStringFlagSet(t *testing.T) { 23 ci.Parallel(t) 24 25 sv := new(StringFlag) 26 err := sv.Set("foo") 27 if err != nil { 28 t.Fatalf("err: %s", err) 29 } 30 31 err = sv.Set("bar") 32 if err != nil { 33 t.Fatalf("err: %s", err) 34 } 35 36 expected := []string{"foo", "bar"} 37 if !reflect.DeepEqual([]string(*sv), expected) { 38 t.Fatalf("Bad: %#v", sv) 39 } 40 } 41 func TestStringFlagSet_Append(t *testing.T) { 42 ci.Parallel(t) 43 44 var ( 45 // A test to make sure StringFlag can replace AppendSliceValue 46 // for autopilot flags inherited from Consul. 47 hosts StringFlag 48 ) 49 50 flagSet := flag.NewFlagSet("test", flag.PanicOnError) 51 flagSet.Var(&hosts, "host", "host, specify more than once") 52 53 args := []string{"-host", "foo", "-host", "bar", "-host", "baz"} 54 err := flagSet.Parse(args) 55 require.NoError(t, err) 56 57 result := hosts.String() 58 require.Equal(t, "foo,bar,baz", result) 59 }