github.com/hashicorp/packer@v1.14.3/command/build_timeout_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package command 5 6 import ( 7 "bytes" 8 "path/filepath" 9 "testing" 10 11 packersdk "github.com/hashicorp/packer-plugin-sdk/packer" 12 "github.com/hashicorp/packer/builder/file" 13 "github.com/hashicorp/packer/packer" 14 shell_local "github.com/hashicorp/packer/provisioner/shell-local" 15 "github.com/hashicorp/packer/provisioner/sleep" 16 ) 17 18 // testCoreConfigBuilder creates a packer CoreConfig that has a file builder 19 // available. This allows us to test a builder that writes files to disk. 20 func testCoreConfigSleepBuilder(t *testing.T) *packer.CoreConfig { 21 components := packer.ComponentFinder{ 22 PluginConfig: &packer.PluginConfig{ 23 Builders: packer.MapOfBuilder{ 24 "file": func() (packersdk.Builder, error) { return &file.Builder{}, nil }, 25 }, 26 Provisioners: packer.MapOfProvisioner{ 27 "sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil }, 28 "shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil }, 29 }, 30 }, 31 } 32 return &packer.CoreConfig{ 33 Components: components, 34 } 35 } 36 37 // testMetaFile creates a Meta object that includes a file builder 38 func testMetaSleepFile(t *testing.T) Meta { 39 var out, err bytes.Buffer 40 return Meta{ 41 CoreConfig: testCoreConfigSleepBuilder(t), 42 Ui: &packersdk.BasicUi{ 43 Writer: &out, 44 ErrorWriter: &err, 45 }, 46 } 47 } 48 49 func TestBuildSleepTimeout(t *testing.T) { 50 defer cleanup() 51 52 c := &BuildCommand{ 53 Meta: testMetaSleepFile(t), 54 } 55 56 args := []string{ 57 filepath.Join(testFixture("timeout"), "template.json"), 58 } 59 60 defer cleanup() 61 62 if code := c.Run(args); code == 0 { 63 fatalCommand(t, c.Meta) 64 } 65 66 for _, f := range []string{"roses.txt", "fuchsias.txt", "lilas.txt"} { 67 if !fileExists(f) { 68 t.Errorf("Expected to find %s", f) 69 } 70 } 71 72 for _, f := range []string{"campanules.txt"} { 73 if fileExists(f) { 74 t.Errorf("Expected to not find %s", f) 75 } 76 } 77 }