mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-13 09:32:24 -06:00
command: fix panic on show when state file is invalid or unavailable (#31444)
This commit is contained in:
parent
d64e6dfa09
commit
7b4a5513a9
@ -151,7 +151,7 @@ func (c *ShowCommand) showFromLatestStateSnapshot() (*statefile.File, tfdiags.Di
|
||||
// Get the latest state snapshot from the backend for the current workspace
|
||||
stateFile, stateErr := getStateFromBackend(b, workspace)
|
||||
if stateErr != nil {
|
||||
diags = diags.Append(stateErr.Error())
|
||||
diags = diags.Append(stateErr)
|
||||
return nil, diags
|
||||
}
|
||||
|
||||
|
@ -905,6 +905,34 @@ func TestShow_planWithNonDefaultStateLineage(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestShow_corruptStatefile(t *testing.T) {
|
||||
td := t.TempDir()
|
||||
inputDir := "testdata/show-corrupt-statefile"
|
||||
testCopyDir(t, inputDir, td)
|
||||
defer testChdir(t, td)()
|
||||
|
||||
view, done := testView(t)
|
||||
c := &ShowCommand{
|
||||
Meta: Meta{
|
||||
testingOverrides: metaOverridesForProvider(testProvider()),
|
||||
View: view,
|
||||
},
|
||||
}
|
||||
|
||||
code := c.Run([]string{})
|
||||
output := done(t)
|
||||
|
||||
if code != 1 {
|
||||
t.Fatalf("unexpected exit status %d; want 1\ngot: %s", code, output.Stdout())
|
||||
}
|
||||
|
||||
got := output.Stderr()
|
||||
want := `Unsupported state file format`
|
||||
if !strings.Contains(got, want) {
|
||||
t.Errorf("unexpected output\ngot: %s\nwant:\n%s", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
// showFixtureSchema returns a schema suitable for processing the configuration
|
||||
// in testdata/show. This schema should be assigned to a mock provider
|
||||
// named "test".
|
||||
|
1
internal/command/testdata/show-corrupt-statefile/terraform.tfstate
vendored
Normal file
1
internal/command/testdata/show-corrupt-statefile/terraform.tfstate
vendored
Normal file
@ -0,0 +1 @@
|
||||
invalid
|
Loading…
Reference in New Issue
Block a user