6464 - test_classification.py
6565 - test_embedding.py
6666 - test_file_store.py
67- - test_geo.py
6867 - test_image_generation.py
6968 - test_object_detection.py
7069 - test_prediction.py
7574 - test_validate.py
7675 - test_vision.py
7776 - test_web.py
77+ outputs :
78+ test-result : ${{ steps.test-run.outcome }}
7879 steps :
7980 - uses : actions/checkout@v4
8081
@@ -91,27 +92,63 @@ jobs:
9192 pip install -e .
9293
9394 - name : Run test ${{ matrix.test-file }}
95+ id : test-run
9496 env :
9597 JIGSAWSTACK_API_KEY : ${{ secrets.JIGSAWSTACK_API_KEY }}
9698 run : |
97- pytest tests/${{ matrix.test-file }} -v
98- continue-on-error : true
99+ pytest tests/${{ matrix.test-file }} -v --json-report --json-report-file=report.json
99100
100- - name : Check if critical tests passed
101- if : contains(matrix.test-file, 'test_') && !contains(matrix.test-file, 'skip')
101+ - name : Count passed tests
102+ id : count-tests
103+ if : always()
102104 run : |
103- pytest tests/${{ matrix.test-file }} -v -m "not skip"
105+ if [ -f report.json ]; then
106+ PASSED=$(python -c "import json; data=json.load(open('report.json')); print(data.get('summary', {}).get('passed', 0))")
107+ echo "passed-count=$PASSED" >> $GITHUB_OUTPUT
108+ else
109+ echo "passed-count=0" >> $GITHUB_OUTPUT
110+ fi
111+
112+ - name : Upload test results
113+ if : always()
114+ uses : actions/upload-artifact@v3
115+ with :
116+ name : test-results-${{ matrix.test-file }}
117+ path : report.json
104118
105119 all-checks-passed :
106120 name : All Checks Passed
107121 needs : [ruff-format-check, test]
108122 runs-on : ubuntu-latest
109123 if : always()
110124 steps :
111- - name : Check if all jobs passed
125+ - name : Download all test results
126+ uses : actions/download-artifact@v3
127+ with :
128+ path : test-results
129+
130+ - name : Count total passed tests
112131 run : |
113- if [[ "${{ needs.ruff-format-check.result }}" != "success" || "${{ needs.test.result }}" != "success" ]]; then
114- echo "One or more checks failed"
132+ TOTAL_PASSED=0
133+ for file in test-results/*/report.json; do
134+ if [ -f "$file" ]; then
135+ PASSED=$(python -c "import json; data=json.load(open('$file')); print(data.get('summary', {}).get('passed', 0))")
136+ TOTAL_PASSED=$((TOTAL_PASSED + PASSED))
137+ fi
138+ done
139+
140+ echo "Total passed tests: $TOTAL_PASSED"
141+
142+ if [ $TOTAL_PASSED -lt 327 ]; then
143+ echo "❌ Insufficient tests passed: $TOTAL_PASSED/327"
115144 exit 1
145+ else
146+ echo "✅ Required tests passed: $TOTAL_PASSED/327"
116147 fi
117- echo "All checks passed successfully!"
148+
149+ - name : Check if ruff passed
150+ run : |
151+ if [[ "${{ needs.ruff-format-check.result }}" != "success" ]]; then
152+ echo "Ruff format check failed"
153+ exit 1
154+ fi
0 commit comments