You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The mechanical-sequence extractions under #163 (and the existing sync-base-branch.py from #162) are landing without automated tests. Their behaviour is currently validated by hand each time a skill workflow is exercised end-to-end. That works while the surface is small and the scripts are new, but the longer it stays that way, the more behavioural drift can creep in unnoticed — a fix to one script silently changing the contract another caller depends on.
Why it Matters
Regression safety. Each script wraps a permission-sensitive shell sequence — silent breakage in argument handling, exit codes, or error messages is exactly the kind of thing manual exercise will miss until a real workflow hits the edge case.
Documentation by example. A small exit-code test file is the most precise record of "what does this script promise its callers" — much better than re-reading the skill markdown.
Cheap once the shape stabilises. Each script is ~50 lines with a small number of branches. The test cost is low; the deferred-payoff risk is the only reason not to write them on day one.
General Approach
After the extracted scripts have lived in production for a few weeks (long enough to surface real-world usage patterns and let their shape settle), add minimal exit-code tests for each script under tests/.
Scope per script:
One success-path test (mock the underlying gh / git invocation, assert exit 0 and that the command was constructed correctly).
One test per documented non-zero exit code (bad args, missing input, subprocess failure).
No need for full integration tests against live GitHub — the goal is contract pinning, not end-to-end coverage.
Use the existing tests/test_sync.py as a structural reference (uses unittest, lives at repo root). Either add one file per script (tests/test_post_issue_comment.py, etc.) or group by skill (tests/test_github_agile_scripts.py) — pick whichever is lighter once the count is known.
Wire into whatever test runner the repo settles on (currently python3 -m unittest discover tests works).
Complexity
Verification / QA effort: trivial
Tests are self-verifying by definition; the only manual step is confirming the test runner picks them up.
Acceptance Criteria
Every Python script under skills/github-agile/scripts/ (and any sibling group directories created by then) has at least one success-path test and one test per documented non-zero exit code.
Tests live under tests/ and run via the project's standard test command (currently python3 -m unittest discover tests).
Tests do not require network access or a live GitHub repo — subprocess.run is mocked or the script is invoked in a temp git init directory as appropriate.
Problem to Fix
The mechanical-sequence extractions under #163 (and the existing
sync-base-branch.pyfrom #162) are landing without automated tests. Their behaviour is currently validated by hand each time a skill workflow is exercised end-to-end. That works while the surface is small and the scripts are new, but the longer it stays that way, the more behavioural drift can creep in unnoticed — a fix to one script silently changing the contract another caller depends on.Why it Matters
General Approach
After the extracted scripts have lived in production for a few weeks (long enough to surface real-world usage patterns and let their shape settle), add minimal exit-code tests for each script under
tests/.Scope per script:
gh/gitinvocation, assert exit 0 and that the command was constructed correctly).Use the existing
tests/test_sync.pyas a structural reference (usesunittest, lives at repo root). Either add one file per script (tests/test_post_issue_comment.py, etc.) or group by skill (tests/test_github_agile_scripts.py) — pick whichever is lighter once the count is known.Wire into whatever test runner the repo settles on (currently
python3 -m unittest discover testsworks).Complexity
Verification / QA effort: trivial
Tests are self-verifying by definition; the only manual step is confirming the test runner picks them up.
Acceptance Criteria
skills/github-agile/scripts/(and any sibling group directories created by then) has at least one success-path test and one test per documented non-zero exit code.tests/and run via the project's standard test command (currentlypython3 -m unittest discover tests).subprocess.runis mocked or the script is invoked in a tempgit initdirectory as appropriate.