tooling: pr-reviews polls past the second poll; stale harness lock names its fix
improvise-7epn: two cases on the one-tick-per-read clock. One resolves on poll 3, and one times out after polling up to the deadline. Replacing the post-poll deadline check with `break` now fails exactly those two (23 passed, 2 failed), where before it left the suite 23/23. improvise-lnsh: when `cargo metadata --locked` refuses the opfs-contract lock, build.sh now says not to remove --locked and names `cargo update -w --manifest-path harness/opfs-contract/Cargo.toml`. Checked by hand against a lock with pest pinned to 2.9.1. Evidence is in context/test-evidence/tooling.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VdfEGXA7aJ6ftMsCc9PJze
This commit is contained in:
@@ -217,6 +217,39 @@ got=$?
|
||||
[ "$got" = 0 ] && ok "a second passing before the first re-poll does not skip it" \
|
||||
|| bad "a second passing before the first re-poll does not skip it" "exit $got, wanted 0"
|
||||
|
||||
# Every fixture above resolves by poll 2, so a loop that stops after one
|
||||
# re-poll passed them all (improvise-7epn). This one resolves on poll 3.
|
||||
d3="$work/arrives-third"
|
||||
for n in 1 2; do
|
||||
mk "$d3" "$n.pr.json" <<EOF
|
||||
{"headRefOid":"$HEAD","reviews":[]}
|
||||
EOF
|
||||
mk "$d3" "$n.inline.json" <<'EOF'
|
||||
[]
|
||||
EOF
|
||||
mk "$d3" "$n.issue.json" <<'EOF'
|
||||
[]
|
||||
EOF
|
||||
done
|
||||
cp -f "$d/last.pr.json" "$d/last.inline.json" "$d/last.issue.json" "$d3/"
|
||||
rm -f "$d3/.poll" "$work/ticks"
|
||||
CLOCK_TICKS="$work/ticks" PATH="$clock:$PATH" PR_REVIEWS_FIXTURE_DIR="$d3" \
|
||||
"$REVIEWS" 1 --wait 10 --interval 1 > "$work/out" 2>&1
|
||||
got=$?
|
||||
polls=$(cat "$d3/.poll" 2>/dev/null || echo 0)
|
||||
[ "$got" = 0 ] && [ "$polls" = 3 ] && ok "a review arriving on the third poll is seen" \
|
||||
|| bad "a review arriving on the third poll is seen" "exit $got after $polls polls, wanted 0 after 3"
|
||||
|
||||
# The timeout path: nothing ever arrives, so --wait 5 on a clock that ticks
|
||||
# once per read must keep polling until the deadline, then report exit 1.
|
||||
rm -f "$work/empty/.poll" "$work/ticks"
|
||||
CLOCK_TICKS="$work/ticks" PATH="$clock:$PATH" PR_REVIEWS_FIXTURE_DIR="$work/empty" \
|
||||
"$REVIEWS" 1 --wait 5 --interval 1 > "$work/out" 2>&1
|
||||
got=$?
|
||||
polls=$(cat "$work/empty/.poll" 2>/dev/null || echo 0)
|
||||
[ "$got" = 1 ] && [ "$polls" -ge 5 ] && ok "--wait keeps polling until its deadline" \
|
||||
|| bad "--wait keeps polling until its deadline" "exit $got after $polls polls, wanted 1 after 5 or more"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# `gh api --paginate` emits one array PER PAGE, so a thread past the page size
|
||||
# arrives as several concatenated documents. Passing that straight to
|
||||
|
||||
Reference in New Issue
Block a user