github.com/emate/packer@v0.8.1-0.20150625195101-fe0fde195dc6/builder/docker/config_test.go (about)

     1  package docker
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"testing"
     7  )
     8  
     9  func testConfig() map[string]interface{} {
    10  	return map[string]interface{}{
    11  		"export_path": "foo",
    12  		"image":       "bar",
    13  	}
    14  }
    15  
    16  func testConfigStruct(t *testing.T) *Config {
    17  	c, warns, errs := NewConfig(testConfig())
    18  	if len(warns) > 0 {
    19  		t.Fatalf("bad: %#v", len(warns))
    20  	}
    21  	if errs != nil {
    22  		t.Fatalf("bad: %#v", errs)
    23  	}
    24  
    25  	return c
    26  }
    27  
    28  func testConfigErr(t *testing.T, warns []string, err error) {
    29  	if len(warns) > 0 {
    30  		t.Fatalf("bad: %#v", warns)
    31  	}
    32  	if err == nil {
    33  		t.Fatal("should error")
    34  	}
    35  }
    36  
    37  func testConfigOk(t *testing.T, warns []string, err error) {
    38  	if len(warns) > 0 {
    39  		t.Fatalf("bad: %#v", warns)
    40  	}
    41  	if err != nil {
    42  		t.Fatalf("bad: %s", err)
    43  	}
    44  }
    45  
    46  func TestConfigPrepare_exportPath(t *testing.T) {
    47  	td, err := ioutil.TempDir("", "packer")
    48  	if err != nil {
    49  		t.Fatalf("err: %s", err)
    50  	}
    51  	defer os.RemoveAll(td)
    52  
    53  	raw := testConfig()
    54  
    55  	// No export path
    56  	delete(raw, "export_path")
    57  	_, warns, errs := NewConfig(raw)
    58  	testConfigOk(t, warns, errs)
    59  
    60  	// Good export path
    61  	raw["export_path"] = "good"
    62  	_, warns, errs = NewConfig(raw)
    63  	testConfigOk(t, warns, errs)
    64  
    65  	// Bad export path (directory)
    66  	raw["export_path"] = td
    67  	_, warns, errs = NewConfig(raw)
    68  	testConfigErr(t, warns, errs)
    69  }
    70  
    71  func TestConfigPrepare_exportPathAndCommit(t *testing.T) {
    72  	raw := testConfig()
    73  	raw["commit"] = true
    74  
    75  	// No export path
    76  	_, warns, errs := NewConfig(raw)
    77  	testConfigErr(t, warns, errs)
    78  
    79  	// No commit
    80  	raw["commit"] = false
    81  	_, warns, errs = NewConfig(raw)
    82  	testConfigOk(t, warns, errs)
    83  }
    84  
    85  func TestConfigPrepare_image(t *testing.T) {
    86  	raw := testConfig()
    87  
    88  	// No image
    89  	delete(raw, "image")
    90  	_, warns, errs := NewConfig(raw)
    91  	testConfigErr(t, warns, errs)
    92  
    93  	// Good image
    94  	raw["image"] = "path"
    95  	_, warns, errs = NewConfig(raw)
    96  	testConfigOk(t, warns, errs)
    97  }
    98  
    99  func TestConfigPrepare_pull(t *testing.T) {
   100  	raw := testConfig()
   101  
   102  	// No pull set
   103  	delete(raw, "pull")
   104  	c, warns, errs := NewConfig(raw)
   105  	testConfigOk(t, warns, errs)
   106  	if !c.Pull {
   107  		t.Fatal("should pull by default")
   108  	}
   109  
   110  	// Pull set
   111  	raw["pull"] = false
   112  	c, warns, errs = NewConfig(raw)
   113  	testConfigOk(t, warns, errs)
   114  	if c.Pull {
   115  		t.Fatal("should not pull")
   116  	}
   117  }