Skip to content

Commit 5394f53

Browse files
committed
test:migrate ref test
1 parent f8d733d commit 5394f53

File tree

1 file changed

+77
-95
lines changed

1 file changed

+77
-95
lines changed

gopls/internal/regtest/misc/references_gox_test.go

Lines changed: 77 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -44,25 +44,16 @@ func main() {
4444
fmt.Println(add__1("Hello", "World"))
4545
}
4646
`
47-
Run(t, files, func(t *testing.T, env *Env) {
48-
env.OpenFile("def.gop")
49-
loc := env.GoToDefinition(env.RegexpSearch("def.gop", `add`))
50-
refs, err := env.Editor.References(env.Ctx, loc)
51-
if err != nil {
52-
t.Fatalf("references on (*s).Error failed: %v", err)
53-
}
54-
var buf strings.Builder
55-
for _, ref := range refs {
56-
fmt.Fprintf(&buf, "%s %s\n", env.Sandbox.Workdir.URIToPath(ref.URI), ref.Range)
57-
}
58-
got := buf.String()
59-
want := "def.gop 0:5-0:8\n" + // overload decl
60-
"test.gop 0:8-0:11\n" + // overload int call
61-
"test.gop 1:8-1:11\n" // overload string call
62-
if diff := cmp.Diff(want, got); diff != "" {
63-
t.Errorf("unexpected references on (*s).Error (-want +got):\n%s", diff)
64-
}
65-
})
47+
testCases := []refTest{
48+
{
49+
"def.gop", "add", []string{
50+
"def.gop 0:5-0:8", // overload decl
51+
"test.gop 0:8-0:11", // overload int call
52+
"test.gop 1:8-1:11", // overload string call
53+
},
54+
},
55+
}
56+
runFindRefTest(t, files, testCases)
6657
}
6758

6859
func TestReferencesOnOverloadDecl2(t *testing.T) {
@@ -113,47 +104,29 @@ func main() {
113104
fmt.Println(mulFloat(1.2, 3.14))
114105
}
115106
`
116-
// goxls: overload decl reference
117-
Run(t, files, func(t *testing.T, env *Env) {
118-
env.OpenFile("def.gop")
119-
loc := env.GoToDefinition(env.RegexpSearch("def.gop", `func (mul) = \(`))
120-
refs, err := env.Editor.References(env.Ctx, loc)
121-
if err != nil {
122-
t.Fatalf("references on (*s).Error failed: %v", err)
123-
}
124-
var buf strings.Builder
125-
for _, ref := range refs {
126-
fmt.Fprintf(&buf, "%s %s\n", env.Sandbox.Workdir.URIToPath(ref.URI), ref.Range)
127-
}
128-
got := buf.String()
129-
want := "def.gop 8:5-8:8\n" + // overload defintion
130-
"test.gop 0:8-0:11\n" + // overload int call
131-
"test.gop 1:8-1:11\n" + // overload string call
132-
"test.gop 2:8-2:11\n" // overload float call
133-
if diff := cmp.Diff(want, got); diff != "" {
134-
t.Errorf("unexpected references on (*s).Error (-want +got):\n%s", diff)
135-
}
136-
})
137-
// goxls: overload member reference
138-
Run(t, files, func(t *testing.T, env *Env) {
139-
env.OpenFile("def.gop")
140-
loc := env.GoToDefinition(env.RegexpSearch("def.gop", `func mul = \(\n\s+(mulInt)`))
141-
refs, err := env.Editor.References(env.Ctx, loc)
142-
if err != nil {
143-
t.Fatalf("references on (*s).Error failed: %v", err)
144-
}
145-
var buf strings.Builder
146-
for _, ref := range refs {
147-
fmt.Fprintf(&buf, "%s %s\n", env.Sandbox.Workdir.URIToPath(ref.URI), ref.Range)
148-
}
149-
got := buf.String()
150-
want := "def.gop 0:5-0:11\n" + // mulInt
151-
"def.gop 9:4-9:10\n" + // overload mulInt
152-
"test.gop 0:8-0:11\n" // use overload mulInt
153-
if diff := cmp.Diff(want, got); diff != "" {
154-
t.Errorf("unexpected references on (*s).Error (-want +got):\n%s", diff)
155-
}
156-
})
107+
108+
testCases := []refTest{
109+
// goxls: overload reference
110+
{
111+
"def.gop", `func (mul) = \(`,
112+
[]string{
113+
"def.gop 8:5-8:8", // overload defintion
114+
"test.gop 0:8-0:11", // overload int call
115+
"test.gop 1:8-1:11", // overload string call
116+
"test.gop 2:8-2:11", // overload float call
117+
},
118+
},
119+
// goxls: overload member reference
120+
{
121+
"def.gop", `func mul = \(\n\s+(mulInt)`,
122+
[]string{
123+
"def.gop 0:5-0:11", // mulInt
124+
"def.gop 9:4-9:10", // overload mulInt
125+
"test.gop 0:8-0:11", // use overload mulInt
126+
},
127+
},
128+
}
129+
runFindRefTest(t, files, testCases)
157130
}
158131

159132
func TestReferencesOnOverloadDecl3(t *testing.T) {
@@ -202,42 +175,51 @@ var c = a.mulFoo(a)
202175
func main() {
203176
}
204177
`
178+
testCases := []refTest{
179+
{
180+
"def.gop", `func \(foo\)\.(mul) = \(`,
181+
[]string{
182+
"def.gop 8:11-8:14",
183+
"test.gop 1:10-1:13",
184+
"test.gop 2:10-2:13",
185+
},
186+
},
187+
{
188+
"def.gop", `\(foo\)\.(mulInt)`,
189+
[]string{
190+
"def.gop 2:14-2:20",
191+
"def.gop 9:10-9:16",
192+
"test.gop 1:10-1:13",
193+
},
194+
},
195+
}
196+
runFindRefTest(t, files, testCases)
197+
}
198+
199+
type refTest struct {
200+
defineFile string
201+
defineLocReg string
202+
refLocs []string
203+
}
204+
205+
func runFindRefTest(t *testing.T, files string, testCase []refTest) {
205206
Run(t, files, func(t *testing.T, env *Env) {
206-
env.OpenFile("def.gop")
207-
loc := env.GoToDefinition(env.RegexpSearch("def.gop", `func \(foo\)\.(mul) = \(`))
208-
refs, err := env.Editor.References(env.Ctx, loc)
209-
if err != nil {
210-
t.Fatalf("references on (*s).Error failed: %v", err)
211-
}
212-
var buf strings.Builder
213-
for _, ref := range refs {
214-
fmt.Fprintf(&buf, "%s %s\n", env.Sandbox.Workdir.URIToPath(ref.URI), ref.Range)
215-
}
216-
got := buf.String()
217-
want := "def.gop 8:11-8:14\n" +
218-
"test.gop 1:10-1:13\n" +
219-
"test.gop 2:10-2:13\n"
220-
if diff := cmp.Diff(want, got); diff != "" {
221-
t.Errorf("unexpected references on (*s).Error (-want +got):\n%s", diff)
222-
}
223-
})
224-
Run(t, files, func(t *testing.T, env *Env) {
225-
env.OpenFile("def.gop")
226-
loc := env.GoToDefinition(env.RegexpSearch("def.gop", `\(foo\)\.(mulInt)`))
227-
refs, err := env.Editor.References(env.Ctx, loc)
228-
if err != nil {
229-
t.Fatalf("references on (*s).Error failed: %v", err)
230-
}
231-
var buf strings.Builder
232-
for _, ref := range refs {
233-
fmt.Fprintf(&buf, "%s %s\n", env.Sandbox.Workdir.URIToPath(ref.URI), ref.Range)
234-
}
235-
got := buf.String()
236-
want := "def.gop 2:14-2:20\n" +
237-
"def.gop 9:10-9:16\n" +
238-
"test.gop 1:10-1:13\n"
239-
if diff := cmp.Diff(want, got); diff != "" {
240-
t.Errorf("unexpected references on (*s).Error (-want +got):\n%s", diff)
207+
for _, test := range testCase {
208+
env.OpenFile(test.defineFile)
209+
loc := env.GoToDefinition(env.RegexpSearch(test.defineFile, test.defineLocReg))
210+
refs, err := env.Editor.References(env.Ctx, loc)
211+
if err != nil {
212+
t.Fatalf("references on (*s).Error failed: %v", err)
213+
}
214+
var buf strings.Builder
215+
for _, ref := range refs {
216+
fmt.Fprintf(&buf, "%s %s\n", env.Sandbox.Workdir.URIToPath(ref.URI), ref.Range)
217+
}
218+
got := buf.String()
219+
want := strings.Join(test.refLocs, "\n") + "\n"
220+
if diff := cmp.Diff(want, got); diff != "" {
221+
t.Errorf("unexpected references on (*s).Error (-want +got):\n%s", diff)
222+
}
241223
}
242224
})
243225
}

0 commit comments

Comments
 (0)