github.com/tappoz/packer@v1.0.0-rc1/helper/flag-kv/flag_json_test.go (about)

     1  package kvflag
     2  
     3  import (
     4  	"flag"
     5  	"path/filepath"
     6  	"reflect"
     7  	"testing"
     8  )
     9  
    10  func TestFlagJSON_impl(t *testing.T) {
    11  	var _ flag.Value = new(FlagJSON)
    12  }
    13  
    14  func TestFlagJSON(t *testing.T) {
    15  	cases := []struct {
    16  		Input   string
    17  		Initial map[string]string
    18  		Output  map[string]string
    19  		Error   bool
    20  	}{
    21  		{
    22  			"basic.json",
    23  			nil,
    24  			map[string]string{"key": "value"},
    25  			false,
    26  		},
    27  
    28  		{
    29  			"basic.json",
    30  			map[string]string{"foo": "bar"},
    31  			map[string]string{"foo": "bar", "key": "value"},
    32  			false,
    33  		},
    34  
    35  		{
    36  			"basic.json",
    37  			map[string]string{"key": "bar"},
    38  			map[string]string{"key": "value"},
    39  			false,
    40  		},
    41  	}
    42  
    43  	for _, tc := range cases {
    44  		f := new(FlagJSON)
    45  		if tc.Initial != nil {
    46  			f = (*FlagJSON)(&tc.Initial)
    47  		}
    48  
    49  		err := f.Set(filepath.Join("./test-fixtures", tc.Input))
    50  		if (err != nil) != tc.Error {
    51  			t.Fatalf("bad error. Input: %#v\n\n%s", tc.Input, err)
    52  		}
    53  
    54  		actual := map[string]string(*f)
    55  		if !reflect.DeepEqual(actual, tc.Output) {
    56  			t.Fatalf("bad: %#v", actual)
    57  		}
    58  	}
    59  }