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 }