From bcc089282e26a7f1cb3a8b89a968a2562143f3e9 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Thu, 2 Jun 2022 09:10:52 -0400 Subject: [PATCH] fixup broken test fixtures some of the minimal test provider implementations didn't check for null values. --- internal/backend/local/testing.go | 9 ++++++++- internal/command/show_test.go | 9 ++++++++- internal/moduletest/provider.go | 9 ++++++++- internal/provider-simple-v6/provider.go | 7 +++++++ internal/provider-simple/provider.go | 7 +++++++ 5 files changed, 38 insertions(+), 3 deletions(-) diff --git a/internal/backend/local/testing.go b/internal/backend/local/testing.go index d4fe51d9736f..3b9a3c40fbb0 100644 --- a/internal/backend/local/testing.go +++ b/internal/backend/local/testing.go @@ -62,7 +62,14 @@ func TestLocalProvider(t *testing.T, b *Local, name string, schema *terraform.Pr p.GetProviderSchemaResponse.DataSources[name] = providers.Schema{Block: dat} } - p.PlanResourceChangeFn = func(req providers.PlanResourceChangeRequest) providers.PlanResourceChangeResponse { + p.PlanResourceChangeFn = func(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) { + // this is a destroy plan, + if req.ProposedNewState.IsNull() { + resp.PlannedState = req.ProposedNewState + resp.PlannedPrivate = req.PriorPrivate + return resp + } + rSchema, _ := schema.SchemaForResourceType(addrs.ManagedResourceMode, req.TypeName) if rSchema == nil { rSchema = &configschema.Block{} // default schema is empty diff --git a/internal/command/show_test.go b/internal/command/show_test.go index 25acbac2906c..e2cc2a879cba 100644 --- a/internal/command/show_test.go +++ b/internal/command/show_test.go @@ -978,7 +978,14 @@ func showFixtureProvider() *terraform.MockProvider { Private: req.Private, } } - p.PlanResourceChangeFn = func(req providers.PlanResourceChangeRequest) providers.PlanResourceChangeResponse { + p.PlanResourceChangeFn = func(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) { + // this is a destroy plan, + if req.ProposedNewState.IsNull() { + resp.PlannedState = req.ProposedNewState + resp.PlannedPrivate = req.PriorPrivate + return resp + } + idVal := req.ProposedNewState.GetAttr("id") amiVal := req.ProposedNewState.GetAttr("ami") if idVal.IsNull() { diff --git a/internal/moduletest/provider.go b/internal/moduletest/provider.go index d27a07ae27a5..52601d9d280f 100644 --- a/internal/moduletest/provider.go +++ b/internal/moduletest/provider.go @@ -240,9 +240,16 @@ func (p *Provider) UpgradeResourceState(req providers.UpgradeResourceStateReques // PlanResourceChange takes the current state and proposed state of a // resource, and returns the planned final state. -func (p *Provider) PlanResourceChange(req providers.PlanResourceChangeRequest) providers.PlanResourceChangeResponse { +func (p *Provider) PlanResourceChange(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) { log.Print("[TRACE] moduletest.Provider: PlanResourceChange") + // this is a destroy plan, + if req.ProposedNewState.IsNull() { + resp.PlannedState = req.ProposedNewState + resp.PlannedPrivate = req.PriorPrivate + return resp + } + var res providers.PlanResourceChangeResponse if req.TypeName != "test_assertions" { // we only have one resource type res.Diagnostics = res.Diagnostics.Append(fmt.Errorf("unsupported resource type %s", req.TypeName)) diff --git a/internal/provider-simple-v6/provider.go b/internal/provider-simple-v6/provider.go index 74fce935386a..e8768099e545 100644 --- a/internal/provider-simple-v6/provider.go +++ b/internal/provider-simple-v6/provider.go @@ -85,6 +85,13 @@ func (s simple) ReadResource(req providers.ReadResourceRequest) (resp providers. } func (s simple) PlanResourceChange(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) { + if req.ProposedNewState.IsNull() { + // destroy op + resp.PlannedState = req.ProposedNewState + resp.PlannedPrivate = req.PriorPrivate + return resp + } + m := req.ProposedNewState.AsValueMap() _, ok := m["id"] if !ok { diff --git a/internal/provider-simple/provider.go b/internal/provider-simple/provider.go index 74fce935386a..e8768099e545 100644 --- a/internal/provider-simple/provider.go +++ b/internal/provider-simple/provider.go @@ -85,6 +85,13 @@ func (s simple) ReadResource(req providers.ReadResourceRequest) (resp providers. } func (s simple) PlanResourceChange(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) { + if req.ProposedNewState.IsNull() { + // destroy op + resp.PlannedState = req.ProposedNewState + resp.PlannedPrivate = req.PriorPrivate + return resp + } + m := req.ProposedNewState.AsValueMap() _, ok := m["id"] if !ok {