LineEdits has similar consistency preconditions to ApplyEdits. Previously they were assumed, and bad input would create bad output or crashes; now it uses the same validation logic as ApplyEdits. Since it reports an error, computation of a unified diff can also fail if the edits are inconsistent. The ToUnified([]Edit) function now returns an error. For convenience we also provide a wrapper (Unified) that cannot fail since it calls Strings and ToUnified consistently. LineEdits itself is now private. Change-Id: I3780827f501d7d5c9665ec8be5656331c0dcda8e Reviewed-on: https://go-review.googlesource.com/c/tools/+/440175 Reviewed-by: Robert Findley <rfindley@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Alan Donovan <adonovan@google.com> Auto-Submit: Alan Donovan <adonovan@google.com> |
||
|---|---|---|
| .. | ||
| compare | ||
| README.md | ||
| markdown_go118.go | ||
| markdown_go119.go | ||
| normalizer.go | ||
| tests.go | ||
| util.go | ||
README.md
Testing
LSP has "marker tests" defined in internal/lsp/testdata, as well as
traditional tests.
Marker tests
Marker tests have a standard input file, like
internal/lsp/testdata/foo/bar.go, and some may have a corresponding golden
file, like internal/lsp/testdata/foo/bar.go.golden. The former is the "input"
and the latter is the expected output.
Each input file contains annotations like
//@suggestedfix("}", "refactor.rewrite", "Fill anonymous struct"). These annotations are interpreted by
test runners to perform certain actions. The expected output after those actions
is encoded in the golden file.
When tests are run, each annotation results in a new subtest, which is encoded in the golden file with a heading like,
-- suggestedfix_bar_11_21 --
// expected contents go here
-- suggestedfix_bar_13_20 --
// expected contents go here
The format of these headings vary: they are defined by the
Golden
function for each annotation. In the case above, the format is: annotation
name, file name, annotation line location, annotation character location.
So, if internal/lsp/testdata/foo/bar.go has three suggestedfix annotations,
the golden file should have three headers with suggestedfix_bar_xx_yy
headings.
To see a list of all available annotations, see the exported "expectations" in tests.go.
To run marker tests,
cd /path/to/tools
# The marker tests are located in "internal/lsp", "internal/lsp/cmd, and
# "internal/lsp/source".
go test ./internal/lsp/...
There are quite a lot of marker tests, so to run one individually, pass the test path and heading into a -run argument:
cd /path/to/tools
go test ./internal/lsp/... -v -run TestLSP/Modules/SuggestedFix/bar_11_21
Resetting marker tests
Sometimes, a change is made to lsp that requires a change to multiple golden files. When this happens, you can run,
cd /path/to/tools
./internal/lsp/reset_golden.sh