github.com/jd-ly/tools@v0.5.7/internal/lsp/tests/README.md (about)

     1  ## Testing
     2  
     3  LSP has "marker tests" defined in `internal/lsp/testdata`, as well as
     4  traditional tests.
     5  
     6  #### Marker tests
     7  
     8  Marker tests have a standard input file, like
     9  `internal/lsp/testdata/foo/bar.go`, and some may have a corresponding golden
    10  file, like `internal/lsp/testdata/foo/bar.go.golden`. The former is the "input"
    11  and the latter is the expected output.
    12  
    13  Each input file contains annotations like
    14  `//@suggestedfix("}", "refactor.rewrite")`. These annotations are interpreted by
    15  test runners to perform certain actions. The expected output after those actions
    16  is encoded in the golden file.
    17  
    18  When tests are run, each annotation results in a new subtest, which is encoded
    19  in the golden file with a heading like,
    20  
    21  ```
    22  -- suggestedfix_bar_11_21 --
    23  // expected contents go here
    24  -- suggestedfix_bar_13_20 --
    25  // expected contents go here
    26  ```
    27  
    28  The format of these headings vary: they are defined by the "Golden" function for
    29  each annotation: https://pkg.go.dev/github.com/jd-ly/tools/internal/lsp/tests#Data.Golden.
    30  In the case above, the format is: annotation name, file name, annotation line
    31  location, annotation character location.
    32  
    33  So, if `internal/lsp/testdata/foo/bar.go` has three `suggestedfix` annotations,
    34  the golden file should have three headers with `suggestedfix_bar_xx_yy`
    35  headings.
    36  
    37  To see a list of all available annotations, see the exported "expectations" in
    38  [tests.go](https://github.com/golang/tools/blob/299f270db45902e93469b1152fafed034bb3f033/internal/lsp/tests/tests.go#L418-L447).
    39  
    40  To run marker tests,
    41  
    42  ```
    43  cd /path/to/tools
    44  
    45  # The marker tests are located in "internal/lsp", "internal/lsp/cmd, and
    46  # "internal/lsp/source".
    47  go test ./internal/lsp/...
    48  ```
    49  
    50  There are quite a lot of marker tests, so to run one individually, pass the test
    51  path and heading into a -run argument:
    52  
    53  ```
    54  cd /path/to/tools
    55  go test ./internal/lsp -v -run TestLSP/Modules/SuggestedFix/bar_11_21
    56  ```
    57  
    58  #### Resetting marker tests
    59  
    60  Sometimes, a change is made to lsp that requires a change to multiple golden
    61  files. When this happens, you can run,
    62  
    63  ```
    64  cd /path/to/tools
    65  ./internal/lsp/reset_golden.sh
    66  ```