Skip to content

Commit

Permalink
config: count can't be a SimpleVariable
Browse files Browse the repository at this point in the history
  • Loading branch information
mitchellh committed Aug 16, 2016
1 parent 5c8c325 commit f4faf22
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 1 deletion.
7 changes: 6 additions & 1 deletion config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -468,10 +468,15 @@ func (c *Config) Validate() error {
"%s: resource count can't reference resource variable: %s",
n,
v.FullKey()))
case *SimpleVariable:
errs = append(errs, fmt.Errorf(
"%s: resource count can't reference variable: %s",
n,
v.FullKey()))
case *UserVariable:
// Good
default:
panic("Unknown type in count var: " + n)
panic(fmt.Sprintf("Unknown type in count var in %s: %T", n, v))
}
}

Expand Down
7 changes: 7 additions & 0 deletions config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,13 @@ func TestConfigValidate_countVarInvalid(t *testing.T) {
}
}

func TestConfigValidate_countVarUnknown(t *testing.T) {
c := testConfig(t, "validate-count-var-unknown")
if err := c.Validate(); err == nil {
t.Fatal("should not be valid")
}
}

func TestConfigValidate_dependsOnVar(t *testing.T) {
c := testConfig(t, "validate-depends-on-var")
if err := c.Validate(); err == nil {
Expand Down
3 changes: 3 additions & 0 deletions config/test-fixtures/validate-count-var-unknown/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
resource "aws_instance" "foo" {
count = "${list}"
}
19 changes: 19 additions & 0 deletions terraform/context_validate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,25 @@ import (
"testing"
)

func TestContext2Validate_badCount(t *testing.T) {
p := testProvider("aws")
m := testModule(t, "validate-bad-count")
c := testContext2(t, &ContextOpts{
Module: m,
Providers: map[string]ResourceProviderFactory{
"aws": testProviderFuncFixed(p),
},
})

w, e := c.Validate()
if len(w) > 0 {
t.Fatalf("bad: %#v", w)
}
if len(e) == 0 {
t.Fatalf("bad: %#v", e)
}
}

func TestContext2Validate_badVar(t *testing.T) {
p := testProvider("aws")
m := testModule(t, "validate-bad-var")
Expand Down
3 changes: 3 additions & 0 deletions terraform/test-fixtures/validate-bad-count/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
resource "aws_instance" "foo" {
count = "${list}"
}

0 comments on commit f4faf22

Please sign in to comment.