Merge pull request #11099 from hashicorp/b-root-module

config/module: disallow root modules named "root"
This commit is contained in:
Mitchell Hashimoto 2017-01-09 09:11:10 -08:00 committed by GitHub
commit 7f35b2015c
7 changed files with 29 additions and 0 deletions

View File

@ -0,0 +1 @@
module "root" { source = "./child" }

View File

@ -0,0 +1,3 @@
module "child" {
source = "./child"
}

View File

@ -0,0 +1 @@
# Empty

View File

@ -0,0 +1,3 @@
module "root" {
source = "./child"
}

View File

@ -261,6 +261,14 @@ func (t *Tree) Validate() error {
// If something goes wrong, here is our error template
newErr := &TreeError{Name: []string{t.Name()}}
// Terraform core does not handle root module children named "root".
// We plan to fix this in the future but this bug was brought up in
// the middle of a release and we don't want to introduce wide-sweeping
// changes at that time.
if len(t.path) == 1 && t.name == "root" {
return fmt.Errorf("root module cannot contain module named 'root'")
}
// Validate our configuration first.
if err := t.config.Validate(); err != nil {
newErr.Err = err

View File

@ -288,6 +288,18 @@ func TestTreeValidate_table(t *testing.T) {
"validate-alias-bad",
"alias must be defined",
},
{
"root module named root",
"validate-module-root",
"cannot contain module",
},
{
"grandchild module named root",
"validate-module-root-grandchild",
"",
},
}
for i, tc := range cases {