diff --git a/test/forge-backends.test.sh b/test/forge-backends.test.sh index e34bfc1..ad1bd65 100644 --- a/test/forge-backends.test.sh +++ b/test/forge-backends.test.sh @@ -600,6 +600,16 @@ FAKE_REVIEWS='[ review_requests_stub check "supersedes 'a stale approval still owes a verdict': one never re-requested is not requested" 0 "" \ eq "" forge_pr_review_requests 96 + +# rig!146 after merge: all three panelists submitted, so the reviews endpoint +# carries no REQUEST_REVIEW row even though requested_reviewers stayed stale. +FAKE_REVIEWS_N=3 +FAKE_REVIEWS='[ + {"user":{"login":"kimi-bot"},"state":"APPROVED","commit_id":"merged","submitted_at":"2026-08-02T14:05:01Z"}, + {"user":{"login":"glm-bot"},"state":"APPROVED","commit_id":"merged","submitted_at":"2026-08-02T14:14:45Z"}, + {"user":{"login":"claude-bot"},"state":"APPROVED","commit_id":"merged","submitted_at":"2026-08-02T14:03:39Z"} +]' +review_requests_stub check "supersedes 'the never-cleared forgejo field collapses to who actually owes': a merged PR yields nobody" 0 "" \ eq "" forge_pr_review_requests 146 @@ -637,14 +647,21 @@ check "supersedes 'a Forgejo request row is not an answer and leaves the login o . "$ROOT/lib/forge-github.sh" # shellcheck disable=SC2317 # invoked indirectly, by forge_api gh() { - case "$1 $2" in - "api repos/o/r/pulls/55") - jq -r '.requested_reviewers[].login' <<'JSON' + [ "$1" = api ] || return 1 + shift + local jqexpr="" endpoint="" + while [ $# -gt 0 ]; do + case "$1" in + --jq) jqexpr="$2"; shift ;; + -*) ;; + *) [ -n "$endpoint" ] || endpoint="$1" ;; + esac + shift + done + [ "$endpoint" = repos/o/r/pulls/55 ] || return 1 + jq -r "$jqexpr" <<'JSON' {"requested_reviewers":[{"login":"glm-bot"},{"login":"claude-bot"}]} JSON - ;; - *) return 1 ;; - esac } check "github returns requested_reviewers from the PR object unchanged" 0 "" \ eq $'claude-bot\nglm-bot' forge_pr_review_requests 55