| name | running-unit-tests |
| description | Run formatting, linting, and tests; then iteratively fix failures until the branch is green. Use after implementing a feature or fixing a bug to get the branch ready to push. Triggers: "tests", "run tests", "lint", "format", "CI red", "fix failing tests".
|
| context | fork |
Running and Fixing Tests
Run ./run-tests.sh at the end of each feature, bug fix, or refactor to ensure the branch is ready to push.
It activates .venv, runs uv sync, installs pre-commit hooks, formats with ruff format,
auto-fixes with ruff check --fix, then runs uv run --frozen pytest.
Workflow
- Inspect what changed.
git status --short, git diff --stat, git diff.
- Run the validation flow.
- Preferred:
./run-tests.sh (full flow above).
- Tests only:
uv run --frozen pytest.
- Pre-commit explicitly:
uv run --frozen pre-commit run --all-files.
- Loop until clean.
- Group failures by root cause.
- Apply minimal, readable fixes; keep behavior stable unless tests show it's incorrect.
- Add or update focused tests for each bug fix.
- Re-run
./run-tests.sh (or uv run --frozen pytest for quicker cycles) after each batch.
- Final readiness check. Confirm
./run-tests.sh passes cleanly. Optionally re-run pre-commit.
Summarize what was fixed and list any remaining risks before push.
Setup notes
- First-time setup: if
.venv/ doesn't exist, run uv sync once, or run ./run-tests.sh.
- Different virtualenv: set
SKIP_VENV=1 and ensure python3 resolves to the desired environment.
- Faster loops:
uv run --frozen pytest -k <pattern> -q to target tests, then finish with full ./run-tests.sh.