Repository navigation
v0.20.1
[0.20.1] - 2026-05-21
- fix(tests):
--helpsubstring assertions broken under CI'sFORCE_COLOR=1—v0.20.0release run failed atquality-gatebecause Click 8.2 / Typer 0.16+ renders--helpoutput through Rich with ANSI escapes and width-driven line wraps whenFORCE_COLOR=1is set (GitHub Actions default). The user'stests/snapshot/test_cli_help.py+tests/unit/test_locate_cli.pydid naive"--plain" in result.stdout/"--require-version" in result.stdoutchecks that worked on a normal local TTY but broke when Rich inserted ANSI sequences mid-token or wrapped the option name across a panel border. Fix: passcolor=Falsetorunner.invoke()AND strip residual ANSI via a_ANSI_RE.sub("", out)belt-and-suspenders before substring assertions. Snapshot fixtures + e2e sandboxes unchanged; help-text wording unchanged. Reproduced locally withFORCE_COLOR=1 uv run pytest tests/{snapshot,unit}/test_*cli*.py(was failing, now passes). v0.20.0 tag exists but published nothing —quality-gateis the first job, so build / publish-testpypi / publish-pypi / github-release all skipped on the failed run.
Boundary tests (advisory)
Layer 1 of PLAN-test-fidelity-gap. Pure parser checks; advisory only.
Status: ✅ PASS
============================= test session starts ==============================
platform linux -- Python 3.12.13, pytest-9.0.3, pluggy-1.6.0
rootdir: /home/runner/work/harness-maker/harness-maker
configfile: pyproject.toml
plugins: anyio-4.13.0, asyncio-1.3.0, respx-0.23.1
asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function
collected 49 items
tests/integration/test_boundary_codex_toml.py ........... [ 22%]
tests/integration/test_boundary_cursor_mdc.py ....... [ 36%]
tests/integration/test_boundary_harness_yaml.py ........ [ 53%]
tests/integration/test_boundary_hooks_json.py ......... [ 71%]
tests/integration/test_boundary_meta.py ....... [ 85%]
tests/integration/test_boundary_settings_json.py ....... [100%]
============================== 49 passed in 3.51s ==============================