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  }