From 1e0d06f9be2d03cb2f7c76fa0bbbacdfe6869ac2 Mon Sep 17 00:00:00 2001 From: connoraird Date: Thu, 13 Nov 2025 16:58:37 +0000 Subject: [PATCH 1/3] Write PR comment if regression test workflow fails --- .github/workflows/regression-test.yaml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.github/workflows/regression-test.yaml b/.github/workflows/regression-test.yaml index f555dcf10..b00d99e7b 100644 --- a/.github/workflows/regression-test.yaml +++ b/.github/workflows/regression-test.yaml @@ -18,6 +18,9 @@ on: - reopened - synchronize +env: + REGRESSION_TEST_OUTPUT_FILE: output.txt + jobs: regression-tests: if: github.event.pull_request.draft == false @@ -54,8 +57,27 @@ jobs: - name: Run regression test run: >- uv run nox -s regression_tests-${{ matrix.python-version }} -- - "$BASE_REF" "$HEAD_REF" + "$BASE_REF" "$HEAD_REF" | tee $REGRESSION_TEST_OUTPUT_FILE env: BASE_REF: ${{ github.event.pull_request.base.ref }} HEAD_REF: ${{ github.event.pull_request.head.ref }} FORCE_COLOR: 1 + + - name: Extract regression information for PR comment + id: extract_comment + if: failure() + run: >- + f=$REGRESSION_TEST_OUTPUT_FILE; start=$(grep -n -m1 'Performance has + regressed:' "$f" | cut -d: -f1) + || { echo "No match"; exit 1; }; + s_dash=$(awk -v n=$start 'NR<=n && /^-+$/ {l=NR} END{print l}' "$f"); + e_dash=$(awk -v n=$start 'NR>=n && /^-+$/ {print NR; exit}' "$f"); + PR_COMMENT_MSG=$(sed -n "${s_dash},${e_dash}p" "$f"); echo + "PR_COMMENT_MSG=$PR_COMMENT_MSG" >> $GITHUB_OUTPUT; + + - name: Write PR comment + if: failure() + uses: mshick/add-pr-comment@v2 + with: + message: >- + ${{ steps.extract_comment.outputs.PR_COMMENT_MSG }} From 0529911d18220b5e92a0f26fff47eec3b2c583b0 Mon Sep 17 00:00:00 2001 From: connoraird Date: Thu, 13 Nov 2025 17:16:21 +0000 Subject: [PATCH 2/3] Don't fail job if regression test fails --- .github/workflows/regression-test.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/regression-test.yaml b/.github/workflows/regression-test.yaml index b00d99e7b..da2f54c65 100644 --- a/.github/workflows/regression-test.yaml +++ b/.github/workflows/regression-test.yaml @@ -55,6 +55,7 @@ jobs: run: uv sync --only-dev - name: Run regression test + continue-on-error: true run: >- uv run nox -s regression_tests-${{ matrix.python-version }} -- "$BASE_REF" "$HEAD_REF" | tee $REGRESSION_TEST_OUTPUT_FILE From 75a8e34a9989727a39cfa2d1428d6095132d609a Mon Sep 17 00:00:00 2001 From: connoraird Date: Tue, 18 Nov 2025 16:25:29 +0000 Subject: [PATCH 3/3] double escape in workflow --- .github/workflows/regression-test.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/regression-test.yaml b/.github/workflows/regression-test.yaml index da2f54c65..3a8db2082 100644 --- a/.github/workflows/regression-test.yaml +++ b/.github/workflows/regression-test.yaml @@ -58,7 +58,7 @@ jobs: continue-on-error: true run: >- uv run nox -s regression_tests-${{ matrix.python-version }} -- - "$BASE_REF" "$HEAD_REF" | tee $REGRESSION_TEST_OUTPUT_FILE + "${BASE_REF}" "${HEAD_REF}" | tee ${REGRESSION_TEST_OUTPUT_FILE} env: BASE_REF: ${{ github.event.pull_request.base.ref }} HEAD_REF: ${{ github.event.pull_request.head.ref }} @@ -68,13 +68,13 @@ jobs: id: extract_comment if: failure() run: >- - f=$REGRESSION_TEST_OUTPUT_FILE; start=$(grep -n -m1 'Performance has - regressed:' "$f" | cut -d: -f1) + f=${REGRESSION_TEST_OUTPUT_FILE}; start=$(grep -n -m1 'Performance has + regressed:' "${f}" | cut -d: -f1) || { echo "No match"; exit 1; }; - s_dash=$(awk -v n=$start 'NR<=n && /^-+$/ {l=NR} END{print l}' "$f"); - e_dash=$(awk -v n=$start 'NR>=n && /^-+$/ {print NR; exit}' "$f"); - PR_COMMENT_MSG=$(sed -n "${s_dash},${e_dash}p" "$f"); echo - "PR_COMMENT_MSG=$PR_COMMENT_MSG" >> $GITHUB_OUTPUT; + s_dash=$(awk -v n=${start} 'NR<=n && /^-+$/ {l=NR} END{print l}' + "${f}"); e_dash=$(awk -v n=${start} 'NR>=n && /^-+$/ {print NR; exit}' + "${f}"); PR_COMMENT_MSG=$(sed -n "${s_dash},${e_dash}p" "${f}"); echo + "PR_COMMENT_MSG=${PR_COMMENT_MSG}" >> ${GITHUB_OUTPUT}; - name: Write PR comment if: failure()