in infra/blueprint-test/pkg/tft/terraform.go [674:707]
func (b *TFBlueprintTest) RedeployTest(n int, nVars map[int]map[string]interface{}) {
if n < 2 {
b.t.Fatalf("n should be 2 or greater but got: %d", n)
}
if b.ShouldSkip() {
b.logger.Logf(b.t, "Skipping test due to config %s", b.BlueprintTestConfig.Path)
b.t.SkipNow()
return
}
a := assert.New(b.t)
// capture currently set vars as default if no override
defaultVars := b.vars
overrideVars := func(i int) {
custom, exists := nVars[i]
if exists {
b.vars = custom
} else {
b.vars = defaultVars
}
}
for i := 1; i <= n; i++ {
ws := terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), fmt.Sprintf("test-%d", i))
overrideVars(i)
utils.RunStage(initStage, func() { b.Init(a) })
defer func(i int) {
overrideVars(i)
terraform.WorkspaceSelectOrNew(b.t, b.GetTFOptions(), ws)
utils.RunStage(teardownStage, func() { b.Teardown(a) })
}(i)
utils.RunStage(planStage, func() { b.Plan(a) })
utils.RunStage(applyStage, func() { b.Apply(a) })
utils.RunStage(verifyStage, func() { b.Verify(a) })
}
}