Replace static config loading in globalref tests

pull/38226/head
Daniel Schmidt 2 months ago
parent 051310751f
commit ddefbdf5e4

@ -1,7 +1,7 @@
// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1
package globalref
package globalref_test
import (
"sort"
@ -10,17 +10,18 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/hashicorp/terraform/internal/addrs"
"github.com/hashicorp/terraform/internal/lang/globalref"
)
func TestAnalyzerContributingResources(t *testing.T) {
azr := testAnalyzer(t, "contributing-resources")
tests := map[string]struct {
StartRefs func() []Reference
StartRefs func() []globalref.Reference
WantAddrs []string
}{
"root output 'network'": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromOutputValue(
addrs.OutputValue{Name: "network"}.Absolute(addrs.RootModuleInstance),
)
@ -32,7 +33,7 @@ func TestAnalyzerContributingResources(t *testing.T) {
},
},
"root output 'c10s_url'": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromOutputValue(
addrs.OutputValue{Name: "c10s_url"}.Absolute(addrs.RootModuleInstance),
)
@ -51,7 +52,7 @@ func TestAnalyzerContributingResources(t *testing.T) {
},
},
"module.compute.test_thing.load_balancer": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromResourceInstance(
addrs.Resource{
Mode: addrs.ManagedResourceMode,
@ -68,7 +69,7 @@ func TestAnalyzerContributingResources(t *testing.T) {
},
},
"data.test_thing.environment": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromResourceInstance(
addrs.Resource{
Mode: addrs.DataResourceMode,
@ -104,11 +105,11 @@ func TestAnalyzerContributingResourceAttrs(t *testing.T) {
azr := testAnalyzer(t, "contributing-resources")
tests := map[string]struct {
StartRefs func() []Reference
StartRefs func() []globalref.Reference
WantAttrs []string
}{
"root output 'network'": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromOutputValue(
addrs.OutputValue{Name: "network"}.Absolute(addrs.RootModuleInstance),
)
@ -120,7 +121,7 @@ func TestAnalyzerContributingResourceAttrs(t *testing.T) {
},
},
"root output 'c10s_url'": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromOutputValue(
addrs.OutputValue{Name: "c10s_url"}.Absolute(addrs.RootModuleInstance),
)
@ -133,7 +134,7 @@ func TestAnalyzerContributingResourceAttrs(t *testing.T) {
},
},
"module.compute.test_thing.load_balancer": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromResourceInstance(
addrs.Resource{
Mode: addrs.ManagedResourceMode,
@ -150,7 +151,7 @@ func TestAnalyzerContributingResourceAttrs(t *testing.T) {
},
},
"data.test_thing.environment": {
func() []Reference {
func() []globalref.Reference {
return azr.ReferencesFromResourceInstance(
addrs.Resource{
Mode: addrs.DataResourceMode,

@ -1,7 +1,7 @@
// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1
package globalref
package globalref_test
import (
"sort"
@ -9,6 +9,7 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/hashicorp/terraform/internal/addrs"
"github.com/hashicorp/terraform/internal/lang/globalref"
)
func TestAnalyzerMetaReferences(t *testing.T) {
@ -152,7 +153,7 @@ func TestAnalyzerMetaReferences(t *testing.T) {
t.Fatalf("input reference is invalid: %s", diags.Err())
}
ref := Reference{
ref := globalref.Reference{
ContainerAddr: containerAddr,
LocalRef: localRef,
}

@ -1,7 +1,7 @@
// Copyright IBM Corp. 2014, 2026
// SPDX-License-Identifier: BUSL-1.1
package globalref
package globalref_test
import (
"context"
@ -15,11 +15,15 @@ import (
"github.com/hashicorp/terraform/internal/configs/configload"
"github.com/hashicorp/terraform/internal/configs/configschema"
"github.com/hashicorp/terraform/internal/initwd"
"github.com/hashicorp/terraform/internal/lang/globalref"
"github.com/hashicorp/terraform/internal/providers"
"github.com/hashicorp/terraform/internal/registry"
"github.com/hashicorp/terraform/internal/terraform"
)
func testAnalyzer(t *testing.T, fixtureName string) *Analyzer {
// testAnalyzer creates an analyzer for testing by loading a configuration
// and setting up provider schemas.
func testAnalyzer(t *testing.T, fixtureName string) *globalref.Analyzer {
configDir := filepath.Join("testdata", fixtureName)
loader, cleanup := configload.NewLoaderForTests(t)
@ -34,22 +38,19 @@ func testAnalyzer(t *testing.T, fixtureName string) *Analyzer {
t.Fatalf("failed to refresh modules after install: %s", err)
}
// Note: This test uses BuildConfig instead of
// terraform.BuildConfigWithGraph to avoid an import cycle (terraform
// imports the lang package). Since this test only needs basic config
// structure without expression evaluation, the static loader is appropriate.
rootMod, loadDiags := loader.LoadRootModule(configDir)
if loadDiags.HasErrors() {
t.Fatalf("invalid root module: %s", loadDiags.Error())
}
cfg, buildDiags := configs.BuildConfig(
cfg, buildDiags := terraform.BuildConfigWithGraph(
rootMod,
loader.ModuleWalker(),
nil,
configs.MockDataLoaderFunc(loader.LoadExternalMockData),
)
if buildDiags.HasErrors() {
t.Fatalf("invalid configuration: %s", buildDiags.Error())
t.Fatalf("invalid configuration: %s", buildDiags.Err())
}
resourceTypeSchema := &configschema.Block{
@ -83,6 +84,14 @@ func testAnalyzer(t *testing.T, fixtureName string) *Analyzer {
},
},
},
"list_dynamic": {
Nesting: configschema.NestingList,
Block: configschema.Block{
Attributes: map[string]*configschema.Attribute{
"z": {Type: cty.DynamicPseudoType, Optional: true},
},
},
},
"map": {
Nesting: configschema.NestingMap,
Block: configschema.Block{
@ -101,6 +110,13 @@ func testAnalyzer(t *testing.T, fixtureName string) *Analyzer {
},
},
}
dataSourceTypeSchema := &configschema.Block{
Attributes: map[string]*configschema.Attribute{
"string": {Type: cty.String, Optional: true},
"number": {Type: cty.Number, Optional: true},
"any": {Type: cty.DynamicPseudoType, Optional: true},
},
}
schemas := map[addrs.Provider]providers.ProviderSchema{
addrs.MustParseProviderSourceString("hashicorp/test"): {
ResourceTypes: map[string]providers.Schema{
@ -110,11 +126,10 @@ func testAnalyzer(t *testing.T, fixtureName string) *Analyzer {
},
DataSources: map[string]providers.Schema{
"test_thing": {
Body: resourceTypeSchema,
Body: dataSourceTypeSchema,
},
},
},
}
return NewAnalyzer(cfg, schemas)
return globalref.NewAnalyzer(cfg, schemas)
}
Loading…
Cancel
Save