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  }