diff --git a/command/build_test.go b/command/build_test.go index 418f95724..f5e8d5a74 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -379,23 +379,23 @@ func TestBuildExceptFileCommaFlags(t *testing.T) { name: "JSON: except build and post-processor", args: []string{ "-parallel-builds=1", - "-except=chocolate,vanilla,pear", + "-except=chocolate,vanilla,tomato", filepath.Join(testFixture("build-only"), "template.json"), }, expectedFiles: []string{"apple.txt", "cherry.txt", "peach.txt"}, buildNotExpectedFiles: []string{"chocolate.txt", "vanilla.txt", "tomato.txt", "unnamed.txt"}, - postProcNotExpectedFiles: []string{"pear.txt"}, + postProcNotExpectedFiles: []string{"pear.txt, banana.txt"}, }, { name: "HCL2: except build and post-processor", args: []string{ "-parallel-builds=1", - "-except=file.chocolate,file.vanilla,pear", + "-except=file.chocolate,file.vanilla,tomato", filepath.Join(testFixture("build-only"), "template.pkr.hcl"), }, expectedFiles: []string{"apple.txt", "cherry.txt", "peach.txt"}, buildNotExpectedFiles: []string{"chocolate.txt", "vanilla.txt", "tomato.txt", "unnamed.txt"}, - postProcNotExpectedFiles: []string{"pear.txt"}, + postProcNotExpectedFiles: []string{"pear.txt, banana.txt"}, }, } @@ -637,6 +637,7 @@ func cleanup(moreFiles ...string) { os.RemoveAll("cherry.txt") os.RemoveAll("apple.txt") os.RemoveAll("peach.txt") + os.RemoveAll("banana.txt") os.RemoveAll("pear.txt") os.RemoveAll("tomato.txt") os.RemoveAll("unnamed.txt") diff --git a/command/test-fixtures/build-only/template.json b/command/test-fixtures/build-only/template.json index d00f4e516..03982a1e9 100644 --- a/command/test-fixtures/build-only/template.json +++ b/command/test-fixtures/build-only/template.json @@ -37,6 +37,11 @@ "name": "pear", "type": "shell-local", "inline": [ "echo pear > pear.txt" ] + }, + { + "name": "banana", + "type": "shell-local", + "inline": [ "echo pear > banana.txt" ] } ], [ diff --git a/command/test-fixtures/build-only/template.pkr.hcl b/command/test-fixtures/build-only/template.pkr.hcl index 12ddef71a..408579991 100644 --- a/command/test-fixtures/build-only/template.pkr.hcl +++ b/command/test-fixtures/build-only/template.pkr.hcl @@ -36,6 +36,11 @@ build { inline = [ "echo apple > pear.txt" ] } + post-processor "shell-local" { + name = "banana" + inline = [ "echo apple > banana.txt" ] + } + post-processor "shell-local" { only = ["vanilla"] name = "tomato" diff --git a/command/test-fixtures/validate/validate_except.json b/command/test-fixtures/validate/validate_except.json index 0dcbe1446..74e1f3f98 100644 --- a/command/test-fixtures/validate/validate_except.json +++ b/command/test-fixtures/validate/validate_except.json @@ -1,26 +1,39 @@ { - "builders":[ + "builders": [ { "name": "chocolate", - "type":"file", - "target":"chocolate.txt", - "content":"chocolate" + "type": "file", + "target": "chocolate.txt", + "content": "chocolate" }, { - "type":"file", + "type": "file", "name": "vanilla" } ], "post-processors": [ - { - "name": "apple", - "type": "shell-local", - "inline": [ "echo apple 'hello'" ] - }, - { - "name": "pear", - "type": "shell-local" - } + [ + { + "name": "apple", + "type": "shell-local", + "inline": [ + "echo apple 'apple'" + ] + } + ], + [ + { + "name": "pear", + "type": "shell-local", + "inline": [ + "echo apple 'pear'" + ] + }, + { + "name": "banana", + "type": "shell-local" + } + ] ], - "min_packer_version":"101.0.0" + "min_packer_version": "101.0.0" } diff --git a/command/test-fixtures/validate/validate_except.pkr.hcl b/command/test-fixtures/validate/validate_except.pkr.hcl index 1ffd76dc4..4be7e35c9 100644 --- a/command/test-fixtures/validate/validate_except.pkr.hcl +++ b/command/test-fixtures/validate/validate_except.pkr.hcl @@ -14,10 +14,15 @@ build { post-processor "shell-local" { name = "apple" - inline = [ "echo apple 'hello'" ] + inline = [ "echo apple 'apple'" ] } post-processor "shell-local" { name = "pear" + inline = [ "echo apple 'pear'" ] + } + + post-processor "shell-local" { + name = "banana" } } diff --git a/command/validate_test.go b/command/validate_test.go index 0c14e3e2b..5dfbd97a9 100644 --- a/command/validate_test.go +++ b/command/validate_test.go @@ -144,6 +144,8 @@ func TestValidateCommandExcept(t *testing.T) { for _, tc := range tt { t.Run(tc.name, func(t *testing.T) { + defer cleanup() + tc := tc if code := c.Run(tc.args); code != tc.exitCode { fatalCommand(t, c.Meta) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 9a999a62b..5f1604958 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -262,7 +262,7 @@ func (cfg *PackerConfig) getCoreBuildPostProcessors(source SourceBlock, blocks [ } } if exclude { - continue + break } postProcessor, moreDiags := cfg.startPostProcessor(source, ppb, ectx, generatedVars) diff --git a/packer/core.go b/packer/core.go index 8f60c0b23..1198cc341 100644 --- a/packer/core.go +++ b/packer/core.go @@ -321,7 +321,7 @@ func (c *Core) Build(n string) (Build, error) { } } if foundExcept { - continue + break } // Get the post-processor