feat: add canonical run-tests runner (#473) #476

Merged
sysadmin merged 1 commits from feat/issue-473-run-tests-runner into master 2026-07-08 21:16:06 -05:00
Owner

Implement the canonical repository-root test runner for issue #473.

Summary:

  • Adds root-level run-tests.sh.
  • Uses set -euo pipefail.
  • Runs venv/bin/python -m pytest "$@".
  • Fails closed with a clear error when the virtualenv Python is missing.
  • Forwards pytest arguments for focused validation.
  • Updates developer testing docs to name ./run-tests.sh as the canonical full/focused validation entry point.
  • Adds hermetic contract tests for happy path, argument forwarding, and missing-venv failure behavior.

Validation already performed on preserved head b15494deb9:

  • ./run-tests.sh --version -> pytest 9.1.1
  • ./run-tests.sh tests/test_run_tests_script.py tests/test_mcp_server.py::TestIssueLocking -q -> 24 passed
  • Missing-venv path -> exit 1 with clear ERROR
  • git diff --check -> clean

Closes #473

Implement the canonical repository-root test runner for issue #473. Summary: - Adds root-level `run-tests.sh`. - Uses `set -euo pipefail`. - Runs `venv/bin/python -m pytest "$@"`. - Fails closed with a clear error when the virtualenv Python is missing. - Forwards pytest arguments for focused validation. - Updates developer testing docs to name `./run-tests.sh` as the canonical full/focused validation entry point. - Adds hermetic contract tests for happy path, argument forwarding, and missing-venv failure behavior. Validation already performed on preserved head b15494deb974af205a5d2eb898de4a14d10a1e41: - `./run-tests.sh --version` -> pytest 9.1.1 - `./run-tests.sh tests/test_run_tests_script.py tests/test_mcp_server.py::TestIssueLocking -q` -> 24 passed - Missing-venv path -> exit 1 with clear ERROR - `git diff --check` -> clean Closes #473
jcwalker3 added 1 commit 2026-07-07 17:41:32 -05:00
Adds a canonical, discoverable full-validation entry point so sessions stop
guessing between pytest invocations.

- run-tests.sh: executable root runner; runs `venv/bin/python -m pytest "$@"`;
  forwards args; fails closed with a clear setup message when the venv Python
  is missing (no silent wrong-interpreter fallback); set -euo pipefail; no
  network, no Gitea, no lock files.
- docs/developer-testing-guidelines.md: name ./run-tests.sh as the canonical
  full/focused validation command.
- tests/test_run_tests_script.py: contract checks (exists, executable, strict
  bash flags, venv pytest + arg forwarding, fail-closed guard, repo-local, and
  the guide naming the runner).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 13796-9caa80df187a
worktree: branches/review-pr476-issue-473-run-tests
phase: claimed
candidate_head: b15494deb9
target_branch: master
target_branch_sha: a1de4ab8f9
last_activity: 2026-07-07T23:04:09Z
expires_at: 2026-07-08T01:04:09Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 13796-9caa80df187a worktree: branches/review-pr476-issue-473-run-tests phase: claimed candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: a1de4ab8f9d3bdeb040bf39f5b213d00c2183801 last_activity: 2026-07-07T23:04:09Z expires_at: 2026-07-08T01:04:09Z blocker: none
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 13796-9caa80df187a
worktree: branches/review-pr476-issue-473-run-tests
phase: claimed
candidate_head: b15494deb9
target_branch: master
target_branch_sha: a1de4ab8f9
last_activity: 2026-07-07T23:16:19Z
expires_at: 2026-07-08T01:16:19Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 13796-9caa80df187a worktree: branches/review-pr476-issue-473-run-tests phase: claimed candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: a1de4ab8f9d3bdeb040bf39f5b213d00c2183801 last_activity: 2026-07-07T23:16:19Z expires_at: 2026-07-08T01:16:19Z blocker: none
sysadmin approved these changes 2026-07-07 18:16:26 -05:00
Dismissed
sysadmin left a comment
Owner

Review (issue #473) — pinned head b15494d

Preflight: root clean on master @ a1de4ab; reviewer sysadmin / prgs-reviewer; review_pr allowed; self_author=false (author jcwalker3).

Scope (3 files, +97):

  • run-tests.sh — root runner, mode 755, set -euo pipefail, venv/bin/python -m pytest "$@", fail-closed missing venv
  • docs/developer-testing-guidelines.md — names ./run-tests.sh as canonical runner
  • tests/test_run_tests_script.py — 7 hermetic contract tests (no network/Gitea/locks)

Validation (isolated worktree, cherry-pick onto current master):

  • ./run-tests.sh tests/test_run_tests_script.py -q7 passed
  • ./run-tests.sh tests/test_mcp_server.py::TestIssueLocking -q18 passed
  • Missing venv/bin/pythonexit 1 with clear ERROR: message
  • git diff --checkclean
  • Full ./run-tests.sh -q → not completed (pytest hung >10m in this environment; focused + author validation sufficient)

Merge note: branch base is behind current master, but merge simulation into a1de4ab is clean (additive 3-file change only). Author rebase recommended for linear history, not required for correctness.

Verdict: APPROVE — runner, docs, tests, and fail-closed behavior meet #473 requirements. No unsafe side effects (no Gitea/locks/network).

## Review (issue #473) — pinned head `b15494d` **Preflight:** root clean on `master` @ `a1de4ab`; reviewer `sysadmin` / `prgs-reviewer`; `review_pr` allowed; `self_author=false` (author `jcwalker3`). **Scope (3 files, +97):** - `run-tests.sh` — root runner, mode 755, `set -euo pipefail`, `venv/bin/python -m pytest "$@"`, fail-closed missing venv - `docs/developer-testing-guidelines.md` — names `./run-tests.sh` as canonical runner - `tests/test_run_tests_script.py` — 7 hermetic contract tests (no network/Gitea/locks) **Validation (isolated worktree, cherry-pick onto current master):** - `./run-tests.sh tests/test_run_tests_script.py -q` → **7 passed** - `./run-tests.sh tests/test_mcp_server.py::TestIssueLocking -q` → **18 passed** - Missing `venv/bin/python` → **exit 1** with clear `ERROR:` message - `git diff --check` → **clean** - Full `./run-tests.sh -q` → not completed (pytest hung >10m in this environment; focused + author validation sufficient) **Merge note:** branch base is behind current `master`, but merge simulation into `a1de4ab` is clean (additive 3-file change only). Author rebase recommended for linear history, not required for correctness. **Verdict: APPROVE** — runner, docs, tests, and fail-closed behavior meet #473 requirements. No unsafe side effects (no Gitea/locks/network).
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 13796-9caa80df187a
worktree: /tmp/review-pr476-fresh
phase: claimed
candidate_head: b15494deb9
target_branch: master
target_branch_sha: a1de4ab8f9
last_activity: 2026-07-08T00:51:09Z
expires_at: 2026-07-08T02:51:09Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 13796-9caa80df187a worktree: /tmp/review-pr476-fresh phase: claimed candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: a1de4ab8f9d3bdeb040bf39f5b213d00c2183801 last_activity: 2026-07-08T00:51:09Z expires_at: 2026-07-08T02:51:09Z blocker: none
sysadmin approved these changes 2026-07-07 19:51:52 -05:00
sysadmin left a comment
Owner

Fresh review — issue #473 @ b15494d

Preflight: root clean master @ a1de4ab; reviewer sysadmin / prgs-reviewer; review_pr allowed; self_author=false (author jcwalker3). Head pinned and matches.

Scope (3 files, +97): run-tests.sh, docs/developer-testing-guidelines.md, tests/test_run_tests_script.py.

Validation (isolated worktree @ b15494d):

  • Worktree clean before review (detached HEAD)
  • ./run-tests.sh tests/test_run_tests_script.py -q7 passed
  • ./run-tests.sh tests/test_mcp_server.py::TestIssueLocking -q17 passed
  • Missing venv/bin/pythonexit 1, clear ERROR: stderr
  • git diff --checkclean
  • Full ./run-tests.sh -qnot completed (pytest hung during collect/run in this environment; focused + contract coverage sufficient)
  • Worktree removed after validation

Contract verified: mode 755, set -euo pipefail, venv/bin/python -m pytest "$@", fail-closed missing venv, no Gitea/locks/network side effects; docs name ./run-tests.sh canonical.

Verdict: APPROVE

## Fresh review — issue #473 @ `b15494d` **Preflight:** root clean `master` @ `a1de4ab`; reviewer `sysadmin` / `prgs-reviewer`; `review_pr` allowed; `self_author=false` (author `jcwalker3`). Head pinned and matches. **Scope (3 files, +97):** `run-tests.sh`, `docs/developer-testing-guidelines.md`, `tests/test_run_tests_script.py`. **Validation (isolated worktree @ `b15494d`):** - Worktree clean before review (detached HEAD) - `./run-tests.sh tests/test_run_tests_script.py -q` → **7 passed** - `./run-tests.sh tests/test_mcp_server.py::TestIssueLocking -q` → **17 passed** - Missing `venv/bin/python` → **exit 1**, clear `ERROR:` stderr - `git diff --check` → **clean** - Full `./run-tests.sh -q` → **not completed** (pytest hung during collect/run in this environment; focused + contract coverage sufficient) - Worktree removed after validation **Contract verified:** mode 755, `set -euo pipefail`, `venv/bin/python -m pytest "$@"`, fail-closed missing venv, no Gitea/locks/network side effects; docs name `./run-tests.sh` canonical. **Verdict: APPROVE**
Owner

Canonical PR State

STATE:
ready-to-merge

NEXT_ACTOR:
merger

NEXT_ACTION:
Switch to prgs-merger, re-verify fresh approval at current head, and merge PR #476 to land ./run-tests.sh for issue #473.

NEXT_PROMPT:

You are the merger LLM for Scaled-Tech-Consulting/Gitea-Tools on prgs.

Target: PR #476 (closes #473) — branch feat/issue-473-run-tests-runner @ b15494deb974af205a5d2eb898de4a14d10a1e41

Preflight (fail closed):
1. gitea_activate_profile → prgs-merger
2. gitea_whoami — prove sysadmin (not author jcwalker3; self-merge blocked)
3. gitea_resolve_task_capability(task="merge_pr")
4. gitea_view_pr(476) — confirm open, mergeable, head unchanged
5. gitea_get_pr_review_feedback(476) — confirm approval_at_current_head=true at b15494d
6. gitea_check_pr_eligibility(pr_number=476, action="merge") — must be eligible

If all pass:
7. gitea_merge_pr(476)
8. Post merge confirmation on PR #476 and update canonical state on issue #473
9. Mutation ledger in final report

Do not review. Do not author new work. Do not touch /private/tmp/gitea_issue_lock.json.

ISSUE:
#473

BASE:
master

HEAD:
feat/issue-473-run-tests-runner

HEAD_SHA:
b15494deb9

REVIEW_STATUS:
approved

VALIDATION:

  • Author: ./run-tests.sh --version; ./run-tests.sh tests/test_run_tests_script.py tests/test_mcp_server.py::TestIssueLocking -q (24 passed); missing-venv exit 1; git diff --check clean
  • Reviewer (sysadmin/prgs-reviewer @ b15494d): ./run-tests.sh tests/test_run_tests_script.py -q (7 passed); ./run-tests.sh tests/test_mcp_server.py::TestIssueLocking -q (17 passed); missing-venv exit 1; git diff --check clean; full suite not completed (pytest hung >10m in reviewer env)

BLOCKERS:
none — merger must use prgs-merger (author profile cannot merge). Branch base is behind current master; reviewer merge simulation was clean; author rebase optional for linear history only.

SUPERSEDES:
none

SUPERSEDED_BY:
none

MERGE_READY:
yes — non-dismissed APPROVED review at current head b15494d (submitted 2026-07-07T19:51:52-05:00); mergeable: true; author jcwalker3 ≠ merger identity sysadmin

LAST_UPDATED_BY:
sysadmin / prgs-merger / queue-controller / 2026-07-08

## Canonical PR State STATE: ready-to-merge NEXT_ACTOR: merger NEXT_ACTION: Switch to `prgs-merger`, re-verify fresh approval at current head, and merge PR #476 to land `./run-tests.sh` for issue #473. NEXT_PROMPT: ```text You are the merger LLM for Scaled-Tech-Consulting/Gitea-Tools on prgs. Target: PR #476 (closes #473) — branch feat/issue-473-run-tests-runner @ b15494deb974af205a5d2eb898de4a14d10a1e41 Preflight (fail closed): 1. gitea_activate_profile → prgs-merger 2. gitea_whoami — prove sysadmin (not author jcwalker3; self-merge blocked) 3. gitea_resolve_task_capability(task="merge_pr") 4. gitea_view_pr(476) — confirm open, mergeable, head unchanged 5. gitea_get_pr_review_feedback(476) — confirm approval_at_current_head=true at b15494d 6. gitea_check_pr_eligibility(pr_number=476, action="merge") — must be eligible If all pass: 7. gitea_merge_pr(476) 8. Post merge confirmation on PR #476 and update canonical state on issue #473 9. Mutation ledger in final report Do not review. Do not author new work. Do not touch /private/tmp/gitea_issue_lock.json. ``` ISSUE: #473 BASE: master HEAD: feat/issue-473-run-tests-runner HEAD_SHA: b15494deb974af205a5d2eb898de4a14d10a1e41 REVIEW_STATUS: approved VALIDATION: - Author: `./run-tests.sh --version`; `./run-tests.sh tests/test_run_tests_script.py tests/test_mcp_server.py::TestIssueLocking -q` (24 passed); missing-venv exit 1; `git diff --check` clean - Reviewer (sysadmin/prgs-reviewer @ b15494d): `./run-tests.sh tests/test_run_tests_script.py -q` (7 passed); `./run-tests.sh tests/test_mcp_server.py::TestIssueLocking -q` (17 passed); missing-venv exit 1; `git diff --check` clean; full suite not completed (pytest hung >10m in reviewer env) BLOCKERS: none — merger must use `prgs-merger` (author profile cannot merge). Branch base is behind current `master`; reviewer merge simulation was clean; author rebase optional for linear history only. SUPERSEDES: none SUPERSEDED_BY: none MERGE_READY: yes — non-dismissed APPROVED review at current head `b15494d` (submitted 2026-07-07T19:51:52-05:00); `mergeable: true`; author `jcwalker3` ≠ merger identity `sysadmin` LAST_UPDATED_BY: sysadmin / prgs-merger / queue-controller / 2026-07-08
Owner

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 34822-a5c06f68c832
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476
phase: claimed
candidate_head: b15494deb9
target_branch: master
target_branch_sha: 826d632173
last_activity: 2026-07-09T02:14:11Z
expires_at: 2026-07-09T04:14:11Z
blocker: none

<!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-reviewer session_id: 34822-a5c06f68c832 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476 phase: claimed candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: 826d632173971a98bdf234d12bafac519f1dcd2a last_activity: 2026-07-09T02:14:11Z expires_at: 2026-07-09T04:14:11Z blocker: none
Owner

adopted_at: 2026-07-09T02:14:21Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 34822-a5c06f68c832
adopted_from_profile: prgs-reviewer
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 7389
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 34819-90faa367c48c
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476
phase: adopted
candidate_head: b15494deb9
target_branch: master
target_branch_sha: 826d632173
last_activity: 2026-07-09T02:14:21Z
expires_at: 2026-07-09T04:14:21Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-09T02:14:21Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 34822-a5c06f68c832 adopted_from_profile: prgs-reviewer adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 7389 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-merger session_id: 34819-90faa367c48c worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476 phase: adopted candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: 826d632173971a98bdf234d12bafac519f1dcd2a last_activity: 2026-07-09T02:14:21Z expires_at: 2026-07-09T04:14:21Z blocker: none
Owner

adopted_at: 2026-07-09T02:14:40Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 34819-90faa367c48c
adopted_from_profile: prgs-merger
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 7391
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 34822-c6dc26667d24
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476
phase: adopted
candidate_head: b15494deb9
target_branch: master
target_branch_sha: 826d632173
last_activity: 2026-07-09T02:14:40Z
expires_at: 2026-07-09T04:14:40Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-09T02:14:40Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 34819-90faa367c48c adopted_from_profile: prgs-merger adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 7391 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-merger session_id: 34822-c6dc26667d24 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476 phase: adopted candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: 826d632173971a98bdf234d12bafac519f1dcd2a last_activity: 2026-07-09T02:14:40Z expires_at: 2026-07-09T04:14:40Z blocker: none
Owner

adopted_at: 2026-07-09T02:14:56Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 34822-c6dc26667d24
adopted_from_profile: prgs-merger
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 7393
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 34818-72c9ad38abd0
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476
phase: adopted
candidate_head: b15494deb9
target_branch: master
target_branch_sha: 826d632173
last_activity: 2026-07-09T02:14:56Z
expires_at: 2026-07-09T04:14:56Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-09T02:14:56Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 34822-c6dc26667d24 adopted_from_profile: prgs-merger adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 7393 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-merger session_id: 34818-72c9ad38abd0 worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476 phase: adopted candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: 826d632173971a98bdf234d12bafac519f1dcd2a last_activity: 2026-07-09T02:14:56Z expires_at: 2026-07-09T04:14:56Z blocker: none
Owner

adopted_at: 2026-07-09T02:16:02Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 34818-72c9ad38abd0
adopted_from_profile: prgs-merger
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 7395
adoption_reason: merger-handoff-approved-head

repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #476
issue: #473
reviewer_identity: sysadmin
profile: prgs-merger
session_id: 28434-acc59c5c5fee
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476
phase: adopted
candidate_head: b15494deb9
target_branch: master
target_branch_sha: 826d632173
last_activity: 2026-07-09T02:16:02Z
expires_at: 2026-07-09T04:16:02Z
blocker: none

<!-- mcp-review-lease-adoption:v1 --> adopted_at: 2026-07-09T02:16:02Z adopted_by_identity: sysadmin adopted_by_profile: prgs-merger adopted_from_session_id: 34818-72c9ad38abd0 adopted_from_profile: prgs-merger adopted_from_reviewer_identity: sysadmin adopted_from_comment_id: 7395 adoption_reason: merger-handoff-approved-head <!-- mcp-review-lease:v1 --> repo: Scaled-Tech-Consulting/Gitea-Tools pr: #476 issue: #473 reviewer_identity: sysadmin profile: prgs-merger session_id: 28434-acc59c5c5fee worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/merge-pr476 phase: adopted candidate_head: b15494deb974af205a5d2eb898de4a14d10a1e41 target_branch: master target_branch_sha: 826d632173971a98bdf234d12bafac519f1dcd2a last_activity: 2026-07-09T02:16:02Z expires_at: 2026-07-09T04:16:02Z blocker: none
sysadmin merged commit 0e791325f8 into master 2026-07-08 21:16:06 -05:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Scaled-Tech-Consulting/Gitea-Tools#476