diff options
Diffstat (limited to '.github/workflows/coverage_tests.yml')
| -rw-r--r-- | .github/workflows/coverage_tests.yml | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/.github/workflows/coverage_tests.yml b/.github/workflows/coverage_tests.yml new file mode 100644 index 0000000000..af463bb295 --- /dev/null +++ b/.github/workflows/coverage_tests.yml @@ -0,0 +1,75 @@ +name: Coverage Tests + +on: + pull_request: + paths-ignore: + - 'docs/**' + - '**/*.md' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + coverage: + if: github.repository == 'django/django' + name: Coverage Tests (Windows) + runs-on: windows-latest + timeout-minutes: 60 + steps: + - name: Checkout + uses: actions/checkout@v5 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Set up Python + uses: actions/setup-python@v6 + with: + python-version: '3.14' + cache: 'pip' + cache-dependency-path: 'tests/requirements/py3.txt' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip wheel + python -m pip install -r tests/requirements/py3.txt -e . + python -m pip install 'coverage[toml]' diff-cover + + - name: Run tests with coverage + env: + PYTHONPATH: ${{ github.workspace }}/tests + COVERAGE_PROCESS_START: ${{ github.workspace }}/tests/.coveragerc + RUNTESTS_DIR: ${{ github.workspace }}/tests + run: | + python -Wall tests/runtests.py -v2 + + - name: Generate coverage report + if: success() + env: + COVERAGE_RCFILE: ${{ github.workspace }}/tests/.coveragerc + RUNTESTS_DIR: ${{ github.workspace }}/tests + run: | + python -m coverage combine + python -m coverage report --show-missing + python -m coverage xml -o tests/coverage.xml + + - name: Generate diff coverage report + if: success() + run: | + if (Test-Path 'tests/coverage.xml') { + diff-cover tests/coverage.xml --compare-branch=origin/main --fail-under=0 > diff-cover-report.md + } else { + Set-Content -Path diff-cover-report.md -Value 'No coverage data available.' + } + + - name: Upload diff coverage report + if: success() + uses: actions/upload-artifact@v4 + with: + name: diff-coverage-report-${{ github.event.pull_request.number }} + path: diff-cover-report.md + retention-days: 1 |
