Skip to content

Add support for more test runners and linters #3

Description

@amrit110

backcheck can only verify a "tests pass" claim if it recognises the command that ran. Every
runner it does not know is a session where an honest claim looks unsupported, or a fabricated
one slips through.

This is the best first contribution to the project: self-contained, immediately useful, and the
same three steps every time.

Already supported

pytest, unittest, tox, nox, cargo test, cargo nextest, go test, jest, vitest, mocha, ava,
bun test, npm/yarn/pnpm test, rspec, phpunit, dotnet test, maven, gradle, ctest, make test —
plus mypy, pyright, tsc, ruff, eslint, clippy, flake8, pylint, golangci-lint, biome.

Wanted

Pick any one and open a PR — no need to claim it first, and one runner per PR is ideal.

  • deno test
  • swift test
  • xcodebuild test / xctest
  • elixirmix test
  • scalasbt test
  • haskellstack test, cabal test
  • zig build test
  • juliaPkg.test()
  • Rtestthat, devtools::test()
  • perlprove
  • bats (bash)
  • catch2 / gtest binaries
  • k6 / playwright test / cypress run
  • terraform validate, tflint
  • shellcheck, hadolint, yamllint
  • rubocop, standardrb
  • detekt, ktlint, spotless

How

All of it lives in src/runners.rs. See
CONTRIBUTING.md for the full walkthrough.

  1. Recognise the command in classify() — return the CheckKind and a short runner name.
  2. Read its outcome in parse_outcome() — pull pass/fail out of the summary line.
  3. Add a test with real passing and failing output, copied from an actual run.

The one rule

Return Outcome::Unknown when the output does not clearly say. A wrong "verified" is far more
damaging than an honest "could not tell" — backcheck is only worth installing if its
"supported" verdicts mean something.

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueGood for newcomershelp wantedExtra attention is neededrunnerSupport for a new test runner or linter

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions