packer-cn/common/extra_iso_config_test.go

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)
}
}