packer: verify only one of 'only' or 'except' specified [GH-438]
This commit is contained in:
parent
1525555468
commit
5f929437d4
|
@ -554,6 +554,11 @@ func (t *TemplateOnlyExcept) Skip(name string) bool {
|
||||||
|
|
||||||
// Validates the only/except parameters.
|
// Validates the only/except parameters.
|
||||||
func (t *TemplateOnlyExcept) Validate(b map[string]RawBuilderConfig) (e []error) {
|
func (t *TemplateOnlyExcept) Validate(b map[string]RawBuilderConfig) (e []error) {
|
||||||
|
if len(t.Only) > 0 && len(t.Except) > 0 {
|
||||||
|
e = append(e,
|
||||||
|
fmt.Errorf("Only one of 'only' or 'except' may be specified."))
|
||||||
|
}
|
||||||
|
|
||||||
if len(t.Only) > 0 {
|
if len(t.Only) > 0 {
|
||||||
for _, n := range t.Only {
|
for _, n := range t.Only {
|
||||||
if _, ok := b[n]; !ok {
|
if _, ok := b[n]; !ok {
|
||||||
|
|
|
@ -690,7 +690,67 @@ func TestTemplate_Build(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTemplateBuild_exeptPPInvalid(t *testing.T) {
|
func TestTemplateBuild_exceptOnlyPP(t *testing.T) {
|
||||||
|
data := `
|
||||||
|
{
|
||||||
|
"builders": [
|
||||||
|
{
|
||||||
|
"name": "test1",
|
||||||
|
"type": "test-builder"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "test2",
|
||||||
|
"type": "test-builder"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
"post-processors": [
|
||||||
|
{
|
||||||
|
"type": "test-pp",
|
||||||
|
"except": ["test1"],
|
||||||
|
"only": ["test1"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
_, err := ParseTemplate([]byte(data))
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("should have error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTemplateBuild_exceptOnlyProv(t *testing.T) {
|
||||||
|
data := `
|
||||||
|
{
|
||||||
|
"builders": [
|
||||||
|
{
|
||||||
|
"name": "test1",
|
||||||
|
"type": "test-builder"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "test2",
|
||||||
|
"type": "test-builder"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
"provisioners": [
|
||||||
|
{
|
||||||
|
"type": "test-prov",
|
||||||
|
"except": ["test1"],
|
||||||
|
"only": ["test1"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
_, err := ParseTemplate([]byte(data))
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("should have error")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestTemplateBuild_exceptPPInvalid(t *testing.T) {
|
||||||
data := `
|
data := `
|
||||||
{
|
{
|
||||||
"builders": [
|
"builders": [
|
||||||
|
|
Loading…
Reference in New Issue