github.com/jerryclinesmith/packer@v0.3.7/common/command/build_flags_test.go (about)

     1  package command
     2  
     3  import (
     4  	"flag"
     5  	"reflect"
     6  	"testing"
     7  )
     8  
     9  func TestBuildOptionFlags(t *testing.T) {
    10  	opts := new(BuildOptions)
    11  	fs := flag.NewFlagSet("test", flag.ContinueOnError)
    12  	BuildOptionFlags(fs, opts)
    13  
    14  	args := []string{
    15  		"-except=foo,bar,baz",
    16  		"-only=a,b",
    17  		"-var=foo=bar",
    18  		"-var", "bar=baz",
    19  		"-var=foo=bang",
    20  		"-var-file=foo",
    21  		"-var-file=bar",
    22  	}
    23  
    24  	err := fs.Parse(args)
    25  	if err != nil {
    26  		t.Fatalf("err: %s", err)
    27  	}
    28  
    29  	expected := []string{"foo", "bar", "baz"}
    30  	if !reflect.DeepEqual(opts.Except, expected) {
    31  		t.Fatalf("bad: %#v", opts.Except)
    32  	}
    33  
    34  	expected = []string{"a", "b"}
    35  	if !reflect.DeepEqual(opts.Only, expected) {
    36  		t.Fatalf("bad: %#v", opts.Only)
    37  	}
    38  
    39  	if len(opts.UserVars) != 2 {
    40  		t.Fatalf("bad: %#v", opts.UserVars)
    41  	}
    42  
    43  	if opts.UserVars["foo"] != "bang" {
    44  		t.Fatalf("bad: %#v", opts.UserVars)
    45  	}
    46  
    47  	if opts.UserVars["bar"] != "baz" {
    48  		t.Fatalf("bad: %#v", opts.UserVars)
    49  	}
    50  
    51  	expected = []string{"foo", "bar"}
    52  	if !reflect.DeepEqual(opts.UserVarFiles, expected) {
    53  		t.Fatalf("bad: %#v", opts.UserVarFiles)
    54  	}
    55  }
    56  
    57  func TestUserVarValue_implements(t *testing.T) {
    58  	var raw interface{}
    59  	raw = new(userVarValue)
    60  	if _, ok := raw.(flag.Value); !ok {
    61  		t.Fatalf("userVarValue should be a Value")
    62  	}
    63  }
    64  
    65  func TestUserVarValueSet(t *testing.T) {
    66  	sv := new(userVarValue)
    67  	err := sv.Set("key=value")
    68  	if err != nil {
    69  		t.Fatalf("err: %s", err)
    70  	}
    71  
    72  	vars := map[string]string(*sv)
    73  	if vars["key"] != "value" {
    74  		t.Fatalf("Bad: %#v", vars)
    75  	}
    76  
    77  	// Empty value
    78  	err = sv.Set("key=")
    79  	if err != nil {
    80  		t.Fatalf("err: %s", err)
    81  	}
    82  
    83  	vars = map[string]string(*sv)
    84  	if vars["key"] != "" {
    85  		t.Fatalf("Bad: %#v", vars)
    86  	}
    87  
    88  	// Equal in value
    89  	err = sv.Set("key=foo=bar")
    90  	if err != nil {
    91  		t.Fatalf("err: %s", err)
    92  	}
    93  
    94  	vars = map[string]string(*sv)
    95  	if vars["key"] != "foo=bar" {
    96  		t.Fatalf("Bad: %#v", vars)
    97  	}
    98  
    99  	// No equal
   100  	err = sv.Set("key")
   101  	if err == nil {
   102  		t.Fatal("should have error")
   103  	}
   104  }