modules expansion validate test
This commit is contained in:
parent
73492fd2d5
commit
e23aa02560
|
@ -1518,3 +1518,58 @@ variable "test" {
|
||||||
t.Fatalf("unexpected error\ngot: %s", diags.Err().Error())
|
t.Fatalf("unexpected error\ngot: %s", diags.Err().Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestContext2Validate_expandModules(t *testing.T) {
|
||||||
|
m := testModuleInline(t, map[string]string{
|
||||||
|
"main.tf": `
|
||||||
|
module "mod1" {
|
||||||
|
for_each = toset(["a", "b"])
|
||||||
|
source = "./mod"
|
||||||
|
}
|
||||||
|
|
||||||
|
module "mod2" {
|
||||||
|
for_each = module.mod1
|
||||||
|
source = "./mod"
|
||||||
|
}
|
||||||
|
|
||||||
|
module "mod3" {
|
||||||
|
count = len(module.mod2)
|
||||||
|
source = "./mod"
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
"mod/main.tf": `
|
||||||
|
resource "aws_instance" "foo" {
|
||||||
|
}
|
||||||
|
|
||||||
|
module "nested" {
|
||||||
|
count = 2
|
||||||
|
source = "./nested"
|
||||||
|
input = 2
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
"mod/nested/main.tf": `
|
||||||
|
variable "input" {
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_instance" "foo" {
|
||||||
|
count = var.input
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
})
|
||||||
|
|
||||||
|
p := testProvider("aws")
|
||||||
|
p.DiffFn = testDiffFn
|
||||||
|
ctx := testContext2(t, &ContextOpts{
|
||||||
|
Config: m,
|
||||||
|
ProviderResolver: providers.ResolverFixed(
|
||||||
|
map[addrs.Provider]providers.Factory{
|
||||||
|
addrs.NewLegacyProvider("aws"): testProviderFuncFixed(p),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
})
|
||||||
|
|
||||||
|
diags := ctx.Validate()
|
||||||
|
if diags.HasErrors() {
|
||||||
|
t.Fatal(diags.ErrWithWarnings())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -16,7 +16,10 @@ import (
|
||||||
// This transform must be applied only after all nodes representing objects
|
// This transform must be applied only after all nodes representing objects
|
||||||
// that can be contained within modules have already been added.
|
// that can be contained within modules have already been added.
|
||||||
type ModuleExpansionTransformer struct {
|
type ModuleExpansionTransformer struct {
|
||||||
Config *configs.Config
|
Config *configs.Config
|
||||||
|
|
||||||
|
// Concrete allows injection of a wrapped module node by the graph builder
|
||||||
|
// to alter the evaluation behavior.
|
||||||
Concrete ConcreteModuleNodeFunc
|
Concrete ConcreteModuleNodeFunc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue