diff --git a/backend/remote/backend.go b/backend/remote/backend.go index c79ff32e8c..b14bb2d250 100644 --- a/backend/remote/backend.go +++ b/backend/remote/backend.go @@ -888,6 +888,13 @@ func (b *Remote) VerifyWorkspaceTerraformVersion(workspaceName string) tfdiags.D workspace, err := b.getRemoteWorkspace(context.Background(), workspaceName) if err != nil { + // If the workspace doesn't exist, there can be no compatibility + // problem, so we can return. This is most likely to happen when + // migrating state from a local backend to a new workspace. + if err == tfe.ErrResourceNotFound { + return nil + } + diags = diags.Append(tfdiags.Sourceless( tfdiags.Error, "Error looking up workspace", diff --git a/backend/remote/backend_test.go b/backend/remote/backend_test.go index 0155ba590c..051d564104 100644 --- a/backend/remote/backend_test.go +++ b/backend/remote/backend_test.go @@ -629,8 +629,15 @@ func TestRemote_VerifyWorkspaceTerraformVersion_workspaceErrors(t *testing.T) { defer bCleanup() // Attempting to check the version against a workspace which doesn't exist - // should fail + // should result in no errors diags := b.VerifyWorkspaceTerraformVersion("invalid-workspace") + if len(diags) != 0 { + t.Fatalf("unexpected error: %s", diags.Err()) + } + + // Use a special workspace ID to trigger a 500 error, which should result + // in a failed check + diags = b.VerifyWorkspaceTerraformVersion("network-error") if len(diags) != 1 { t.Fatal("expected diag, but none returned") }