terraform: semantic check that variables are set on the correct types

pull/31/head
Mitchell Hashimoto 12 years ago
parent 935fa1d6fb
commit b9f49b2f60

@ -11,6 +11,11 @@ import (
func smcUserVariables(c *config.Config, vs map[string]string) []error {
var errs []error
cvs := make(map[string]*config.Variable)
for _, v := range c.Variables {
cvs[v.Name] = v
}
// Check that all required variables are present
required := make(map[string]struct{})
for _, v := range c.Variables {
@ -28,6 +33,20 @@ func smcUserVariables(c *config.Config, vs map[string]string) []error {
}
}
// Check that types match up
for k, _ := range vs {
v, ok := cvs[k]
if !ok {
continue
}
if v.Type() != config.VariableTypeString {
errs = append(errs, fmt.Errorf(
"%s: cannot assign string value to map type",
k))
}
}
// TODO(mitchellh): variables that are unknown
return errs

@ -27,4 +27,14 @@ func TestSMCUserVariables(t *testing.T) {
if len(errs) != 0 {
t.Fatalf("err: %#v", errs)
}
// Mapping complete override
errs = smcUserVariables(c, map[string]string{
"foo": "bar",
"map": "baz",
})
if len(errs) == 0 {
t.Fatal("should have errors")
}
}

Loading…
Cancel
Save