config: add NameRegexp

This commit is contained in:
Mitchell Hashimoto 2014-10-08 15:06:04 -07:00
parent c7088eb82a
commit 50e5eacc15
2 changed files with 25 additions and 0 deletions

View File

@ -4,6 +4,7 @@ package config
import ( import (
"fmt" "fmt"
"regexp"
"strconv" "strconv"
"strings" "strings"
@ -13,6 +14,10 @@ import (
"github.com/mitchellh/reflectwalk" "github.com/mitchellh/reflectwalk"
) )
// NameRegexp is the regular expression that all names (modules, providers,
// resources, etc.) must follow.
var NameRegexp = regexp.MustCompile(`\A[A-Za-z0-9\-\_]+\z`)
// Config is the configuration that comes from loading a collection // Config is the configuration that comes from loading a collection
// of Terraform templates. // of Terraform templates.
type Config struct { type Config struct {

View File

@ -228,6 +228,26 @@ func TestConfigValidate_varModuleInvalid(t *testing.T) {
} }
} }
func TestNameRegexp(t *testing.T) {
cases := []struct{
Input string
Match bool
}{
{"hello", true},
{"foo-bar", true},
{"foo_bar", true},
{"_hello", true},
{"foo bar", false},
{"foo.bar", false},
}
for _, tc := range cases {
if NameRegexp.Match([]byte(tc.Input)) != tc.Match {
t.Fatalf("Input: %s\n\nExpected: %#v", tc.Input, tc.Match)
}
}
}
func TestProviderConfigName(t *testing.T) { func TestProviderConfigName(t *testing.T) {
pcs := []*ProviderConfig{ pcs := []*ProviderConfig{
&ProviderConfig{Name: "aw"}, &ProviderConfig{Name: "aw"},