test(#154): mock gh in test sandboxes to remove live-tracker dependency#156
Merged
atlas-apex merged 1 commit intoMay 3, 2026
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
.claude/hooks/tests/_lib-mock-gh.sh— a tiny gh-shim helper that interceptsgh issue view <N> ... --json ...calls inside hook test sandboxes and returns synthetic{"number":N,"state":"OPEN"}. Pass-through for anyghcall it doesn't intercept.test_single_closes_per_pr.shandtest_validate_pr_required_sections.sh. Both previously failed every case (0/13 and 0/8) because their PR titles reference#114/#113, whichvalidate-pr-create.shrejects when those issues are CLOSED — and they are now closed upstream.mock_gh_set_state <sb> <num> <state>helper is available for future tests that need to exercise the CLOSED-issue branch of the validator. Not used in this PR — neither test was scoped to that branch originally.Closes #154.
Testing
To trace intercepted shim calls during debug:
MOCK_GH_TRACE=1 bash .claude/hooks/tests/test_single_closes_per_pr.sh.Glossary
ghbinary placed onPATHthat intercepts a known subset of subcommands and returns synthetic responses. Realghisexec'd for everything not intercepted.mktemp'd directory each test case populates with a minimal git repo, the hook under test, and supporting libs, then runs the hook against. Isolates filesystem state between cases.validate-pr-create.shPreToolUseforgh pr createand refuses when the PR title references an issue that doesn't exist OR is CLOSED in the tracker repo.