Skip to content

Commit

Permalink
Test active vs inactive self refs
Browse files Browse the repository at this point in the history
  • Loading branch information
dbanck committed Nov 24, 2022
1 parent f85907e commit 3286f22
Showing 1 changed file with 175 additions and 1 deletion.
176 changes: 175 additions & 1 deletion reference/targets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -881,6 +881,7 @@ func TestTargets_MatchWalk_localRefs(t *testing.T) {
prefix string
outermostBodyRng hcl.Range
originRng hcl.Range
activeSelfRefs bool
expectedTargets Targets
}{
{
Expand All @@ -898,6 +899,7 @@ func TestTargets_MatchWalk_localRefs(t *testing.T) {
Start: hcl.InitialPos,
End: hcl.InitialPos,
},
false,
Targets{},
},
{
Expand Down Expand Up @@ -928,6 +930,7 @@ func TestTargets_MatchWalk_localRefs(t *testing.T) {
Start: hcl.InitialPos,
End: hcl.InitialPos,
},
false,
Targets{
{
LocalAddr: lang.Address{
Expand Down Expand Up @@ -978,6 +981,7 @@ func TestTargets_MatchWalk_localRefs(t *testing.T) {
Start: hcl.InitialPos,
End: hcl.InitialPos,
},
false,
Targets{
{
LocalAddr: lang.Address{
Expand Down Expand Up @@ -1044,6 +1048,7 @@ func TestTargets_MatchWalk_localRefs(t *testing.T) {
Start: hcl.Pos{Line: 5, Column: 1, Byte: 25},
End: hcl.Pos{Line: 5, Column: 10, Byte: 35},
},
false,
Targets{
{
LocalAddr: lang.Address{
Expand Down Expand Up @@ -1099,6 +1104,7 @@ func TestTargets_MatchWalk_localRefs(t *testing.T) {
Start: hcl.Pos{Line: 2, Column: 11, Byte: 38},
End: hcl.Pos{Line: 2, Column: 11, Byte: 38},
},
false,
Targets{},
},
{
Expand Down Expand Up @@ -1158,15 +1164,183 @@ func TestTargets_MatchWalk_localRefs(t *testing.T) {
Start: hcl.Pos{Line: 2, Column: 9, Byte: 36},
End: hcl.Pos{Line: 2, Column: 9, Byte: 36},
},
true,
Targets{},
},
{
"self only matches when enabled",
Targets{
{
Addr: lang.Address{
lang.RootStep{Name: "aws_alb"},
lang.AttrStep{Name: "test"},
},
LocalAddr: lang.Address{
lang.RootStep{Name: "self"},
},
RangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
TargetableFromRangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
NestedTargets: Targets{
{
Addr: lang.Address{
lang.RootStep{Name: "aws_alb"},
lang.AttrStep{Name: "test"},
lang.AttrStep{Name: "bar"},
},
LocalAddr: lang.Address{
lang.RootStep{Name: "self"},
lang.AttrStep{Name: "bar"},
},
RangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 2, Column: 1, Byte: 30},
End: hcl.Pos{Line: 2, Column: 20, Byte: 35},
},
TargetableFromRangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
},
},
},
},
schema.TraversalExpr{},
"",
hcl.Range{ // outermost body range
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 3, Column: 1, Byte: 37},
},
hcl.Range{ // origin range
Filename: "test.tf",
Start: hcl.Pos{Line: 3, Column: 2, Byte: 36},
End: hcl.Pos{Line: 3, Column: 2, Byte: 36},
},
true,
Targets{
{
Addr: lang.Address{
lang.RootStep{Name: "aws_alb"},
lang.AttrStep{Name: "test"},
},
LocalAddr: lang.Address{
lang.RootStep{Name: "self"},
},
RangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
TargetableFromRangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
NestedTargets: Targets{
{
Addr: lang.Address{
lang.RootStep{Name: "aws_alb"},
lang.AttrStep{Name: "test"},
lang.AttrStep{Name: "bar"},
},
LocalAddr: lang.Address{
lang.RootStep{Name: "self"},
lang.AttrStep{Name: "bar"},
},
RangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 2, Column: 1, Byte: 30},
End: hcl.Pos{Line: 2, Column: 20, Byte: 35},
},
TargetableFromRangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
},
},
},
},
},
{
"self doesn't match when disabled",
Targets{
{
Addr: lang.Address{
lang.RootStep{Name: "aws_alb"},
lang.AttrStep{Name: "test"},
},
LocalAddr: lang.Address{
lang.RootStep{Name: "self"},
},
RangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
TargetableFromRangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
NestedTargets: Targets{
{
Addr: lang.Address{
lang.RootStep{Name: "aws_alb"},
lang.AttrStep{Name: "test"},
lang.AttrStep{Name: "bar"},
},
LocalAddr: lang.Address{
lang.RootStep{Name: "self"},
lang.AttrStep{Name: "bar"},
},
RangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 2, Column: 1, Byte: 30},
End: hcl.Pos{Line: 2, Column: 20, Byte: 35},
},
TargetableFromRangePtr: &hcl.Range{
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 4, Column: 1, Byte: 37},
},
},
},
},
},
schema.TraversalExpr{},
"",
hcl.Range{ // outermost body range
Filename: "test.tf",
Start: hcl.Pos{Line: 1, Column: 28, Byte: 27},
End: hcl.Pos{Line: 3, Column: 1, Byte: 37},
},
hcl.Range{ // origin range
Filename: "test.tf",
Start: hcl.Pos{Line: 3, Column: 2, Byte: 36},
End: hcl.Pos{Line: 3, Column: 2, Byte: 36},
},
false,
Targets{},
},
// TODO: active vs inactive self
}

for i, tc := range testCases {
t.Run(fmt.Sprintf("%d-%s", i, tc.name), func(t *testing.T) {
targets := make(Targets, 0)
ctx := context.Background()
if tc.activeSelfRefs {
ctx = schema.WithActiveSelfRefs(ctx)
}
tc.targets.MatchWalk(ctx, tc.traversalConst, tc.prefix, tc.outermostBodyRng, tc.originRng, func(t Target) error {
targets = append(targets, t)
return nil
Expand Down

0 comments on commit 3286f22

Please sign in to comment.