func()

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) })
	}
}