| package plans |
| |
| import ( |
| "testing" |
| |
| "github.com/go-test/deep" |
| |
| "github.com/hashicorp/terraform/internal/addrs" |
| ) |
| |
| func TestProviderAddrs(t *testing.T) { |
| |
| plan := &Plan{ |
| VariableValues: map[string]DynamicValue{}, |
| Changes: &Changes{ |
| Resources: []*ResourceInstanceChangeSrc{ |
| { |
| Addr: addrs.Resource{ |
| Mode: addrs.ManagedResourceMode, |
| Type: "test_thing", |
| Name: "woot", |
| }.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance), |
| ProviderAddr: addrs.AbsProviderConfig{ |
| Module: addrs.RootModule, |
| Provider: addrs.NewDefaultProvider("test"), |
| }, |
| }, |
| { |
| Addr: addrs.Resource{ |
| Mode: addrs.ManagedResourceMode, |
| Type: "test_thing", |
| Name: "woot", |
| }.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance), |
| DeposedKey: "foodface", |
| ProviderAddr: addrs.AbsProviderConfig{ |
| Module: addrs.RootModule, |
| Provider: addrs.NewDefaultProvider("test"), |
| }, |
| }, |
| { |
| Addr: addrs.Resource{ |
| Mode: addrs.ManagedResourceMode, |
| Type: "test_thing", |
| Name: "what", |
| }.Instance(addrs.IntKey(0)).Absolute(addrs.RootModuleInstance), |
| ProviderAddr: addrs.AbsProviderConfig{ |
| Module: addrs.RootModule.Child("foo"), |
| Provider: addrs.NewDefaultProvider("test"), |
| }, |
| }, |
| }, |
| }, |
| } |
| |
| got := plan.ProviderAddrs() |
| want := []addrs.AbsProviderConfig{ |
| addrs.AbsProviderConfig{ |
| Module: addrs.RootModule.Child("foo"), |
| Provider: addrs.NewDefaultProvider("test"), |
| }, |
| addrs.AbsProviderConfig{ |
| Module: addrs.RootModule, |
| Provider: addrs.NewDefaultProvider("test"), |
| }, |
| } |
| |
| for _, problem := range deep.Equal(got, want) { |
| t.Error(problem) |
| } |
| } |
| |
| // Module outputs should not effect the result of Empty |
| func TestModuleOutputChangesEmpty(t *testing.T) { |
| changes := &Changes{ |
| Outputs: []*OutputChangeSrc{ |
| { |
| Addr: addrs.AbsOutputValue{ |
| Module: addrs.RootModuleInstance.Child("child", addrs.NoKey), |
| OutputValue: addrs.OutputValue{ |
| Name: "output", |
| }, |
| }, |
| ChangeSrc: ChangeSrc{ |
| Action: Update, |
| Before: []byte("a"), |
| After: []byte("b"), |
| }, |
| }, |
| }, |
| } |
| |
| if !changes.Empty() { |
| t.Fatal("plan has no visible changes") |
| } |
| } |