Missing ConfigResource checks in TargetContains
Adding some missing checks for ConfigResource, and check all combinations of Resource types for consistency.
This commit is contained in:
parent
e3ad9ffb77
commit
e6bac359ed
|
@ -73,6 +73,9 @@ func (m Module) TargetContains(other Targetable) bool {
|
||||||
case ModuleInstance:
|
case ModuleInstance:
|
||||||
return m.TargetContains(to.Module())
|
return m.TargetContains(to.Module())
|
||||||
|
|
||||||
|
case ConfigResource:
|
||||||
|
return m.TargetContains(to.Module)
|
||||||
|
|
||||||
case AbsResource:
|
case AbsResource:
|
||||||
return m.TargetContains(to.Module)
|
return m.TargetContains(to.Module)
|
||||||
|
|
||||||
|
|
|
@ -420,6 +420,9 @@ func (m ModuleInstance) TargetContains(other Targetable) bool {
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
|
|
||||||
|
case ConfigResource:
|
||||||
|
return m.TargetContains(to.Module)
|
||||||
|
|
||||||
case AbsResource:
|
case AbsResource:
|
||||||
return m.TargetContains(to.Module)
|
return m.TargetContains(to.Module)
|
||||||
|
|
||||||
|
|
|
@ -145,6 +145,11 @@ func (r AbsResource) TargetContains(other Targetable) bool {
|
||||||
// We'll use our stringification as a cheat-ish way to test for equality.
|
// We'll use our stringification as a cheat-ish way to test for equality.
|
||||||
return to.String() == r.String()
|
return to.String() == r.String()
|
||||||
|
|
||||||
|
case ConfigResource:
|
||||||
|
// if an absolute resource from parsing a target address contains a
|
||||||
|
// ConfigResource, the string representation will match
|
||||||
|
return to.String() == r.String()
|
||||||
|
|
||||||
case AbsResourceInstance:
|
case AbsResourceInstance:
|
||||||
return r.TargetContains(to.ContainingResource())
|
return r.TargetContains(to.ContainingResource())
|
||||||
|
|
||||||
|
@ -203,9 +208,15 @@ func (r AbsResourceInstance) ContainingResource() AbsResource {
|
||||||
func (r AbsResourceInstance) TargetContains(other Targetable) bool {
|
func (r AbsResourceInstance) TargetContains(other Targetable) bool {
|
||||||
switch to := other.(type) {
|
switch to := other.(type) {
|
||||||
|
|
||||||
|
// while we currently don't start with an AbsResourceInstance as a target
|
||||||
|
// address, check all resource types for consistency.
|
||||||
case AbsResourceInstance:
|
case AbsResourceInstance:
|
||||||
// We'll use our stringification as a cheat-ish way to test for equality.
|
// We'll use our stringification as a cheat-ish way to test for equality.
|
||||||
return to.String() == r.String()
|
return to.String() == r.String()
|
||||||
|
case ConfigResource:
|
||||||
|
return to.String() == r.String()
|
||||||
|
case AbsResource:
|
||||||
|
return to.String() == r.String()
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return false
|
return false
|
||||||
|
|
|
@ -94,6 +94,11 @@ func TestTargetContains(t *testing.T) {
|
||||||
mustParseTarget("module.bar[0].test_resource.foo[2]"),
|
mustParseTarget("module.bar[0].test_resource.foo[2]"),
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
mustParseTarget("module.bar.test_resource.foo"),
|
||||||
|
mustParseTarget("module.bar.test_resource.foo[0]"),
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
|
||||||
// Config paths, while never returned from parsing a target, must still
|
// Config paths, while never returned from parsing a target, must still
|
||||||
// be targetable
|
// be targetable
|
||||||
|
@ -109,6 +114,30 @@ func TestTargetContains(t *testing.T) {
|
||||||
mustParseTarget("module.bar.test_resource.foo[2]"),
|
mustParseTarget("module.bar.test_resource.foo[2]"),
|
||||||
true,
|
true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
mustParseTarget("module.bar"),
|
||||||
|
ConfigResource{
|
||||||
|
Module: []string{"bar"},
|
||||||
|
Resource: Resource{
|
||||||
|
Mode: ManagedResourceMode,
|
||||||
|
Type: "test_resource",
|
||||||
|
Name: "foo",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
mustParseTarget("module.bar.test_resource.foo"),
|
||||||
|
ConfigResource{
|
||||||
|
Module: []string{"bar"},
|
||||||
|
Resource: Resource{
|
||||||
|
Mode: ManagedResourceMode,
|
||||||
|
Type: "test_resource",
|
||||||
|
Name: "foo",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ConfigResource{
|
ConfigResource{
|
||||||
Resource: Resource{
|
Resource: Resource{
|
||||||
|
|
Loading…
Reference in New Issue