.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.0 / internal / lsp / tests / README.md
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.0/internal/lsp/tests/README.md b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.0/internal/lsp/tests/README.md
new file mode 100644 (file)
index 0000000..d8ba10f
--- /dev/null
@@ -0,0 +1,66 @@
+# 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")`. 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,
+
+```bash
+-- 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`](https://pkg.go.dev/golang.org/x/tools/internal/lsp/tests#Data.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](https://github.com/golang/tools/blob/299f270db45902e93469b1152fafed034bb3f033/internal/lsp/tests/tests.go#L418-L447).
+
+To run marker tests,
+
+```bash
+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:
+
+```bash
+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,
+
+```bash
+cd /path/to/tools
+./internal/lsp/reset_golden.sh
+```