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  }