adding tests
This commit is contained in:
parent
063dd5c133
commit
52f03de0f0
|
@ -463,37 +463,15 @@ func TestCoreValidate(t *testing.T) {
|
|||
Vars map[string]string
|
||||
Err bool
|
||||
}{
|
||||
{
|
||||
"validate-dup-builder.json",
|
||||
nil,
|
||||
true,
|
||||
},
|
||||
{"validate-dup-builder.json", nil, true},
|
||||
|
||||
// Required variable not set
|
||||
{
|
||||
"validate-req-variable.json",
|
||||
nil,
|
||||
true,
|
||||
},
|
||||
|
||||
{
|
||||
"validate-req-variable.json",
|
||||
map[string]string{"foo": "bar"},
|
||||
false,
|
||||
},
|
||||
{"validate-req-variable.json", nil, true},
|
||||
{"validate-req-variable.json", map[string]string{"foo": "bar"}, false},
|
||||
|
||||
// Min version good
|
||||
{
|
||||
"validate-min-version.json",
|
||||
map[string]string{"foo": "bar"},
|
||||
false,
|
||||
},
|
||||
|
||||
{
|
||||
"validate-min-version-high.json",
|
||||
map[string]string{"foo": "bar"},
|
||||
true,
|
||||
},
|
||||
{"validate-min-version.json", map[string]string{"foo": "bar"}, false},
|
||||
{"validate-min-version-high.json", map[string]string{"foo": "bar"}, true},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
|
@ -700,6 +678,68 @@ func TestSensitiveVars(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// Normally I wouldn't test a little helper function, but it's regex.
|
||||
func testisDoneInterpolating(t *testing.T) {
|
||||
cases := []struct {
|
||||
inputString string
|
||||
expectedBool bool
|
||||
expectedErr bool
|
||||
}{
|
||||
// Many of these tests are just exercising the regex to make sure it
|
||||
// doesnt get confused by different kinds of whitespace
|
||||
{"charmander-{{ user `spacesaroundticks` }}", false, false},
|
||||
{"pidgey-{{ user `partyparrot`}}", false, false},
|
||||
{"jigglypuff-{{ user`notickspaaces`}}", false, false},
|
||||
{"eevee-{{user`nospaces`}}", false, false},
|
||||
{"staryu-{{ user `somanyspaces` }}", false, false},
|
||||
{"{{ user `somanyspaces` }}-{{isotime}}", false, false},
|
||||
// Make sure that we only flag on "user" when it's in the right set of
|
||||
// brackets, in a properly declared template engine format
|
||||
{"missingno-{{ user `missingbracket` }", true, false},
|
||||
{"missing2-{user ``missingopenbrackets }}", true, false},
|
||||
{"wat-userjustinname", true, false},
|
||||
// Any functions that aren't "user" should have already been properly
|
||||
// interpolated by the time this is called, so these cases aren't
|
||||
// realistic. That said, this makes it clear that this function doesn't
|
||||
// care about anything but the user function
|
||||
{"pokemon-{{ isotime }}", true, false},
|
||||
{"squirtle-{{ env `water`}}", true, false},
|
||||
{"bulbasaur-notinterpolated", true, false},
|
||||
{"extra-{{thisfunc `user`}}", true, false},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
done, err := isDoneInterpolating(tc.inputString)
|
||||
if (err != nil) != tc.expectedErr {
|
||||
t.Fatalf("Test case failed. Error: %s expected error: "+
|
||||
"%t test string: %s", err, tc.expectedErr, tc.inputString)
|
||||
}
|
||||
if done != tc.expectedBool {
|
||||
t.Fatalf("Test case failed. inputString: %s. "+
|
||||
"Expected done = %t but got done = %t", tc.inputString,
|
||||
tc.expectedBool, done)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// func testCoreBuildWithInterpolatedEnvVars(t *testing.T) {
|
||||
// // Not a fan of using env vars in tests but in this case we need to make
|
||||
// // sure they get interpolated properly.
|
||||
// os.Setenv("CI_COMMIT_REF_NAME", "working")
|
||||
// os.Setenv("OUTPUT_DIR", "/u01/artifacts")
|
||||
// os.Setenv("OS_VERSION", "6")
|
||||
// os.Setenv("OS", "rhel")
|
||||
// os.Setenv("BASE_POSTFIX", "base")
|
||||
// os.Setenv("RULE", "vbox")
|
||||
// os.Setenv("POSTFIX", "base")
|
||||
|
||||
// packer build \
|
||||
// -var-file=common/vsphere.variables.json \
|
||||
// -var-file=common/variables.json \
|
||||
// -only=vbox-rhel-base \
|
||||
// common/linux/redhat/template.json
|
||||
|
||||
// }
|
||||
|
||||
func testCoreTemplate(t *testing.T, c *CoreConfig, p string) {
|
||||
tpl, err := template.ParseFile(p)
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in New Issue