Skip to content

Commit

Permalink
command: fix panic on show when state file is invalid or unavailable (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
kmoe committed Jul 15, 2022
1 parent d64e6df commit 7b4a551
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
2 changes: 1 addition & 1 deletion internal/command/show.go
Expand Up @@ -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
}

Expand Down
28 changes: 28 additions & 0 deletions internal/command/show_test.go
Expand Up @@ -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".
Expand Down
@@ -0,0 +1 @@
invalid

0 comments on commit 7b4a551

Please sign in to comment.