update schemas type

This commit is contained in:
James Bardin 2023-07-06 09:55:56 -04:00
parent d487ce20e1
commit 4e8dd5866c
4 changed files with 15 additions and 28 deletions

View File

@ -42,28 +42,11 @@ func TestLocal(t *testing.T) *Local {
// TestLocalProvider modifies the ContextOpts of the *Local parameter to
// have a provider with the given name.
func TestLocalProvider(t *testing.T, b *Local, name string, schema *terraform.ProviderSchema) *terraform.MockProvider {
func TestLocalProvider(t *testing.T, b *Local, name string, schema providers.Schemas) *terraform.MockProvider {
// Build a mock resource provider for in-memory operations
p := new(terraform.MockProvider)
if schema == nil {
schema = &terraform.ProviderSchema{} // default schema is empty
}
p.GetProviderSchemaResponse = &providers.GetProviderSchemaResponse{
Provider: providers.Schema{Block: schema.Provider},
ProviderMeta: providers.Schema{Block: schema.ProviderMeta},
ResourceTypes: map[string]providers.Schema{},
DataSources: map[string]providers.Schema{},
}
for name, res := range schema.ResourceTypes {
p.GetProviderSchemaResponse.ResourceTypes[name] = providers.Schema{
Block: res,
Version: int64(schema.ResourceTypeSchemaVersions[name]),
}
}
for name, dat := range schema.DataSources {
p.GetProviderSchemaResponse.DataSources[name] = providers.Schema{Block: dat}
}
p.GetProviderSchemaResponse = &schema
p.PlanResourceChangeFn = func(req providers.PlanResourceChangeRequest) (resp providers.PlanResourceChangeResponse) {
// this is a destroy plan,

View File

@ -37,7 +37,7 @@ import (
// the Analyzer contains caches derived from data in the configuration tree.
type Analyzer struct {
cfg *configs.Config
providerSchemas map[addrs.Provider]*providers.Schemas
providerSchemas map[addrs.Provider]providers.Schemas
}
// NewAnalyzer constructs a new analyzer bound to the given configuration and
@ -48,7 +48,7 @@ type Analyzer struct {
// The given provider schemas must cover at least all of the providers used
// in the given configuration. If not then analysis results will be silently
// incomplete for any decision that requires checking schema.
func NewAnalyzer(cfg *configs.Config, providerSchemas map[addrs.Provider]*providers.Schemas) *Analyzer {
func NewAnalyzer(cfg *configs.Config, providerSchemas map[addrs.Provider]providers.Schemas) *Analyzer {
if !cfg.Path.IsRoot() {
panic(fmt.Sprintf("constructing an Analyzer with non-root module %s", cfg.Path))
}

View File

@ -200,8 +200,8 @@ func (a *Analyzer) metaReferencesResourceInstance(moduleAddr addrs.ModuleInstanc
// available. In invalid cases we might be dealing with partial information,
// and so the schema might be nil so we won't be able to return reference
// information for this particular situation.
providerSchema := a.providerSchemas[rc.Provider]
if providerSchema == nil {
providerSchema, ok := a.providerSchemas[rc.Provider]
if !ok {
return nil
}

View File

@ -86,13 +86,17 @@ func testAnalyzer(t *testing.T, fixtureName string) *Analyzer {
},
},
}
schemas := map[addrs.Provider]*providers.Schemas{
schemas := map[addrs.Provider]providers.Schemas{
addrs.MustParseProviderSourceString("hashicorp/test"): {
ResourceTypes: map[string]*configschema.Block{
"test_thing": resourceTypeSchema,
ResourceTypes: map[string]providers.Schema{
"test_thing": {
Block: resourceTypeSchema,
},
},
DataSources: map[string]*configschema.Block{
"test_thing": resourceTypeSchema,
DataSources: map[string]providers.Schema{
"test_thing": {
Block: resourceTypeSchema,
},
},
},
}