mirror of
https://github.com/opentofu/opentofu.git
synced 2025-01-01 11:47:07 -06:00
c8f186b303
The ReferenceTransformer can't do its work here unless our resources have schema attached, since otherwise it doesn't know which attributes to search to find references.
84 lines
1.8 KiB
Go
84 lines
1.8 KiB
Go
package terraform
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/terraform/addrs"
|
|
"github.com/hashicorp/terraform/config/configschema"
|
|
"github.com/zclconf/go-cty/cty"
|
|
)
|
|
|
|
func TestTransitiveReductionTransformer(t *testing.T) {
|
|
mod := testModule(t, "transform-trans-reduce-basic")
|
|
|
|
g := Graph{Path: addrs.RootModuleInstance}
|
|
{
|
|
tf := &ConfigTransformer{Config: mod}
|
|
if err := tf.Transform(&g); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
t.Logf("graph after ConfigTransformer:\n%s", g.String())
|
|
}
|
|
|
|
{
|
|
transform := &AttachResourceConfigTransformer{Config: mod}
|
|
if err := transform.Transform(&g); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
}
|
|
|
|
{
|
|
transform := &AttachSchemaTransformer{
|
|
Components: testProviderComponentFactory(
|
|
"aws",
|
|
mockProviderWithResourceTypeSchema("aws_instance", &configschema.Block{
|
|
Attributes: map[string]*configschema.Attribute{
|
|
"A": {
|
|
Type: cty.String,
|
|
Optional: true,
|
|
},
|
|
"B": {
|
|
Type: cty.String,
|
|
Optional: true,
|
|
},
|
|
},
|
|
}),
|
|
),
|
|
}
|
|
if err := transform.Transform(&g); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
}
|
|
|
|
{
|
|
transform := &ReferenceTransformer{}
|
|
if err := transform.Transform(&g); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
t.Logf("graph after ReferenceTransformer:\n%s", g.String())
|
|
}
|
|
|
|
{
|
|
transform := &TransitiveReductionTransformer{}
|
|
if err := transform.Transform(&g); err != nil {
|
|
t.Fatalf("err: %s", err)
|
|
}
|
|
t.Logf("graph after TransitiveReductionTransformer:\n%s", g.String())
|
|
}
|
|
|
|
actual := strings.TrimSpace(g.String())
|
|
expected := strings.TrimSpace(testTransformTransReduceBasicStr)
|
|
if actual != expected {
|
|
t.Errorf("wrong result\ngot:\n%s\n\nwant:\n%s", actual, expected)
|
|
}
|
|
}
|
|
|
|
const testTransformTransReduceBasicStr = `
|
|
aws_instance.A
|
|
aws_instance.B
|
|
aws_instance.A
|
|
aws_instance.C
|
|
aws_instance.B
|
|
`
|