fix: handle ANSI Terraform empty state

This commit is contained in:
eding 2026-08-23 19:56:10 +02:00
parent e8bcebf65f
commit 476259bc18
2 changed files with 5 additions and 8 deletions

View file

@ -110,13 +110,10 @@ func listTerraformStateResources(terraformDir string, environment []string) ([]s
return strings.Fields(string(state)), nil
}
var ansiEscapeSequence = regexp.MustCompile(`\x1b\[[0-?]*[ -/]*[@-~]`)
func terraformNoStateFile(stderr []byte) bool {
for _, line := range strings.Split(string(stderr), "\n") {
if strings.TrimSpace(line) == "No state file was found!" {
return true
}
}
return false
return strings.Contains(strings.ToLower(ansiEscapeSequence.ReplaceAllString(string(stderr), "")), "no state file")
}
var destroyTalosVMs = func(terraformDir string, environment []string) error {

View file

@ -911,11 +911,11 @@ func TestTerraformPlanPathIsAbsolute(t *testing.T) {
}
}
func TestTerraformStateResourcesAllowsNoStateFile(t *testing.T) {
func TestTerraformStateResourcesAllowsANSINoStateFile(t *testing.T) {
original := runTerraformStateList
t.Cleanup(func() { runTerraformStateList = original })
runTerraformStateList = func(string, []string) ([]byte, []byte, error) {
return nil, []byte("No state file was found!\n"), errors.New("exit status 1")
return nil, []byte("\x1b[31mError:\x1b[0m \x1b[31mNO STATE\x1b[0m FILE was found!\n"), errors.New("exit status 1")
}
resources, err := listTerraformStateResources("terraform", nil)