diff --git a/command/meta_backend.go b/command/meta_backend.go index 5ce527dbc5..f519ebcec2 100644 --- a/command/meta_backend.go +++ b/command/meta_backend.go @@ -171,6 +171,7 @@ func (m *Meta) BackendForPlan(settings plans.Backend) (backend.Enhanced, tfdiags return nil, diags } b := f() + log.Printf("[TRACE] Meta.BackendForPlan: instantiated backend of type %T", b) schema := b.ConfigSchema() configVal, err := settings.Config.Decode(schema.ImpliedType()) @@ -204,11 +205,13 @@ func (m *Meta) BackendForPlan(settings plans.Backend) (backend.Enhanced, tfdiags // If the result of loading the backend is an enhanced backend, // then return that as-is. This works even if b == nil (it will be !ok). if enhanced, ok := b.(backend.Enhanced); ok { + log.Printf("[TRACE] Meta.BackendForPlan: backend %T supports operations", b) return enhanced, nil } // Otherwise, we'll wrap our state-only remote backend in the local backend // to cause any operations to be run locally. + log.Printf("[TRACE] Meta.Backend: backend %T does not support operations, so wrapping it in a local backend", b) cliOpts := m.backendCLIOpts() cliOpts.Validation = false // don't validate here in case config contains file(...) calls where the file doesn't exist local := backendLocal.NewWithBackend(b) diff --git a/command/meta_backend_test.go b/command/meta_backend_test.go index d837eaff94..2adfbabb62 100644 --- a/command/meta_backend_test.go +++ b/command/meta_backend_test.go @@ -1549,7 +1549,7 @@ func TestMetaBackend_planLocalStatePath(t *testing.T) { if err != nil { t.Fatal(err) } - backendConfig := plans.Backend{ + plannedBackend := plans.Backend{ Type: "local", Config: backendConfigRaw, Workspace: "default", @@ -1569,7 +1569,7 @@ func TestMetaBackend_planLocalStatePath(t *testing.T) { m.stateOutPath = statePath // Get the backend - b, diags := m.BackendForPlan(backendConfig) + b, diags := m.BackendForPlan(plannedBackend) if diags.HasErrors() { t.Fatal(diags.Err()) } @@ -1583,10 +1583,9 @@ func TestMetaBackend_planLocalStatePath(t *testing.T) { t.Fatalf("unexpected error: %s", err) } state := s.State() - if state == nil { - t.Fatal("state is nil") + if state != nil { + t.Fatal("default workspace state is not nil, but should be because we've not put anything there") } - assertStateHasMarker(t, state, mark) // Verify the default path doesn't exist if _, err := os.Stat(DefaultStateFilename); err == nil {