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  }