/cc @andytson - Wanted to CC you in here so you could see some changes I made. First, I changed commit to opt-in, so you set "commit": true to get commit behavior. This simplifies the logic a bit. Then, I removed the skipping for StepExport and StepCommit and put that into the Builder itself. This simplifies those steps (limits abstraction leakage). Otherwise, everything looks great!
105 lines
1.9 KiB
Go
105 lines
1.9 KiB
Go
package docker
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func testConfig() map[string]interface{} {
|
|
return map[string]interface{}{
|
|
"export_path": "foo",
|
|
"image": "bar",
|
|
}
|
|
}
|
|
|
|
func testConfigStruct(t *testing.T) *Config {
|
|
c, warns, errs := NewConfig(testConfig())
|
|
if len(warns) > 0 {
|
|
t.Fatalf("bad: %#v", len(warns))
|
|
}
|
|
if errs != nil {
|
|
t.Fatalf("bad: %#v", errs)
|
|
}
|
|
|
|
return c
|
|
}
|
|
|
|
func testConfigErr(t *testing.T, warns []string, err error) {
|
|
if len(warns) > 0 {
|
|
t.Fatalf("bad: %#v", warns)
|
|
}
|
|
if err == nil {
|
|
t.Fatal("should error")
|
|
}
|
|
}
|
|
|
|
func testConfigOk(t *testing.T, warns []string, err error) {
|
|
if len(warns) > 0 {
|
|
t.Fatalf("bad: %#v", warns)
|
|
}
|
|
if err != nil {
|
|
t.Fatalf("bad: %s", err)
|
|
}
|
|
}
|
|
|
|
func TestConfigPrepare_exportPath(t *testing.T) {
|
|
raw := testConfig()
|
|
|
|
// No export path
|
|
delete(raw, "export_path")
|
|
_, warns, errs := NewConfig(raw)
|
|
testConfigOk(t, warns, errs)
|
|
|
|
// Good export path
|
|
raw["export_path"] = "good"
|
|
_, warns, errs = NewConfig(raw)
|
|
testConfigOk(t, warns, errs)
|
|
}
|
|
|
|
func TestConfigPrepare_exportPathAndCommit(t *testing.T) {
|
|
raw := testConfig()
|
|
raw["commit"] = true
|
|
|
|
// No export path
|
|
_, warns, errs := NewConfig(raw)
|
|
testConfigErr(t, warns, errs)
|
|
|
|
// No commit
|
|
raw["commit"] = false
|
|
_, warns, errs = NewConfig(raw)
|
|
testConfigOk(t, warns, errs)
|
|
}
|
|
|
|
func TestConfigPrepare_image(t *testing.T) {
|
|
raw := testConfig()
|
|
|
|
// No image
|
|
delete(raw, "image")
|
|
_, warns, errs := NewConfig(raw)
|
|
testConfigErr(t, warns, errs)
|
|
|
|
// Good image
|
|
raw["image"] = "path"
|
|
_, warns, errs = NewConfig(raw)
|
|
testConfigOk(t, warns, errs)
|
|
}
|
|
|
|
func TestConfigPrepare_pull(t *testing.T) {
|
|
raw := testConfig()
|
|
|
|
// No pull set
|
|
delete(raw, "pull")
|
|
c, warns, errs := NewConfig(raw)
|
|
testConfigOk(t, warns, errs)
|
|
if !c.Pull {
|
|
t.Fatal("should pull by default")
|
|
}
|
|
|
|
// Pull set
|
|
raw["pull"] = false
|
|
c, warns, errs = NewConfig(raw)
|
|
testConfigOk(t, warns, errs)
|
|
if c.Pull {
|
|
t.Fatal("should not pull")
|
|
}
|
|
}
|