1
0
mirror of https://github.com/golang/go synced 2024-09-30 22:48:32 -06:00
go/internal/lsp
Rob Findley 8f5be0d382 internal/lsp/regtest: add functions to make diagnostic assertions easier
One of the tricky things about asserting on conditions in regtests is
the asynchronous nature of LSP. For example, as the LSP client we cannot
be sure when we've received all diagnostics for a given file.

Currently, regtests are implemented by awaiting specific diagnostic
expectations.  This means that if gopls generates diagnostics that do
not match those expectations, we can only time out the test.

Ideally, we would want to know that gopls is done generating all diagnostics
for the current file state. This is not possible without knowing the
status of diagnostics for. Barring this, we would want to know that
diagnostics are done for the current file version. Unfortunately, that
also is not possible, because a new version of file B can affect
diagnostics in file A.

So in lieu of this information, this CL exposes a few tools that can be
used to improve the experience of writing new regtests.

 - A new expectation is added: AnyDiagnosticAtCurrentVersion, that is
   satisfied if any diagnostics have been received for the current
   buffer version.
 - ExpectDiagnostics is added to Env, to help check whether the current
   diagnostics matches expectations.

Updates golang/go#38113

Change-Id: I48d2c3db87c13ac3ab424d01d9444cbc285af9e1
Reviewed-on: https://go-review.googlesource.com/c/tools/+/226842
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2020-04-02 20:10:23 +00:00
..
analysis internal/lsp: add goreturns like functionality as quickfix 2020-04-01 19:27:44 +00:00
browser internal/lsp: add version and bug commands 2019-05-11 04:16:02 +00:00
cache internal/lsp: temporarily disable type error analyzers by default 2020-04-02 16:54:32 +00:00
cmd internal/lsp: temporarily disable type error analyzers by default 2020-04-02 16:54:32 +00:00
debug internal/lsp: rewrite the stats using the newer telemetry features 2020-03-31 00:50:33 +00:00
diff internal/lsp: fix errors found by staticcheck 2020-03-19 19:20:54 +00:00
fake internal/lsp/regtest: add functions to make diagnostic assertions easier 2020-04-02 20:10:23 +00:00
fuzzy internal/lsp: fix errors found by staticcheck 2020-03-19 19:20:54 +00:00
helper internal/lsp: change to helper.go to output a formatted file 2020-01-31 20:35:38 +00:00
lsprpc internal/lsp: rewrite the stats using the newer telemetry features 2020-03-31 00:50:33 +00:00
mod internal/lsp: refactor and propagate errors from code actions 2020-03-31 20:20:46 +00:00
protocol internal/lsp: avoid logging context cancellation 2020-03-31 01:46:33 +00:00
regtest internal/lsp/regtest: add functions to make diagnostic assertions easier 2020-04-02 20:10:23 +00:00
snippet all: fix broken links to LSP specification 2019-10-02 18:32:53 +00:00
source internal/lsp: fix panic in builtin completions 2020-04-02 17:53:26 +00:00
testdata internal/lsp: fix panic in builtin completions 2020-04-02 17:53:26 +00:00
tests internal/lsp: temporarily disable type error analyzers by default 2020-04-02 16:54:32 +00:00
code_action.go internal/lsp: refactor and propagate errors from code actions 2020-03-31 20:20:46 +00:00
command.go x/tools/gopls: run go generate through CodeLens 2020-03-17 04:34:34 +00:00
completion_test.go internal/span,lsp: disambiguate URIs, DocumentURIs, and paths 2020-02-14 22:51:03 +00:00
completion.go internal/lsp: avoid logging context cancellation 2020-03-31 01:46:33 +00:00
definition.go internal/lsp/source: return location(s) for imported packages 2020-03-09 16:25:02 +00:00
diagnostics.go internal/lsp: add a reg test to test "go mod init" 2020-03-31 02:48:52 +00:00
folding_range.go internal/lsp: check for file URIs on LSP requests 2020-02-14 22:51:26 +00:00
format.go internal/lsp: support textDocument/formatting for .mod extension 2020-03-06 13:51:27 +00:00
general.go internal/lsp: print view-specific environment 2020-03-24 20:15:47 +00:00
generate.go internal/lsp: move the telemetry package 2020-03-18 13:22:49 +00:00
highlight.go internal/lsp: move the telemetry package 2020-03-18 13:22:49 +00:00
hover.go internal/lsp: support textDocument/hover for .mod extension 2020-02-26 15:59:49 +00:00
implementation.go internal/lsp: check for file URIs on LSP requests 2020-02-14 22:51:26 +00:00
link.go internal/lsp: avoid logging context cancellation 2020-03-31 01:46:33 +00:00
lsp_test.go internal/lsp: temporarily disable type error analyzers by default 2020-04-02 16:54:32 +00:00
references.go internal/lsp: refactor references/rename/implementations 2020-03-27 17:09:18 +00:00
rename.go internal/lsp: check for file URIs on LSP requests 2020-02-14 22:51:26 +00:00
reset_golden.sh internal/lsp: fix regeneration of golden files 2019-09-25 13:16:59 +00:00
server_gen.go x/tools/gopls: add support for $/progress functionality 2020-03-16 21:25:24 +00:00
server.go internal/lsp: stop showing workspace misconfiguration message 2020-03-24 18:23:14 +00:00
signature_help.go internal/telemetry: delete the event.TagOf method 2020-03-18 13:23:15 +00:00
symbols.go internal/lsp: move the telemetry package 2020-03-18 13:22:49 +00:00
text_synchronization.go internal/lsp: fix view rebuilding when go mod init runs 2020-03-30 17:42:33 +00:00
workspace_symbol.go internal/lsp: migrate telemetry to using the event package 2020-03-12 03:59:16 +00:00
workspace.go internal/lsp: generate boilerplate stubs for type Server 2020-01-24 14:41:51 +00:00