github.com/hashicorp/packer@v1.14.3/packer/testing.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package packer 5 6 import ( 7 "bytes" 8 "io" 9 "testing" 10 11 packersdk "github.com/hashicorp/packer-plugin-sdk/packer" 12 ) 13 14 func TestCoreConfig(t *testing.T) *CoreConfig { 15 // Create some test components 16 components := ComponentFinder{ 17 PluginConfig: &PluginConfig{ 18 Builders: MapOfBuilder{ 19 "test": func() (packersdk.Builder, error) { return &packersdk.MockBuilder{}, nil }, 20 }, 21 }, 22 } 23 24 return &CoreConfig{ 25 Components: components, 26 } 27 } 28 29 func TestCore(t *testing.T, c *CoreConfig) *Core { 30 core := NewCore(c) 31 err := core.Initialize(InitializeOptions{}) 32 if err != nil { 33 t.Fatalf("err: %s", err) 34 } 35 36 return core 37 } 38 39 func TestUi(t *testing.T) packersdk.Ui { 40 var buf bytes.Buffer 41 return &packersdk.BasicUi{ 42 Reader: &buf, 43 Writer: io.Discard, 44 ErrorWriter: io.Discard, 45 } 46 } 47 48 // TestBuilder sets the builder with the name n to the component finder 49 // and returns the mock. 50 func TestBuilder(t *testing.T, c *CoreConfig, n string) *packersdk.MockBuilder { 51 var b packersdk.MockBuilder 52 53 c.Components.PluginConfig.Builders = MapOfBuilder{ 54 n: func() (packersdk.Builder, error) { return &b, nil }, 55 } 56 57 return &b 58 } 59 60 // TestProvisioner sets the prov. with the name n to the component finder 61 // and returns the mock. 62 func TestProvisioner(t *testing.T, c *CoreConfig, n string) *packersdk.MockProvisioner { 63 var b packersdk.MockProvisioner 64 65 c.Components.PluginConfig.Provisioners = MapOfProvisioner{ 66 n: func() (packersdk.Provisioner, error) { return &b, nil }, 67 } 68 69 return &b 70 } 71 72 // TestPostProcessor sets the prov. with the name n to the component finder 73 // and returns the mock. 74 func TestPostProcessor(t *testing.T, c *CoreConfig, n string) *MockPostProcessor { 75 var b MockPostProcessor 76 77 c.Components.PluginConfig.PostProcessors = MapOfPostProcessor{ 78 n: func() (packersdk.PostProcessor, error) { return &b, nil }, 79 } 80 81 return &b 82 }