diff --git a/.github/workflows/test-pytest-slow.yaml b/.github/workflows/test-pytest-slow.yaml index 85050d531..67aca7e82 100644 --- a/.github/workflows/test-pytest-slow.yaml +++ b/.github/workflows/test-pytest-slow.yaml @@ -20,6 +20,9 @@ jobs: pytest: runs-on: ubuntu-latest strategy: + # Same reason as the main matrix: 3.10 failing tells you nothing about + # 3.14, so cancelling it costs a result and saves nothing worth having. + fail-fast: false matrix: python-version: ["3.10", "3.14"] env: @@ -75,7 +78,10 @@ jobs: else status=$? fi - if [[ "$status" != "138" || "$attempt" == "$attempts" ]]; then + # 138 is SIGBUS on macOS, 135 is SIGBUS on Linux, 139 is SIGSEGV on + # both. The measured split on this test was eight SIGSEGV to two + # SIGBUS, so keying on 138 alone let the common case through. + if [[ ! "$status" =~ ^(135|138|139)$ || "$attempt" == "$attempts" ]]; then exit "$status" fi done diff --git a/.github/workflows/test_pytest.yaml b/.github/workflows/test_pytest.yaml index bab3823c7..a207282fd 100644 --- a/.github/workflows/test_pytest.yaml +++ b/.github/workflows/test_pytest.yaml @@ -17,6 +17,8 @@ jobs: Pytest: runs-on: ${{ matrix.os }} strategy: + # One platform's result should not decide the other five. Added in #1084; + # kept explicit here so it does not get tidied away later. fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] @@ -85,7 +87,10 @@ jobs: else status=$? fi - if [[ "$status" != "138" || "$attempt" == "$attempts" ]]; then + # 138 is SIGBUS on macOS, 135 is SIGBUS on Linux, 139 is SIGSEGV on + # both. The measured split on this test was eight SIGSEGV to two + # SIGBUS, so keying on 138 alone let the common case through. + if [[ ! "$status" =~ ^(135|138|139)$ || "$attempt" == "$attempts" ]]; then exit "$status" fi done