add a complete tests for builder variables + only/except
This commit is contained in:
parent
8e923977f0
commit
0deaa5d2a5
|
@ -20,6 +20,17 @@ import (
|
||||||
shell_local "github.com/hashicorp/packer/provisioner/shell-local"
|
shell_local "github.com/hashicorp/packer/provisioner/shell-local"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
spaghettiCarbonara = `spaghetti
|
||||||
|
carbonara
|
||||||
|
`
|
||||||
|
lasagna = `lasagna
|
||||||
|
tomato
|
||||||
|
mozza
|
||||||
|
cooking...
|
||||||
|
`
|
||||||
|
)
|
||||||
|
|
||||||
func TestBuild(t *testing.T) {
|
func TestBuild(t *testing.T) {
|
||||||
tc := []struct {
|
tc := []struct {
|
||||||
name string
|
name string
|
||||||
|
@ -232,6 +243,62 @@ func TestBuild(t *testing.T) {
|
||||||
expected: []string{"chocolate.txt", "vanilla.txt"},
|
expected: []string{"chocolate.txt", "vanilla.txt"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// complete
|
||||||
|
{
|
||||||
|
name: "hcl - complete",
|
||||||
|
args: []string{
|
||||||
|
testFixture("hcl", "complete"),
|
||||||
|
},
|
||||||
|
fileCheck: fileCheck{
|
||||||
|
expectedContent: map[string]string{
|
||||||
|
"NULL.spaghetti_carbonara.txt": spaghettiCarbonara,
|
||||||
|
"NULL.lasagna.txt": lasagna,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "hcl - complete - except carbonara",
|
||||||
|
args: []string{
|
||||||
|
"-except", "recipes.null.spaghetti_carbonara",
|
||||||
|
testFixture("hcl", "complete"),
|
||||||
|
},
|
||||||
|
fileCheck: fileCheck{
|
||||||
|
notExpected: []string{"NULL.spaghetti_carbonara.txt"},
|
||||||
|
expectedContent: map[string]string{
|
||||||
|
"NULL.lasagna.txt": lasagna,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "hcl - complete - only lasagna",
|
||||||
|
args: []string{
|
||||||
|
"-only", "*lasagna",
|
||||||
|
testFixture("hcl", "complete"),
|
||||||
|
},
|
||||||
|
fileCheck: fileCheck{
|
||||||
|
notExpected: []string{"NULL.spaghetti_carbonara.txt"},
|
||||||
|
expectedContent: map[string]string{
|
||||||
|
"NULL.lasagna.txt": lasagna,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: "hcl - complete - only recipes",
|
||||||
|
args: []string{
|
||||||
|
"-only", "recipes.*",
|
||||||
|
testFixture("hcl", "complete"),
|
||||||
|
},
|
||||||
|
fileCheck: fileCheck{
|
||||||
|
expectedContent: map[string]string{
|
||||||
|
"NULL.spaghetti_carbonara.txt": spaghettiCarbonara,
|
||||||
|
"NULL.lasagna.txt": lasagna,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tc {
|
for _, tt := range tc {
|
||||||
|
|
|
@ -27,8 +27,10 @@ func outputCommand(t *testing.T, m Meta) (string, string) {
|
||||||
return out.String(), err.String()
|
return out.String(), err.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func testFixture(n string) string {
|
func testFixture(n ...string) string {
|
||||||
return filepath.Join(fixturesDir, n)
|
paths := []string{fixturesDir}
|
||||||
|
paths = append(paths, n...)
|
||||||
|
return filepath.Join(paths...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func testMeta(t *testing.T) Meta {
|
func testMeta(t *testing.T) Meta {
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
|
||||||
|
build {
|
||||||
|
source "source.null.base" {
|
||||||
|
name = "tiramisu"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
build {
|
||||||
|
name = "recipes"
|
||||||
|
source "source.null.base" {
|
||||||
|
name = "spaghetti_carbonara"
|
||||||
|
}
|
||||||
|
source "source.null.base" {
|
||||||
|
name = "lasagna"
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "shell-local" {
|
||||||
|
name = "add_spaghetti"
|
||||||
|
inline = [ "echo spaghetti > ${upper(build.ID)}.${source.name}.txt" ]
|
||||||
|
only = ["null.spaghetti_carbonara"]
|
||||||
|
}
|
||||||
|
|
||||||
|
post-processor "shell-local" {
|
||||||
|
name = "carbonara_it"
|
||||||
|
inline = [ "echo carbonara >> ${upper(build.ID)}.${source.name}.txt" ]
|
||||||
|
except = ["null.lasagna"]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
provisioner "shell-local" {
|
||||||
|
name = "add_lasagna"
|
||||||
|
inline = [ "echo lasagna > ${upper(build.ID)}.${source.name}.txt" ]
|
||||||
|
only = ["null.lasagna"]
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "shell-local" {
|
||||||
|
name = "add_tomato"
|
||||||
|
inline = [ "echo tomato >> ${upper(build.ID)}.${source.name}.txt" ]
|
||||||
|
except = ["null.spaghetti_carbonara"]
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "shell-local" {
|
||||||
|
name = "add_mozza"
|
||||||
|
inline = [ "echo mozza >> ${upper(build.ID)}.${source.name}.txt" ]
|
||||||
|
except = ["null.spaghetti_carbonara"]
|
||||||
|
}
|
||||||
|
|
||||||
|
post-processor "shell-local" {
|
||||||
|
name = "cook"
|
||||||
|
inline = [ "echo 'cooking...' >> ${upper(build.ID)}.${source.name}.txt" ]
|
||||||
|
except = ["null.spaghetti_carbonara"]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
source "null" "base" {
|
||||||
|
communicator = "none"
|
||||||
|
}
|
Loading…
Reference in New Issue