@@ -58,6 +58,7 @@ if [ "$ACTION" = list ]; then
5858elif [ "$FIELDS" = jobs ]; then
5959 [ "$FAKE_SCENARIO" != jobs-unavailable ] || exit 1
6060 INPUT="$FAKE_DIR/jobs"
61+ [ ! -f "$FAKE_DIR/jobs-$RUN" ] || INPUT="$FAKE_DIR/jobs-$RUN"
6162else
6263 [ "$RUN" = 101 ] || exit 64
6364 INPUT="$FAKE_DIR/run"
@@ -172,6 +173,42 @@ cancelled() {
172173 expect_rc 0
173174 [ ! -s " $OUT " ] || fail ' duplicate cancelled job'
174175}
176+ add_newer_sibling () {
177+ jq ' .status = "completed" | .conclusion = "cancelled"' " $FAKE_DIR /run" > " $FAKE_DIR /old"
178+ jq ' .databaseId = 102 | .createdAt = "2026-10-14T10:01:00Z" | .status = "in_progress" | .conclusion = ""' " $FAKE_DIR /run" > " $FAKE_DIR /new"
179+ jq -s . " $FAKE_DIR /old" " $FAKE_DIR /new" > " $FAKE_DIR /runs"
180+ printf ' {"jobs":[]}\n' > " $FAKE_DIR /jobs-102"
181+ }
182+ superseded_cancelled_run () {
183+ add_newer_sibling
184+ printf ' {"jobs":[{"databaseId":1003,"name":"cancelled matrix job","conclusion":"cancelled"}]}\n' > " $FAKE_DIR /jobs"
185+ invoke
186+ expect_rc 0
187+ [ ! -s " $OUT " ] || fail ' superseded cancellation was reported'
188+ }
189+ newest_cancelled_run () {
190+ jq ' .status = "completed" | .conclusion = "cancelled"' " $FAKE_DIR /run" > " $FAKE_DIR /new"
191+ mv " $FAKE_DIR /new" " $FAKE_DIR /run"
192+ jq -s . " $FAKE_DIR /run" > " $FAKE_DIR /runs"
193+ printf ' {"jobs":[{"databaseId":1003,"name":"cancelled matrix job","conclusion":"cancelled"}]}\n' > " $FAKE_DIR /jobs"
194+ invoke
195+ expect_rc 1
196+ contains ' job: cancelled matrix job (cancelled, id: 1003)'
197+ contains ' conclusion: cancelled'
198+ }
199+ failed_job () {
200+ printf ' {"jobs":[{"databaseId":1004,"name":"unit tests","conclusion":"failure"}]}\n' > " $FAKE_DIR /jobs"
201+ invoke
202+ expect_rc 1
203+ contains ' job: unit tests (failure, id: 1004)'
204+ }
205+ superseded_gate () {
206+ add_newer_sibling
207+ printf ' {"jobs":[{"databaseId":1005,"name":"CI (required)","conclusion":"failure"},{"databaseId":1006,"name":"unit tests","conclusion":"cancelled"}]}\n' > " $FAKE_DIR /jobs"
208+ invoke
209+ expect_rc 0
210+ [ ! -s " $OUT " ] || fail ' superseded gate or cancellation was reported'
211+ }
175212multiple_jobs () {
176213 printf ' {"jobs":[{"databaseId":1001,"name":"one","conclusion":"failure"},{"databaseId":1003,"name":"two","conclusion":"cancelled"},{"databaseId":1005,"name":"three","conclusion":"failure"}]}\n' > " $FAKE_DIR /jobs"
177214 invoke
375412
376413run_test ' mid-run failed job is reported once' mid_run
377414run_test ' cancelled job is reported once' cancelled
415+ run_test ' superseded cancelled run is silent' superseded_cancelled_run
416+ run_test ' newest cancelled run is reported' newest_cancelled_run
417+ run_test ' failed job is still reported' failed_job
418+ run_test ' gate in superseded run is silent' superseded_gate
378419run_test ' all failed jobs in a poll are reported once' multiple_jobs
379420run_test ' run completion is a separate report' completion
380421run_test ' successful run completion is silent' success
0 commit comments