diff --git a/.github/workflows/rustfs-pool-expand-test.yml b/.github/workflows/rustfs-pool-expand-test.yml index ee2a31d06..83677c3be 100644 --- a/.github/workflows/rustfs-pool-expand-test.yml +++ b/.github/workflows/rustfs-pool-expand-test.yml @@ -583,6 +583,25 @@ jobs: echo "pool test script reported a failure (step FAIL verdict or die() abort)" >&2 failed=1 fi + # A runner-level kill (step timeout) truncates the suite without a + # FAIL verdict or an [ERROR] line, so require every expected + # [POOL-STEP] marker to be present with PASS - missing markers mean + # the run was truncated, not green. This also closes the gap for + # standalone dispatches, where the chain driver's evidence + # validation does not run. + last_step=6 + if [ "${{ inputs.pools || '3' }}" = "3" ]; then + last_step=8 + if [ "${{ inputs.run_decommission != 'false' }}" = "true" ]; then + last_step=9 + fi + fi + for n in $(seq 1 "${last_step}"); do + grep -q "^\[POOL-STEP\] ${n} .* PASS" "${POOL_ARTIFACT_DIR}/pool-test.log" 2>/dev/null || { + echo "pool test log is missing [POOL-STEP] ${n} PASS (expected through step ${last_step}); the run was truncated" >&2 + failed=1 + } + done [ "${failed}" -eq 0 ] || exit 1 - name: Upload functional report to dashboard