From 0e66cc6f936f4619a93d510566804780c5b8128c Mon Sep 17 00:00:00 2001 From: Shang Chieh Tseng Date: Mon, 15 Dec 2025 21:48:40 +0800 Subject: [PATCH] Fix workflows to fail on test failures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The '|| true' was swallowing test runner exit codes, causing workflows to pass even when tests failed. Added separate 'Check test results' step that reads JSON summary and fails workflow if any tests failed. Affected workflows: - build.yml - runtime.yml - inference.yml - full-pipeline.yml 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .github/workflows/build.yml | 9 ++++++--- .github/workflows/full-pipeline.yml | 27 +++++++++++++++++++++++++++ .github/workflows/inference.yml | 9 +++++++++ .github/workflows/runtime.yml | 9 +++++++++ 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 73adf952..d6935e58 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,9 +37,12 @@ jobs: echo "--- JSON Results ---" cat /tmp/build-results.json - # Check if any tests failed - if grep -q '"pass": false' /tmp/build-results.json; then - echo "Some build tests failed" + - name: Check test results + run: | + FAILED=$(jq '.summary.failed' /tmp/build-results.json) + echo "Failed tests: $FAILED" + if [ "$FAILED" -gt 0 ]; then + echo "::error::$FAILED build test(s) failed" exit 1 fi diff --git a/.github/workflows/full-pipeline.yml b/.github/workflows/full-pipeline.yml index 81c92d3d..a29dcf13 100644 --- a/.github/workflows/full-pipeline.yml +++ b/.github/workflows/full-pipeline.yml @@ -67,6 +67,15 @@ jobs: echo "--- JSON Results ---" cat /tmp/runtime-results.json + - name: Check test results + run: | + FAILED=$(jq '.summary.failed' /tmp/runtime-results.json) + echo "Failed tests: $FAILED" + if [ "$FAILED" -gt 0 ]; then + echo "::error::$FAILED runtime test(s) failed" + exit 1 + fi + - name: Upload runtime results uses: actions/upload-artifact@v4 if: always() @@ -100,6 +109,15 @@ jobs: echo "--- JSON Results ---" cat /tmp/inference-results.json + - name: Check test results + run: | + FAILED=$(jq '.summary.failed' /tmp/inference-results.json) + echo "Failed tests: $FAILED" + if [ "$FAILED" -gt 0 ]; then + echo "::error::$FAILED inference test(s) failed" + exit 1 + fi + - name: Upload inference results uses: actions/upload-artifact@v4 if: always() @@ -139,6 +157,15 @@ jobs: echo "--- JSON Results ---" cat /tmp/llm-judged-results.json + - name: Check test results + run: | + FAILED=$(jq '.summary.failed' /tmp/llm-judged-results.json) + echo "Failed tests: $FAILED" + if [ "$FAILED" -gt 0 ]; then + echo "::error::$FAILED test(s) failed LLM evaluation" + exit 1 + fi + - name: Upload final results uses: actions/upload-artifact@v4 if: always() diff --git a/.github/workflows/inference.yml b/.github/workflows/inference.yml index 173bad8d..f1b5de43 100644 --- a/.github/workflows/inference.yml +++ b/.github/workflows/inference.yml @@ -63,6 +63,15 @@ jobs: echo "--- JSON Results ---" cat /tmp/inference-results.json + - name: Check test results + run: | + FAILED=$(jq '.summary.failed' /tmp/inference-results.json) + echo "Failed tests: $FAILED" + if [ "$FAILED" -gt 0 ]; then + echo "::error::$FAILED inference test(s) failed" + exit 1 + fi + - name: Upload inference results uses: actions/upload-artifact@v4 if: always() diff --git a/.github/workflows/runtime.yml b/.github/workflows/runtime.yml index fde739c3..70b863f0 100644 --- a/.github/workflows/runtime.yml +++ b/.github/workflows/runtime.yml @@ -59,6 +59,15 @@ jobs: echo "--- JSON Results ---" cat /tmp/runtime-results.json + - name: Check test results + run: | + FAILED=$(jq '.summary.failed' /tmp/runtime-results.json) + echo "Failed tests: $FAILED" + if [ "$FAILED" -gt 0 ]; then + echo "::error::$FAILED runtime test(s) failed" + exit 1 + fi + - name: Upload runtime results uses: actions/upload-artifact@v4 if: always()