Skip to content

Commit 7b684a9

Browse files
committed
gopls: port import tests to the new marker framework
Port all the import tests by reusing the "codeaction" marker, with the exception of one which was flaky due to golang/go#59976. Updates golang/go#54845 Change-Id: I60688ba0bbc6f5c17018d304748555f3951d0556 Reviewed-on: https://go-review.googlesource.com/c/tools/+/492675 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Robert Findley <rfindley@google.com> Reviewed-by: Alan Donovan <adonovan@google.com> gopls-CI: kokoro <noreply+kokoro@google.com>
1 parent 87974e3 commit 7b684a9

23 files changed

+180
-216
lines changed

gopls/internal/lsp/lsp_test.go

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -418,39 +418,6 @@ func (r *runner) SemanticTokens(t *testing.T, spn span.Span) {
418418
}
419419
}
420420

421-
func (r *runner) Import(t *testing.T, spn span.Span) {
422-
// Invokes textDocument/codeAction and applies all the "goimports" edits.
423-
424-
uri := spn.URI()
425-
filename := uri.Filename()
426-
actions, err := r.server.CodeAction(r.ctx, &protocol.CodeActionParams{
427-
TextDocument: protocol.TextDocumentIdentifier{
428-
URI: protocol.URIFromSpanURI(uri),
429-
},
430-
})
431-
if err != nil {
432-
t.Fatal(err)
433-
}
434-
m, err := r.data.Mapper(uri)
435-
if err != nil {
436-
t.Fatal(err)
437-
}
438-
got := m.Content
439-
if len(actions) > 0 {
440-
res, err := applyTextDocumentEdits(r, actions[0].Edit.DocumentChanges)
441-
if err != nil {
442-
t.Fatal(err)
443-
}
444-
got = res[uri]
445-
}
446-
want := r.data.Golden(t, "goimports", filename, func() ([]byte, error) {
447-
return got, nil
448-
})
449-
if diff := compare.Bytes(want, got); diff != "" {
450-
t.Errorf("import failed for %s:\n%s", filename, diff)
451-
}
452-
}
453-
454421
func (r *runner) SuggestedFix(t *testing.T, spn span.Span, actionKinds []tests.SuggestedFix, expectedActions int) {
455422
uri := spn.URI()
456423
view, err := r.server.session.ViewOf(uri)

gopls/internal/lsp/regtest/marker.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ var update = flag.Bool("update", false, "if set, update test data during marker
124124
// to be between start.Start and end.End. The golden directory contains
125125
// changed file content after the code action is applied.
126126
//
127+
// - codeactionerr(kind, start, end, wantError): specifies a codeaction that
128+
// fails with an error that matches the expectation.
129+
//
127130
// - complete(location, ...labels): specifies expected completion results at
128131
// the given location.
129132
//
@@ -506,6 +509,7 @@ arity:
506509
// or applying edits in the editor).
507510
var markerFuncs = map[string]markerFunc{
508511
"codeaction": makeMarkerFunc(codeActionMarker),
512+
"codeactionerr": makeMarkerFunc(codeActionErrMarker),
509513
"complete": makeMarkerFunc(completeMarker),
510514
"def": makeMarkerFunc(defMarker),
511515
"diag": makeMarkerFunc(diagMarker),
@@ -1398,6 +1402,13 @@ func codeActionMarker(mark marker, actionKind string, start, end protocol.Locati
13981402
checkChangedFiles(mark, changed, golden)
13991403
}
14001404

1405+
func codeActionErrMarker(mark marker, actionKind string, start, end protocol.Location, wantErr wantError) {
1406+
loc := start
1407+
loc.Range.End = end.Range.End
1408+
_, err := codeAction(mark.run.env, loc.URI, loc.Range, actionKind, nil)
1409+
wantErr.check(mark, err)
1410+
}
1411+
14011412
// suggestedfixMarker implements the @suggestedfix(location, regexp,
14021413
// kind, golden) marker. It acts like @diag(location, regexp), to set
14031414
// the expectation of a diagnostic, but then it applies the first code

gopls/internal/lsp/testdata/imports/add_import.go.golden

Lines changed: 0 additions & 13 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/add_import.go.in

Lines changed: 0 additions & 10 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/good_imports.go.golden

Lines changed: 0 additions & 9 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/good_imports.go.in

Lines changed: 0 additions & 7 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/issue35458.go.golden

Lines changed: 0 additions & 20 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/issue35458.go.in

Lines changed: 0 additions & 23 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/multiple_blocks.go.golden

Lines changed: 0 additions & 9 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/multiple_blocks.go.in

Lines changed: 0 additions & 9 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/needs_imports.go.golden

Lines changed: 0 additions & 13 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/needs_imports.go.in

Lines changed: 0 additions & 6 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/remove_import.go.golden

Lines changed: 0 additions & 11 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/remove_import.go.in

Lines changed: 0 additions & 10 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/remove_imports.go.golden

Lines changed: 0 additions & 6 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/remove_imports.go.in

Lines changed: 0 additions & 9 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/two_lines.go.golden

Lines changed: 0 additions & 4 deletions
This file was deleted.

gopls/internal/lsp/testdata/imports/two_lines.go.in

Lines changed: 0 additions & 2 deletions
This file was deleted.

gopls/internal/lsp/testdata/summary.txt.golden

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ RankedCompletionsCount = 164
1010
CaseSensitiveCompletionsCount = 4
1111
DiagnosticsCount = 39
1212
FoldingRangesCount = 2
13-
ImportCount = 8
1413
SemanticTokenCount = 3
1514
SuggestedFixCount = 76
1615
MethodExtractionCount = 6

gopls/internal/lsp/testdata/summary_go1.18.txt.golden

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ RankedCompletionsCount = 174
1010
CaseSensitiveCompletionsCount = 4
1111
DiagnosticsCount = 39
1212
FoldingRangesCount = 2
13-
ImportCount = 8
1413
SemanticTokenCount = 3
1514
SuggestedFixCount = 82
1615
MethodExtractionCount = 6

gopls/internal/lsp/testdata/summary_go1.21.txt.golden

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ RankedCompletionsCount = 174
1010
CaseSensitiveCompletionsCount = 4
1111
DiagnosticsCount = 40
1212
FoldingRangesCount = 2
13-
ImportCount = 8
1413
SemanticTokenCount = 3
1514
SuggestedFixCount = 82
1615
MethodExtractionCount = 6

gopls/internal/lsp/tests/tests.go

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ type FuzzyCompletions = map[span.Span][]Completion
7777
type CaseSensitiveCompletions = map[span.Span][]Completion
7878
type RankCompletions = map[span.Span][]Completion
7979
type FoldingRanges = []span.Span
80-
type Imports = []span.Span
8180
type SemanticTokens = []span.Span
8281
type SuggestedFixes = map[span.Span][]SuggestedFix
8382
type MethodExtractions = map[span.Span]span.Span
@@ -106,7 +105,6 @@ type Data struct {
106105
CaseSensitiveCompletions CaseSensitiveCompletions
107106
RankCompletions RankCompletions
108107
FoldingRanges FoldingRanges
109-
Imports Imports
110108
SemanticTokens SemanticTokens
111109
SuggestedFixes SuggestedFixes
112110
MethodExtractions MethodExtractions
@@ -149,7 +147,6 @@ type Tests interface {
149147
CaseSensitiveCompletion(*testing.T, span.Span, Completion, CompletionItems)
150148
RankCompletion(*testing.T, span.Span, Completion, CompletionItems)
151149
FoldingRanges(*testing.T, span.Span)
152-
Import(*testing.T, span.Span)
153150
SemanticTokens(*testing.T, span.Span)
154151
SuggestedFix(*testing.T, span.Span, []SuggestedFix, int)
155152
MethodExtraction(*testing.T, span.Span, span.Span)
@@ -432,7 +429,6 @@ func load(t testing.TB, mode string, dir string) *Data {
432429
"rank": datum.collectCompletions(CompletionRank),
433430
"snippet": datum.collectCompletionSnippets,
434431
"fold": datum.collectFoldingRanges,
435-
"import": datum.collectImports,
436432
"semantic": datum.collectSemanticTokens,
437433
"godef": datum.collectDefinitions,
438434
"typdef": datum.collectTypeDefinitions,
@@ -624,16 +620,6 @@ func Run(t *testing.T, tests Tests, data *Data) {
624620
}
625621
})
626622

627-
t.Run("Import", func(t *testing.T) {
628-
t.Helper()
629-
for _, spn := range data.Imports {
630-
t.Run(uriName(spn.URI()), func(t *testing.T) {
631-
t.Helper()
632-
tests.Import(t, spn)
633-
})
634-
}
635-
})
636-
637623
t.Run("SemanticTokens", func(t *testing.T) {
638624
t.Helper()
639625
for _, spn := range data.SemanticTokens {
@@ -840,7 +826,6 @@ func checkData(t *testing.T, data *Data) {
840826
fmt.Fprintf(buf, "CaseSensitiveCompletionsCount = %v\n", countCompletions(data.CaseSensitiveCompletions))
841827
fmt.Fprintf(buf, "DiagnosticsCount = %v\n", diagnosticsCount)
842828
fmt.Fprintf(buf, "FoldingRangesCount = %v\n", len(data.FoldingRanges))
843-
fmt.Fprintf(buf, "ImportCount = %v\n", len(data.Imports))
844829
fmt.Fprintf(buf, "SemanticTokenCount = %v\n", len(data.SemanticTokens))
845830
fmt.Fprintf(buf, "SuggestedFixCount = %v\n", len(data.SuggestedFixes))
846831
fmt.Fprintf(buf, "MethodExtractionCount = %v\n", len(data.MethodExtractions))
@@ -1015,10 +1000,6 @@ func (data *Data) collectFoldingRanges(spn span.Span) {
10151000
data.FoldingRanges = append(data.FoldingRanges, spn)
10161001
}
10171002

1018-
func (data *Data) collectImports(spn span.Span) {
1019-
data.Imports = append(data.Imports, spn)
1020-
}
1021-
10221003
func (data *Data) collectAddImports(spn span.Span, imp string) {
10231004
data.AddImport[spn.URI()] = imp
10241005
}

0 commit comments

Comments
 (0)