packer: overrides work
This commit is contained in:
parent
b9eea82a36
commit
53e77eacea
|
@ -144,8 +144,11 @@ func (c *Core) Build(n string) (Build, error) {
|
||||||
// Get the configuration
|
// Get the configuration
|
||||||
config := make([]interface{}, 1, 2)
|
config := make([]interface{}, 1, 2)
|
||||||
config[0] = rawP.Config
|
config[0] = rawP.Config
|
||||||
|
if rawP.Override != nil {
|
||||||
// TODO override
|
if override, ok := rawP.Override[rawName]; ok {
|
||||||
|
config = append(config, override)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If we're pausing, we wrap the provisioner in a special pauser.
|
// If we're pausing, we wrap the provisioner in a special pauser.
|
||||||
if rawP.PauseBefore > 0 {
|
if rawP.PauseBefore > 0 {
|
||||||
|
|
|
@ -222,6 +222,53 @@ func TestCoreBuild_provSkipInclude(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCoreBuild_provOverride(t *testing.T) {
|
||||||
|
config := TestCoreConfig(t)
|
||||||
|
testCoreTemplate(t, config, fixtureDir("build-prov-override.json"))
|
||||||
|
b := TestBuilder(t, config, "test")
|
||||||
|
p := TestProvisioner(t, config, "test")
|
||||||
|
core := TestCore(t, config)
|
||||||
|
|
||||||
|
b.ArtifactId = "hello"
|
||||||
|
|
||||||
|
build, err := core.Build("test")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := build.Prepare(); err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
artifact, err := build.Run(nil, nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
if len(artifact) != 1 {
|
||||||
|
t.Fatalf("bad: %#v", artifact)
|
||||||
|
}
|
||||||
|
|
||||||
|
if artifact[0].Id() != b.ArtifactId {
|
||||||
|
t.Fatalf("bad: %s", artifact[0].Id())
|
||||||
|
}
|
||||||
|
if !p.ProvCalled {
|
||||||
|
t.Fatal("provisioner not called")
|
||||||
|
}
|
||||||
|
|
||||||
|
found := false
|
||||||
|
for _, raw := range p.PrepConfigs {
|
||||||
|
if m, ok := raw.(map[string]interface{}); ok {
|
||||||
|
if _, ok := m["foo"]; ok {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found {
|
||||||
|
t.Fatal("override not called")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestCoreBuild_postProcess(t *testing.T) {
|
func TestCoreBuild_postProcess(t *testing.T) {
|
||||||
config := TestCoreConfig(t)
|
config := TestCoreConfig(t)
|
||||||
testCoreTemplate(t, config, fixtureDir("build-pp.json"))
|
testCoreTemplate(t, config, fixtureDir("build-pp.json"))
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"builders": [{
|
||||||
|
"type": "test"
|
||||||
|
}],
|
||||||
|
|
||||||
|
"provisioners": [{
|
||||||
|
"type": "test",
|
||||||
|
"override": {
|
||||||
|
"test": {
|
||||||
|
"foo": "bar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
Loading…
Reference in New Issue