Skip to content

Commit 2f1a731

Browse files
committed
test: Simplify code coverage artifact paths
1 parent e7a4fe5 commit 2f1a731

File tree

1 file changed

+17
-41
lines changed

1 file changed

+17
-41
lines changed

.github/workflows/ci.yml

Lines changed: 17 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -350,43 +350,21 @@ jobs:
350350
--junitxml=junit.xml \
351351
-o junit_family=legacy
352352
353-
# Debug: Check what coverage files exist
354-
echo "=== Coverage files after pytest ==="
355-
ls -la .coverage* 2>/dev/null || echo "No .coverage* files found"
356-
ls -la .coverage.* 2>/dev/null || echo "No .coverage.* files found"
357-
358-
# Coverage parallel mode may create .coverage.machine.pid files
359-
# Check for both .coverage and .coverage.* patterns
360-
if [ -f ".coverage" ]; then
361-
# Single .coverage file exists (parallel mode auto-combined or not used)
362-
mv .coverage .coverage.${PYTHON_VERSION}
363-
echo "Renamed .coverage to .coverage.${PYTHON_VERSION}"
364-
echo "coverage_generated=true" >> $GITHUB_OUTPUT
365-
else
366-
# Check for parallel coverage files
367-
shopt -s nullglob
368-
coverage_files=(.coverage.*)
369-
370-
if [ ${#coverage_files[@]} -gt 0 ]; then
371-
echo "Found ${#coverage_files[@]} parallel coverage files, combining..."
372-
poetry run coverage combine
373-
mv .coverage .coverage.${PYTHON_VERSION}
374-
echo "Combined and saved as .coverage.${PYTHON_VERSION}"
375-
echo "coverage_generated=true" >> $GITHUB_OUTPUT
376-
else
377-
echo "Error: No coverage data files found"
378-
echo "coverage_generated=false" >> $GITHUB_OUTPUT
379-
exit 1
380-
fi
353+
# Check if coverage data was generated
354+
if [ ! -f ".coverage" ]; then
355+
echo "Error: No coverage data file generated"
356+
echo "coverage_generated=false" >> $GITHUB_OUTPUT
357+
exit 1
381358
fi
359+
360+
echo "Coverage data generated successfully"
361+
echo "coverage_generated=true" >> $GITHUB_OUTPUT
382362
383363
- name: Per-version coverage summary
384364
if: steps.test-unit.outputs.coverage_generated == 'true'
385-
env:
386-
PYTHON_VERSION: ${{ matrix.python-version }}
387365
run: |
388-
echo "## Python ${PYTHON_VERSION} Coverage" >> $GITHUB_STEP_SUMMARY
389-
poetry run coverage report --data-file=.coverage.${PYTHON_VERSION} --format=markdown >> $GITHUB_STEP_SUMMARY
366+
echo "## Python ${{ matrix.python-version }} Coverage" >> $GITHUB_STEP_SUMMARY
367+
poetry run coverage report --format=markdown >> $GITHUB_STEP_SUMMARY
390368
391369
- name: Upload test results to Codecov (these are results not coverage reports)
392370
if: ${{ !cancelled() }}
@@ -400,7 +378,7 @@ jobs:
400378
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
401379
with:
402380
name: coverage-${{ matrix.python-version }}
403-
path: .coverage.${{ matrix.python-version }}
381+
path: .coverage
404382
retention-days: 1
405383

406384
coverage-combine:
@@ -433,13 +411,9 @@ jobs:
433411
run: |
434412
set -euo pipefail
435413
436-
# List downloaded artifacts structure
437-
echo "=== Downloaded artifacts structure ==="
438-
find coverage-artifacts -type f -name ".coverage.*" || echo "No .coverage.* files found"
439-
440-
# Collect all coverage files from artifact subdirectories
414+
# Collect all .coverage files from artifact subdirectories
441415
shopt -s nullglob
442-
coverage_files=(coverage-artifacts/*/.coverage.*)
416+
coverage_files=(coverage-artifacts/*/.coverage)
443417
444418
if [ ${#coverage_files[@]} -eq 0 ]; then
445419
echo "No coverage files to combine (tests may have failed)"
@@ -449,10 +423,12 @@ jobs:
449423
450424
echo "Found ${#coverage_files[@]} coverage file(s) to combine"
451425
452-
# Copy all coverage files to a single directory for combining
426+
# Rename each file to include a unique suffix for coverage combine
453427
mkdir -p coverage-data
428+
i=0
454429
for file in "${coverage_files[@]}"; do
455-
cp "$file" coverage-data/
430+
cp "$file" "coverage-data/.coverage.$i"
431+
((i++))
456432
done
457433
458434
cd coverage-data

0 commit comments

Comments
 (0)