go/internal/lsp/cmd/test
Robert Findley f157068c1b internal/lsp/regtest: allow sharing memoized results across regtests
Each regtest does a significant amount of extra work re-doing things
like parsing and type-checking the runtime package. We can share this
work across regtests by using a shared cache, significantly speeding
them up at the cost of potentially hiding bugs related to timing.

Sharing this work still retains most of the benefit of the regtests, so
implement this in the default mode (formerly called "singleton" and now
renamed to "default"). In a subsequent CL, modes will be cleaned up so
that "default" is the only mode that runs with -short.

Making this change actually revealed a caching bug: our cached package
stores error messages extracted from go/packages errors, but does not
include these errors in the cache key. Fix this by hashing all metadata
errors into the package cache key.

Updates golang/go#39384

Change-Id: I37ab9604149d34c9a79fc02b0e1bc23fcb17c454
Reviewed-on: https://go-review.googlesource.com/c/tools/+/417587
TryBot-Result: Gopher Robot <gobot@golang.org>
gopls-CI: kokoro <noreply+kokoro@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
2022-07-26 21:20:42 +00:00
..
call_hierarchy.go internal/lsp: add outgoing calls call hierarchy 2020-08-20 01:08:01 +00:00
check.go internal/span: eliminate TokenConverter 2022-06-01 19:19:15 +00:00
cmdtest.go internal/lsp/regtest: allow sharing memoized results across regtests 2022-07-26 21:20:42 +00:00
definition.go internal/lsp, gopls: recover from go-diff panics 2020-12-17 16:56:54 +00:00
folding_range.go all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
format.go all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00
highlight.go all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
implementation.go internal/lsp: store workspace package IDs with package paths 2020-01-09 22:04:34 +00:00
imports.go internal/lsp, gopls: recover from go-diff panics 2020-12-17 16:56:54 +00:00
links.go internal/lsp: fix a race in the command line tests 2019-11-22 16:15:56 +00:00
prepare_rename.go internal/lsp/protocol: unmarshal to pointers when dispatching requests 2020-03-05 22:45:36 +00:00
references.go internal/lsp: add tests for references includeDeclaration setting 2020-01-23 01:39:50 +00:00
rename.go internal/lsp: fix a race in the command line tests 2019-11-22 16:15:56 +00:00
semanticdriver.go internal/lsp: add semantic tokens for arrows in declarations 2022-04-07 14:52:22 +00:00
signature.go internal/lsp: normalize interface{} to any in test comparisons 2021-12-09 13:40:01 +00:00
suggested_fix.go internal/lsp: enable fillstruct for generics 2022-07-25 16:40:20 +00:00
symbols.go internal/lsp: fix a race in the command line tests 2019-11-22 16:15:56 +00:00
workspace_symbol.go internal/lsp, gopls: recover from go-diff panics 2020-12-17 16:56:54 +00:00