Skip to content

Commit 06eb9dd

Browse files
committed
Annotate failing tests in the test legs
The macOS and Windows `test` legs (merge queue, main, nightly) and `test-release` only leave "Process completed with exit code 1" when a test fails. The panic sits thousands of lines above the end of the log, past the 5,000-line tail the log API returns, so a failure can't be diagnosed after the fact. The 2026-10-30 nightly lost e2e_golang_workspace_build on macOS this way. Tee each leg's output and run scripts/ci-test-failures.py on failure, as `coverage` already does, so each failing test's panic becomes an annotation and lands in the job summary. Exit status is unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011f9aeNzimDA4mfWzq1NoZa
1 parent 5ca5623 commit 06eb9dd

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -568,8 +568,16 @@ jobs:
568568
TEST_SHARD: ${{ matrix.shard }}
569569
# This leg's share of `cargo test --workspace --no-fail-fast`; the
570570
# shards together run exactly that selection (test_ci_test_shard.py).
571+
# A failing test's panic becomes an annotation, as in `coverage`
572+
# (scripts/ci-test-failures.py).
571573
run: |
572-
python3 scripts/ci-test-shard.py "$TEST_SHARD" 2
574+
set -o pipefail
575+
python3 scripts/ci-test-shard.py "$TEST_SHARD" 2 \
576+
2>&1 | tee "$RUNNER_TEMP/tests.log" || {
577+
status=$?
578+
python3 scripts/ci-test-failures.py "$RUNNER_TEMP/tests.log" || true
579+
exit "$status"
580+
}
573581
574582
test-release:
575583
# Each PR and main push runs the complete release-mode suite. The merge
@@ -620,7 +628,15 @@ jobs:
620628
env:
621629
TEST_SHARD: ${{ matrix.shard }}
622630
TEST_SHARD_COUNT: ${{ strategy.job-total }}
623-
run: python3 scripts/ci-test-shard.py "$TEST_SHARD" "$TEST_SHARD_COUNT" --locked --profile ci-release
631+
# Failing tests' panics become annotations, as in `test`.
632+
run: |
633+
set -o pipefail
634+
python3 scripts/ci-test-shard.py "$TEST_SHARD" "$TEST_SHARD_COUNT" --locked --profile ci-release \
635+
2>&1 | tee "$RUNNER_TEMP/tests.log" || {
636+
status=$?
637+
python3 scripts/ci-test-failures.py "$RUNNER_TEMP/tests.log" || true
638+
exit "$status"
639+
}
624640
625641
coverage:
626642
if: ((github.event.pull_request.draft != true) && needs.release-readiness.outputs.pr_unchanged != 'true') && (inputs.os != 'windows' && inputs.os != 'macos')

0 commit comments

Comments
 (0)