Update all Go modules in backend/ and backend/_example/memory_store/ to their latest versions (chroma 2.27, go-redis 9.21, bbolt 1.5, slack 0.27, golang.org/x/* and others); re-tidy and re-vendor, keep the example module in sync. Hold github.com/go-chi/chi/v5 at v5.2.5: v5.3.0 deprecates middleware.RealIP (IP-spoofing advisories). Switching off RealIP changes how the client IP is derived for rate limiting and votes, which is a security decision better made on its own rather than inside a dependency bump. go test -race, go vet, golangci-lint and govulncheck all clean on both modules.
Chroma lexers
All lexers in Chroma should now be defined in XML unless they require custom code.
Lexer tests
The tests in this directory feed a known input testdata/<name>.actual into the parser for <name> and check
that its output matches <name>.expected.
It is also possible to perform several tests on a same parser <name>, by placing know inputs *.actual into a
directory testdata/<name>/.
Running the tests
Run the tests as normal:
go test ./lexers
Update existing tests
When you add a new test data file (*.actual), you need to regenerate all tests. That's how Chroma creates the *.expected test file based on the corresponding lexer.
To regenerate all tests, type in your terminal:
RECORD=true go test ./lexers
This first sets the RECORD environment variable to true. Then it runs go test on the ./lexers directory of the Chroma project.
(That environment variable tells Chroma it needs to output test data. After running go test ./lexers you can remove or reset that variable.)
Windows users
Windows users will find that the RECORD=true go test ./lexers command fails in both the standard command prompt terminal and in PowerShell.
Instead we have to perform both steps separately:
- Set the
RECORDenvironment variable totrue.- In the regular command prompt window, the
setcommand sets an environment variable for the current session:set RECORD=true. See this page for more. - In PowerShell, you can use the
$env:RECORD = 'true'command for that. See this article for more. - You can also make a persistent environment variable by hand in the Windows computer settings. See this article for how.
- In the regular command prompt window, the
- When the environment variable is set, run
go test ./lexers.
Chroma will now regenerate the test files and print its results to the console window.