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  }