Problem
The repo has a real test suite — 30 unittest tests across tests/test_auth.py, tests/test_curriculum.py, tests/test_sqlite_store.py, tests/test_young.py, covering the cache-completeness logic that PR #17 added — but no workflow ever runs them:
.github/workflows/ruff.yml only runs ruff check.
.github/workflows/build.yml runs main.py against production upstreams; it never touches tests/.
So a PR that breaks the tests (or adds a regression the tests were written to catch, e.g. the JW chunk-completeness rules) merges green as long as lint passes and the one daily production build happens to succeed.
Verified locally with the repo venv: python -m unittest discover -s tests → Ran 30 tests … OK (0.05s, no network needed — they use :memory: SQLite and httpx.MockTransport).
Suggested fix
Add a test job (or extend ruff.yml) along these lines:
- name: Run tests
run: uv run python -m unittest discover -s tests -p 'test_*.py'
uv sync --group dev already happens in ruff.yml; unittest is stdlib so no new dependency is required. Optionally add pytest/coverage later, but the stdlib runner is enough today.
Problem
The repo has a real test suite — 30 unittest tests across
tests/test_auth.py,tests/test_curriculum.py,tests/test_sqlite_store.py,tests/test_young.py, covering the cache-completeness logic that PR #17 added — but no workflow ever runs them:.github/workflows/ruff.ymlonly runsruff check..github/workflows/build.ymlrunsmain.pyagainst production upstreams; it never touchestests/.So a PR that breaks the tests (or adds a regression the tests were written to catch, e.g. the JW chunk-completeness rules) merges green as long as lint passes and the one daily production build happens to succeed.
Verified locally with the repo venv:
python -m unittest discover -s tests→Ran 30 tests … OK(0.05s, no network needed — they use:memory:SQLite andhttpx.MockTransport).Suggested fix
Add a test job (or extend
ruff.yml) along these lines:uv sync --group devalready happens inruff.yml; unittest is stdlib so no new dependency is required. Optionally addpytest/coveragelater, but the stdlib runner is enough today.