@@ -10,35 +10,56 @@ concurrency:
1010 cancel-in-progress : false # Don't cancel publish jobs
1111
1212jobs :
13- # Wait for all test workflows to complete
13+ # Wait for all platform test workflows to complete successfully
1414 wait-for-tests :
1515 name : Wait for test workflows
1616 runs-on : ubuntu-latest
1717 steps :
1818 - name : Wait for Linux tests
1919 uses : fountainhead/action-wait-for-check@v1.2.0
20+ id : wait-linux
2021 with :
2122 token : ${{ secrets.GITHUB_TOKEN }}
22- checkName : " Test py 3.10" # Representative test from linux.yml
23+ checkName : " Test py 3.10"
2324 ref : ${{ github.sha }}
2425 timeoutSeconds : 1800
2526
27+ - name : Fail if Linux tests failed
28+ if : steps.wait-linux.outputs.conclusion != 'success'
29+ run : |
30+ echo "❌ Linux tests failed or timed out (conclusion: ${{ steps.wait-linux.outputs.conclusion }})"
31+ exit 1
32+
2633 - name : Wait for macOS tests
2734 uses : fountainhead/action-wait-for-check@v1.2.0
35+ id : wait-macos
2836 with :
2937 token : ${{ secrets.GITHUB_TOKEN }}
30- checkName : " Test py 3.10 macos-latest" # Representative test from macos.yml
38+ checkName : " Test py 3.10 macos-latest"
3139 ref : ${{ github.sha }}
3240 timeoutSeconds : 1800
3341
42+ - name : Fail if macOS tests failed
43+ if : steps.wait-macos.outputs.conclusion != 'success'
44+ run : |
45+ echo "❌ macOS tests failed or timed out (conclusion: ${{ steps.wait-macos.outputs.conclusion }})"
46+ exit 1
47+
3448 - name : Wait for Windows tests
3549 uses : fountainhead/action-wait-for-check@v1.2.0
50+ id : wait-windows
3651 with :
3752 token : ${{ secrets.GITHUB_TOKEN }}
38- checkName : " Test py 3.10" # Representative test from windows.yml (different from Linux)
53+ checkName : " Test py 3.10"
3954 ref : ${{ github.sha }}
4055 timeoutSeconds : 1800
4156
57+ - name : Fail if Windows tests failed
58+ if : steps.wait-windows.outputs.conclusion != 'success'
59+ run : |
60+ echo "❌ Windows tests failed or timed out (conclusion: ${{ steps.wait-windows.outputs.conclusion }})"
61+ exit 1
62+
4263 download-wheels :
4364 name : Download tested wheels
4465 needs : [wait-for-tests]
5273 path : dist/
5374 name_is_regexp : true
5475 name : wheel-linux-.*
76+ search_artifacts : true
77+ if_no_artifact_found : fail
5578
5679 - name : Download macOS wheels
5780 uses : dawidd6/action-download-artifact@v6
6184 path : dist/
6285 name_is_regexp : true
6386 name : wheel-macos-.*
87+ search_artifacts : true
88+ if_no_artifact_found : fail
6489
6590 - name : Download Windows wheels
6691 uses : dawidd6/action-download-artifact@v6
7095 path : dist/
7196 name_is_regexp : true
7297 name : wheel-windows-.*
98+ search_artifacts : true
99+ if_no_artifact_found : fail
73100
74101 - name : List downloaded wheels
75102 run : |
@@ -82,15 +109,30 @@ jobs:
82109 - name : Verify wheel count
83110 run : |
84111 wheel_count=$(ls dist/*.whl 2>/dev/null | wc -l)
85- echo "Found $wheel_count wheels"
86-
87- # Expected: Linux(5) + macOS(10) + Windows(5) = 20 wheels
88- # But some may be experimental and fail, so check for minimum
89- if [ "$wheel_count" -lt 15 ]; then
90- echo "❌ Error: Expected at least 15 wheels, found $wheel_count"
112+ linux_count=$(ls dist/toad-*manylinux*.whl 2>/dev/null | wc -l)
113+ macos_count=$(ls dist/toad-*macosx*.whl 2>/dev/null | wc -l)
114+ windows_count=$(ls dist/toad-*win*.whl 2>/dev/null | wc -l)
115+
116+ echo "Total wheels: $wheel_count"
117+ echo " Linux: $linux_count (expected ≥5)"
118+ echo " macOS: $macos_count (expected ��5)"
119+ echo " Windows: $windows_count (expected ≥5)"
120+
121+ # Each platform must have at least 5 wheels (py3.9-3.13)
122+ # Experimental (py3.14) may fail, so we don't require them
123+ if [ "$linux_count" -lt 5 ]; then
124+ echo "❌ Error: Linux wheels incomplete ($linux_count < 5)"
125+ exit 1
126+ fi
127+ if [ "$macos_count" -lt 5 ]; then
128+ echo "❌ Error: macOS wheels incomplete ($macos_count < 5)"
129+ exit 1
130+ fi
131+ if [ "$windows_count" -lt 5 ]; then
132+ echo "❌ Error: Windows wheels incomplete ($windows_count < 5)"
91133 exit 1
92134 fi
93- echo "✓ Wheel count OK "
135+ echo "✓ All platforms have sufficient wheels "
94136
95137 - name : Verify wheel integrity
96138 run : |
0 commit comments