diff --git a/.changes/v1.13/BUG FIXES-20251009-144645.yaml b/.changes/v1.13/BUG FIXES-20251009-144645.yaml new file mode 100644 index 0000000000..2f96fe0e9c --- /dev/null +++ b/.changes/v1.13/BUG FIXES-20251009-144645.yaml @@ -0,0 +1,5 @@ +kind: BUG FIXES +body: Fix crash when showing a cloud plan without having a cloud backend +time: 2025-10-09T14:46:45.59398+02:00 +custom: + Issue: "37751" diff --git a/internal/cloud/backend.go b/internal/cloud/backend.go index 52a2e61c67..35d1620902 100644 --- a/internal/cloud/backend.go +++ b/internal/cloud/backend.go @@ -437,7 +437,7 @@ func (b *Cloud) Configure(obj cty.Value) tfdiags.Diagnostics { } func (b *Cloud) AppName() string { - if isValidAppName(b.appName) { + if b != nil && isValidAppName(b.appName) { return b.appName } return "HCP Terraform" diff --git a/internal/cloud/backend_test.go b/internal/cloud/backend_test.go index f1bedd83fc..a838ad852a 100644 --- a/internal/cloud/backend_test.go +++ b/internal/cloud/backend_test.go @@ -1705,3 +1705,15 @@ func TestCloud_ServiceDiscoveryAliases(t *testing.T) { t.Fatalf("expected 1 alias but got %d", len(aliases)) } } + +// When a user tries to view a cloud plan without having a cloud backend in their +// configuration, a call to AppName() would fail with a nil pointer exception +// See: https://github.com/hashicorp/terraform/issues/37748 +func TestCloud_AppName_with_nil(t *testing.T) { + var backend *Cloud = nil + + name := backend.AppName() + if name != "HCP Terraform" { + t.Fatalf("expected name to be HCP Terraform, got %q", name) + } +}