Language support
Generated by
scripts/gen-language-support.shfrominternal/lang/runner.goandinternal/lang/parity.go. Do not hand-edit.
What corral does with each languageβs tests. This page is rendered from the same table the code dispatches on, so it cannot list a capability the code lacks, and every gap carries the reason the code gives for it.
By language
| go | javascript | php | python | ruby | rust | typescript | |
|---|---|---|---|---|---|---|---|
| Critic must judge every test | β | β | β | β | β | β | β |
| List the tests | β | β | β | β | β (rspec) | β | β |
| Run one test alone (critic claims checked) | β | β | β | β | β (rspec) | β | β |
| Name the killing test | β | β | β | β | β (rspec, minitest) | β | β |
| Stop at the first failure | β | β (jest, mocha) | β | β | β (rspec) | β (1) | β (jest, mocha) |
| Keep the passing part of an authored test | β | β | β | β | β (rspec, minitest) | β (2) | β |
| Coverage pre-flight | β | β | β | β | β | β (3) | β |
| Grade only the tests that run the file | β (4) | β (5) | β (5) | β | β (5) | β (5) | β (5) |
- nextestβs βfail-fast and libtestβs lack of one are not yet verified against a real run (runner table Phase 5)
- libtest βskip and nextest filtersets are not yet verified for salvage (runner table Phase 5)
- cargo llvm-cov is not wired yet (runner table Phase 5)
- per-test coverage needs a run per test; its own spec (runner table Phase 6)
- per-test coverage contexts per runner; its own spec (runner table Phase 6)
By runner
A language has a runner capability when any of its runners does; this is which. corral recognises the runner from the test command you pass, or from the package script it runs: composer reads composer.json and hands the runner its arguments after --; npm reads package.json and hands the runner its arguments after --; pnpm reads package.json and hands the runner its arguments after --; yarn reads package.json and hands the runner its arguments directly. A script gets the runnerβs arguments only when it is one command, since a launcher appends them to the end of the script. --runner <id> names the runner when corral cannot read it. A command whose runner corral does not know (a make target) is graded exactly the same, by exit code, as its languageβs default runner, except that it never gets a fail-fast flag.
| runner | --runner |
languages | stop at first failure | list tests | run one test | names the killing test | salvage | names flaky tests | note |
|---|---|---|---|---|---|---|---|---|---|
go test (default) |
go-test |
go | -failfast |
β | β | β | β | ||
gotestsum |
gotestsum |
go | β | β | β | listing and one-test runs use go test itself; the killing test is read from --- FAIL: lines, which gotestsum passes through for a failed test but was not run here |
|||
pytest (default) |
pytest |
python | -x |
β | β | β | β | ||
unittest |
unittest |
python | --failfast |
β | β | listing and one-test runs use pytest, which collects unittest suites; they need pytest installed | |||
jest |
jest |
javascript, typescript | --bail |
β | β | β | β | listing and one-test runs verified on jest 30.5 | |
mocha |
mocha |
javascript, typescript | --bail |
β | β | β | β | listing and one-test runs verified on mocha 11.8 (listing needs mocha 9 or later) | |
vitest |
vitest |
javascript, typescript | β | β | β | β | listing and one-test runs verified on vitest 3.2; vitest 1, 2 and 4 were not run | ||
node --test (default) |
node-test |
javascript, typescript | β | β | β | β | node has no collect-only mode, so listing RUNS the test file once on the unmutated code; verified on node 22.23 and 24.22. Through a package script, listing, one-test runs and salvage need --test to be the scriptβs last word, since node reads options only before the first file |
||
rspec (default) |
rspec |
ruby | --fail-fast |
β | β | β | β | listing and one-test runs verified on rspec-core 3.13 (one-test runs need 3.12 or later) | |
minitest |
minitest |
ruby | β | β | minitest has no list mode and no full-name selector; rspec is the Ruby runner that lists and runs one test | ||||
phpunit (default) |
phpunit |
php | --stop-on-failure |
β | β | β | β | listing and one-test runs verified on PHPUnit 11.5 | |
cargo nextest |
cargo-nextest |
rust | β | β | β | β | |||
cargo test (default) |
cargo-test |
rust | β | β | β | β | libtest has no retries; flaky tests are named when the output is nextestβs (a wrapper that runs nextest under another command) |