From 4ee15ec604fc94c41834dedd3f78628f1053f367 Mon Sep 17 00:00:00 2001 From: Martin Atkins Date: Sun, 30 Sep 2018 08:12:20 -0700 Subject: [PATCH] core: MockProvider.GetSchema shouldn't panic if unconfigured Some mock objects will not have any mock behavior configured for the GetSchema method, so we should just return a valid-but-empty schema in that case, rather than panicking as we did before. --- terraform/provider_mock.go | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/terraform/provider_mock.go b/terraform/provider_mock.go index b3e138b131..880058ce52 100644 --- a/terraform/provider_mock.go +++ b/terraform/provider_mock.go @@ -102,6 +102,7 @@ type MockProvider struct { func (p *MockProvider) GetSchema() providers.GetSchemaResponse { p.Lock() defer p.Unlock() + p.GetSchemaCalled = true return p.getSchema() } @@ -110,22 +111,22 @@ func (p *MockProvider) getSchema() providers.GetSchemaResponse { // call from other methods of this mock as long as they are already // holding the lock. - p.GetSchemaCalled = true ret := providers.GetSchemaResponse{ - Provider: providers.Schema{ - Block: p.GetSchemaReturn.Provider, - }, + Provider: providers.Schema{}, DataSources: map[string]providers.Schema{}, ResourceTypes: map[string]providers.Schema{}, } - for n, s := range p.GetSchemaReturn.DataSources { - ret.DataSources[n] = providers.Schema{ - Block: s, + if p.GetSchemaReturn != nil { + ret.Provider.Block = p.GetSchemaReturn.Provider + for n, s := range p.GetSchemaReturn.DataSources { + ret.DataSources[n] = providers.Schema{ + Block: s, + } } - } - for n, s := range p.GetSchemaReturn.ResourceTypes { - ret.ResourceTypes[n] = providers.Schema{ - Block: s, + for n, s := range p.GetSchemaReturn.ResourceTypes { + ret.ResourceTypes[n] = providers.Schema{ + Block: s, + } } }