github.com/adamar/terraform@v0.2.2-0.20141016210445-2e703afdad0e/command/flag_var_test.go (about)

     1  package command
     2  
     3  import (
     4  	"flag"
     5  	"io/ioutil"
     6  	"reflect"
     7  	"testing"
     8  )
     9  
    10  func TestFlagVar_impl(t *testing.T) {
    11  	var _ flag.Value = new(FlagVar)
    12  }
    13  
    14  func TestFlagVar(t *testing.T) {
    15  	cases := []struct {
    16  		Input  string
    17  		Output map[string]string
    18  		Error  bool
    19  	}{
    20  		{
    21  			"key=value",
    22  			map[string]string{"key": "value"},
    23  			false,
    24  		},
    25  
    26  		{
    27  			"key=",
    28  			map[string]string{"key": ""},
    29  			false,
    30  		},
    31  
    32  		{
    33  			"key=foo=bar",
    34  			map[string]string{"key": "foo=bar"},
    35  			false,
    36  		},
    37  
    38  		{
    39  			"key",
    40  			nil,
    41  			true,
    42  		},
    43  	}
    44  
    45  	for _, tc := range cases {
    46  		f := new(FlagVar)
    47  		err := f.Set(tc.Input)
    48  		if (err != nil) != tc.Error {
    49  			t.Fatalf("bad error. Input: %#v", tc.Input)
    50  		}
    51  
    52  		actual := map[string]string(*f)
    53  		if !reflect.DeepEqual(actual, tc.Output) {
    54  			t.Fatalf("bad: %#v", actual)
    55  		}
    56  	}
    57  }
    58  
    59  func TestFlagVarFile_impl(t *testing.T) {
    60  	var _ flag.Value = new(FlagVarFile)
    61  }
    62  
    63  func TestFlagVarFile(t *testing.T) {
    64  	inputLibucl := `
    65  foo = "bar"
    66  `
    67  
    68  	inputJson := `{
    69  		"foo": "bar"}`
    70  
    71  	cases := []struct {
    72  		Input  string
    73  		Output map[string]string
    74  		Error  bool
    75  	}{
    76  		{
    77  			inputLibucl,
    78  			map[string]string{"foo": "bar"},
    79  			false,
    80  		},
    81  
    82  		{
    83  			inputJson,
    84  			map[string]string{"foo": "bar"},
    85  			false,
    86  		},
    87  	}
    88  
    89  	path := testTempFile(t)
    90  
    91  	for _, tc := range cases {
    92  		if err := ioutil.WriteFile(path, []byte(tc.Input), 0644); err != nil {
    93  			t.Fatalf("err: %s", err)
    94  		}
    95  
    96  		f := new(FlagVarFile)
    97  		err := f.Set(path)
    98  		if (err != nil) != tc.Error {
    99  			t.Fatalf("bad error. Input: %#v", tc.Input)
   100  		}
   101  
   102  		actual := map[string]string(*f)
   103  		if !reflect.DeepEqual(actual, tc.Output) {
   104  			t.Fatalf("bad: %#v", actual)
   105  		}
   106  	}
   107  }