mirror of
https://github.com/hashicorp/packer.git
synced 2026-09-21 07:21:40 -04:00
As we move on to introduce a DAG into Packer, we are introducing a Scheduler interface, as well as a first implementation of it which replicates the current scheduling algorithm, but centralises all the code related to evaluation and execution of components. This won't pass tests in the current state as only the logic has changed, and tests haven't been updated yet. This will come later in the refactoring process.
83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package packer
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"testing"
|
|
|
|
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
|
|
)
|
|
|
|
func TestCoreConfig(t *testing.T) *CoreConfig {
|
|
// Create some test components
|
|
components := ComponentFinder{
|
|
PluginConfig: &PluginConfig{
|
|
Builders: MapOfBuilder{
|
|
"test": func() (packersdk.Builder, error) { return &packersdk.MockBuilder{}, nil },
|
|
},
|
|
},
|
|
}
|
|
|
|
return &CoreConfig{
|
|
Components: components,
|
|
}
|
|
}
|
|
|
|
func TestCore(t *testing.T, c *CoreConfig) *Core {
|
|
core := NewCore(c)
|
|
err := core.Initialize()
|
|
if err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
|
|
return core
|
|
}
|
|
|
|
func TestUi(t *testing.T) packersdk.Ui {
|
|
var buf bytes.Buffer
|
|
return &packersdk.BasicUi{
|
|
Reader: &buf,
|
|
Writer: ioutil.Discard,
|
|
ErrorWriter: ioutil.Discard,
|
|
}
|
|
}
|
|
|
|
// TestBuilder sets the builder with the name n to the component finder
|
|
// and returns the mock.
|
|
func TestBuilder(t *testing.T, c *CoreConfig, n string) *packersdk.MockBuilder {
|
|
var b packersdk.MockBuilder
|
|
|
|
c.Components.PluginConfig.Builders = MapOfBuilder{
|
|
n: func() (packersdk.Builder, error) { return &b, nil },
|
|
}
|
|
|
|
return &b
|
|
}
|
|
|
|
// TestProvisioner sets the prov. with the name n to the component finder
|
|
// and returns the mock.
|
|
func TestProvisioner(t *testing.T, c *CoreConfig, n string) *packersdk.MockProvisioner {
|
|
var b packersdk.MockProvisioner
|
|
|
|
c.Components.PluginConfig.Provisioners = MapOfProvisioner{
|
|
n: func() (packersdk.Provisioner, error) { return &b, nil },
|
|
}
|
|
|
|
return &b
|
|
}
|
|
|
|
// TestPostProcessor sets the prov. with the name n to the component finder
|
|
// and returns the mock.
|
|
func TestPostProcessor(t *testing.T, c *CoreConfig, n string) *MockPostProcessor {
|
|
var b MockPostProcessor
|
|
|
|
c.Components.PluginConfig.PostProcessors = MapOfPostProcessor{
|
|
n: func() (packersdk.PostProcessor, error) { return &b, nil },
|
|
}
|
|
|
|
return &b
|
|
}
|