Skip to content

v0.20.1

Choose a tag to compare

@github-actions github-actions released this 21 May 06:47
· 563 commits to main since this release

[0.20.1] - 2026-05-21

  • fix(tests): --help substring assertions broken under CI's FORCE_COLOR=1 — v0.20.0 release run failed at quality-gate because Click 8.2 / Typer 0.16+ renders --help output through Rich with ANSI escapes and width-driven line wraps when FORCE_COLOR=1 is set (GitHub Actions default). The user's tests/snapshot/test_cli_help.py + tests/unit/test_locate_cli.py did naive "--plain" in result.stdout / "--require-version" in result.stdout checks 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: pass color=False to runner.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 with FORCE_COLOR=1 uv run pytest tests/{snapshot,unit}/test_*cli*.py (was failing, now passes). v0.20.0 tag exists but published nothing — quality-gate is 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 ==============================