Skip to main content

Universal, language-aware unit test runner.

Project description

universal-test-runner

The universal test runner is a zero-configuration, language-aware way to run your unit tests.

If you've run pytest in this folder before, this tool invokes pytest. Rust project? cargo test coming right up. Is also clever about running all your go module tests (regardless of how they're organized). No matter the command, all args are passed directly into the test runner.

Currently supports 5 languages, with more on the way.

Installation

UTR is available on PyPi:

pipx install universal-test-runner

Design Philosophy

  1. The runner itself should need no configuration - it Just Works
  2. It should pass all arguments through to the underlying test command
  3. It should have wide language and test runner support; please open an issue if your use case isn't supported!

Usage

Once installed, the command t will be available. Run that in a folder with tests and it'll do its best to run your unit tests.

t
% t
====================== test session starts ======================
platform darwin -- Python 3.11.0, pytest-7.3.1, pluggy-1.0.0
rootdir: /Users/david/projects/universal-test-runner
collected 37 items

tests/test_matchers.py .........................          [ 67%]
tests/test_runner.py ............                         [100%]

====================== 37 passed in 0.04s =======================

If it can't find

Supported Languages

  1. Python
    • uses pytest if you've run pytest before
    • looks for a tests.py file if not
  2. Rust
    • cargo test
  3. Go
    • if there's a X_test.go, then runs a plain go test
    • if you pass any args at all, runs go test your-args-here
    • otherwise, runs go test ./...
  4. Elixir
    • runs mix test
  5. Clojure
    • runs lein test

Upcoming Languages

  1. JS/TS
    • if there's a package.json and it has a test script, runs [package manager] test, where [package manager] is:
      • yarn if there's a yarn.lock
      • pnpm if there's a pnpm-lock.yaml
      • npm otherwise
  2. Makefile
    • looks for a line that starts with test:

Motivation

I work in a few languages at a time, so I've actually had a version of this in my dotfiles for a while. Also, as I've been doing Exercism's #12in23 program, I'm really switching languages. It's nice not to have to re-learn any muscle memory. Plus, increasingly complex bash was holding me back.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

universal_test_runner-0.1.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

universal_test_runner-0.1.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file universal_test_runner-0.1.0.tar.gz.

File metadata

  • Download URL: universal_test_runner-0.1.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.0

File hashes

Hashes for universal_test_runner-0.1.0.tar.gz
Algorithm Hash digest
SHA256 bfe6511d8434aa42b382e3e2c78aabce7f1ea1c703febe8f8a29fde3301789ba
MD5 085e46790edba5fa9bbf291a843f37f7
BLAKE2b-256 03930934a152510f16b422732de2c670517ebb7f16f5e05ff7ea71d4ec853cce

See more details on using hashes here.

File details

Details for the file universal_test_runner-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for universal_test_runner-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1f3f5be033ec93512b0885b46a75427c5079e021e75c30262a17a16fe72d9446
MD5 cecddd1d9a3c766701a8526cf747e1d4
BLAKE2b-256 82e4d3a6b5515bbfd91a2113adcfab2be4bcfab29345d20f60dac877342d9b6e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page