packer-cn/common/extra_iso_config_test.go
Megan Marsh d2dd158fe2 Implement cd_files option. The Addfile code is modified from the floppy_files
tooling. Tested on OSX, `Windows, and Linux. Documented command line dependencies.
Added acceptance tests (behind testacc flag, since there are dependencies).
This option is only implemented for the vmware and hyperv iso builders. It will be
implemented for others in later PRs in order to make review easier.
2020-09-04 12:20:19 -07:00

74 lines
2.0 KiB
Go

package common
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCDPrepare(t *testing.T) {
type testCases struct {
CDConfig CDConfig
ErrExpected bool
Reason string
ExpectedCDFiles []string
}
tcs := []testCases{
{
CDConfig: CDConfig{},
ErrExpected: false,
Reason: "TestNilCD: nil CD array should not fail",
ExpectedCDFiles: []string{},
},
{
CDConfig: CDConfig{CDFiles: make([]string, 0)},
ErrExpected: false,
Reason: "TestEmptyArrayCD: empty CD array should never fail",
ExpectedCDFiles: []string{},
},
{
CDConfig: CDConfig{CDFiles: []string{"extra_iso_config.go"}},
ErrExpected: false,
Reason: "TestExistingCDFile: array with existing CD should not fail",
ExpectedCDFiles: []string{"extra_iso_config.go"},
},
{
CDConfig: CDConfig{CDFiles: []string{"does_not_exist.foo"}},
ErrExpected: true,
Reason: "TestNonExistingCDFile: array with non existing CD should return errors",
ExpectedCDFiles: []string{"does_not_exist.foo"},
},
{
CDConfig: CDConfig{CDFiles: []string{"extra_iso_config*"}},
ErrExpected: false,
Reason: "TestGlobbingCDFile: Glob should work",
ExpectedCDFiles: []string{"extra_iso_config.go", "extra_iso_config_test.go"},
},
}
for _, tc := range tcs {
c := tc.CDConfig
errs := c.Prepare(nil)
if (len(errs) != 0) != tc.ErrExpected {
t.Fatal(tc.Reason)
}
assert.Equal(t, c.CDFiles, tc.ExpectedCDFiles)
}
}
func TestMultiErrorCDFiles(t *testing.T) {
c := CDConfig{
CDFiles: []string{"extra_iso_config.foo", "extra_iso_config.go",
"extra_iso_config.bar", "extra_iso_config_test.go", "extra_iso_config.baz"},
}
errs := c.Prepare(nil)
if len(errs) == 0 {
t.Fatal("array with non existing CD should return errors")
}
expectedErrors := 3
if count := len(errs); count != expectedErrors {
t.Fatalf("array with %v non existing CD should return %v errors but it is returning %v", expectedErrors, expectedErrors, count)
}
}