| package terraform |
| |
| import ( |
| "github.com/hashicorp/terraform/internal/addrs" |
| "github.com/hashicorp/terraform/internal/configs/configschema" |
| "github.com/hashicorp/terraform/internal/providers" |
| ) |
| |
| func simpleTestSchemas() *Schemas { |
| provider := simpleMockProvider() |
| provisioner := simpleMockProvisioner() |
| |
| return &Schemas{ |
| Providers: map[addrs.Provider]*ProviderSchema{ |
| addrs.NewDefaultProvider("test"): provider.ProviderSchema(), |
| }, |
| Provisioners: map[string]*configschema.Block{ |
| "test": provisioner.GetSchemaResponse.Provisioner, |
| }, |
| } |
| } |
| |
| // schemaOnlyProvidersForTesting is a testing helper that constructs a |
| // plugin library that contains a set of providers that only know how to |
| // return schema, and will exhibit undefined behavior if used for any other |
| // purpose. |
| // |
| // The intended use for this is in testing components that use schemas to |
| // drive other behavior, such as reference analysis during graph construction, |
| // but that don't actually need to interact with providers otherwise. |
| func schemaOnlyProvidersForTesting(schemas map[addrs.Provider]*ProviderSchema) *contextPlugins { |
| factories := make(map[addrs.Provider]providers.Factory, len(schemas)) |
| |
| for providerAddr, schema := range schemas { |
| |
| resp := &providers.GetProviderSchemaResponse{ |
| Provider: providers.Schema{ |
| Block: schema.Provider, |
| }, |
| ResourceTypes: make(map[string]providers.Schema), |
| DataSources: make(map[string]providers.Schema), |
| } |
| for t, tSchema := range schema.ResourceTypes { |
| resp.ResourceTypes[t] = providers.Schema{ |
| Block: tSchema, |
| Version: int64(schema.ResourceTypeSchemaVersions[t]), |
| } |
| } |
| for t, tSchema := range schema.DataSources { |
| resp.DataSources[t] = providers.Schema{ |
| Block: tSchema, |
| } |
| } |
| |
| provider := &MockProvider{ |
| GetProviderSchemaResponse: resp, |
| } |
| |
| factories[providerAddr] = func() (providers.Interface, error) { |
| return provider, nil |
| } |
| } |
| |
| return newContextPlugins(factories, nil) |
| } |