github.com/rothwerx/packer@v0.9.0/builder/amazon/chroot/builder_test.go (about) 1 package chroot 2 3 import ( 4 "github.com/mitchellh/packer/packer" 5 "testing" 6 ) 7 8 func testConfig() map[string]interface{} { 9 return map[string]interface{}{ 10 "ami_name": "foo", 11 "source_ami": "foo", 12 } 13 } 14 15 func TestBuilder_ImplementsBuilder(t *testing.T) { 16 var raw interface{} 17 raw = &Builder{} 18 if _, ok := raw.(packer.Builder); !ok { 19 t.Fatalf("Builder should be a builder") 20 } 21 } 22 23 func TestBuilderPrepare_AMIName(t *testing.T) { 24 var b Builder 25 config := testConfig() 26 27 // Test good 28 config["ami_name"] = "foo" 29 warnings, err := b.Prepare(config) 30 if len(warnings) > 0 { 31 t.Fatalf("bad: %#v", warnings) 32 } 33 if err != nil { 34 t.Fatalf("should not have error: %s", err) 35 } 36 37 // Test bad 38 config["ami_name"] = "foo {{" 39 b = Builder{} 40 warnings, err = b.Prepare(config) 41 if len(warnings) > 0 { 42 t.Fatalf("bad: %#v", warnings) 43 } 44 if err == nil { 45 t.Fatal("should have error") 46 } 47 48 // Test bad 49 delete(config, "ami_name") 50 b = Builder{} 51 warnings, err = b.Prepare(config) 52 if len(warnings) > 0 { 53 t.Fatalf("bad: %#v", warnings) 54 } 55 if err == nil { 56 t.Fatal("should have error") 57 } 58 } 59 60 func TestBuilderPrepare_ChrootMounts(t *testing.T) { 61 b := &Builder{} 62 config := testConfig() 63 64 config["chroot_mounts"] = nil 65 warnings, err := b.Prepare(config) 66 if len(warnings) > 0 { 67 t.Fatalf("bad: %#v", warnings) 68 } 69 if err != nil { 70 t.Errorf("err: %s", err) 71 } 72 73 config["chroot_mounts"] = [][]string{ 74 []string{"bad"}, 75 } 76 warnings, err = b.Prepare(config) 77 if len(warnings) > 0 { 78 t.Fatalf("bad: %#v", warnings) 79 } 80 if err == nil { 81 t.Fatal("should have error") 82 } 83 } 84 func TestBuilderPrepare_SourceAmi(t *testing.T) { 85 b := &Builder{} 86 config := testConfig() 87 88 config["source_ami"] = "" 89 warnings, err := b.Prepare(config) 90 if len(warnings) > 0 { 91 t.Fatalf("bad: %#v", warnings) 92 } 93 if err == nil { 94 t.Fatal("should have error") 95 } 96 97 config["source_ami"] = "foo" 98 warnings, err = b.Prepare(config) 99 if len(warnings) > 0 { 100 t.Fatalf("bad: %#v", warnings) 101 } 102 if err != nil { 103 t.Errorf("err: %s", err) 104 } 105 } 106 107 func TestBuilderPrepare_CommandWrapper(t *testing.T) { 108 b := &Builder{} 109 config := testConfig() 110 111 config["command_wrapper"] = "echo hi; {{.Command}}" 112 warnings, err := b.Prepare(config) 113 if len(warnings) > 0 { 114 t.Fatalf("bad: %#v", warnings) 115 } 116 if err != nil { 117 t.Errorf("err: %s", err) 118 } 119 }