diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ac749860..88b16c71 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,7 +66,24 @@ jobs: python-version: ${{ matrix.python-version }} allow-prereleases: true - - name: Test typing_extensions + - name: Install coverage + if: ${{ !startsWith(matrix.python-version, 'pypy') }} + run: | + # Be wary that this does not install typing_extensions in the future + pip install coverage + + - name: Test typing_extensions with coverage + if: ${{ !startsWith(matrix.python-version, 'pypy') }} + run: | + # Be wary of running `pip install` here, since it becomes easy for us to + # accidentally pick up typing_extensions as installed by a dependency + cd src + python --version # just to make sure we're running the right one + # Run tests under coverage + export COVERAGE_FILE=.coverage_${{ matrix.python-version }} + python -m coverage run -m unittest test_typing_extensions.py + - name: Test typing_extensions no coverage on pypy + if: ${{ startsWith(matrix.python-version, 'pypy') }} run: | # Be wary of running `pip install` here, since it becomes easy for us to # accidentally pick up typing_extensions as installed by a dependency @@ -74,6 +91,15 @@ jobs: python --version # just to make sure we're running the right one python -m unittest test_typing_extensions.py + - name: Archive code coverage results + if: ${{ !startsWith(matrix.python-version, 'pypy') }} + uses: actions/upload-artifact@v4 + with: + name: .coverage_${{ matrix.python-version }} + path: ./src/.coverage* + include-hidden-files: true + compression-level: 0 # no compression + - name: Test CPython typing test suite # Test suite fails on PyPy even without typing_extensions if: ${{ !startsWith(matrix.python-version, 'pypy') }} @@ -111,3 +137,62 @@ jobs: title: `Daily tests failed on ${new Date().toDateString()}`, body: "Runs listed here: https://github.com/python/typing_extensions/actions/workflows/ci.yml", }) + + report-coverage: + name: Report coverage + + runs-on: ubuntu-latest + + needs: [tests] + permissions: + contents: read + pull-requests: write + + if: ${{ always() }} + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3" + - name: Download coverage artifacts + uses: actions/download-artifact@v4 + with: + pattern: .coverage_* + path: . + # merge only when files are named differently + merge-multiple: true + - name: Install dependencies + run: pip install coverage + - name: Combine coverage results + run: | + # List the files to see what we have + echo "Combining coverage files..." + ls -aR .coverage* + coverage combine .coverage* + echo "Creating coverage report..." + coverage report + coverage xml + + - name: Code Coverage Report + uses: irongut/CodeCoverageSummary@51cc3a756ddcd398d447c044c02cb6aa83fdae95 # v1.3.0 + with: + filename: coverage.xml + badge: true + fail_below_min: false + format: markdown + hide_branch_rate: false + hide_complexity: true + indicators: true + output: both + thresholds: '80 90' + + - name: Add Coverage PR Comment + uses: marocchino/sticky-pull-request-comment@52423e01640425a022ef5fd42c6fb5f633a02728 # v2.9.3 + if: github.event_name == 'pull_request' + with: + recreate: true + path: code-coverage-results.md diff --git a/.gitignore b/.gitignore index ee36fe77..bcbd4ce9 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,6 @@ venv*/ *.swp *.pyc *.egg-info/ + +.coverage* +coverage.xml diff --git a/pyproject.toml b/pyproject.toml index 38475b93..0f4f4e9d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -114,3 +114,10 @@ ignore = [ [tool.ruff.lint.isort] extra-standard-library = ["tomllib"] known-first-party = ["typing_extensions", "_typed_dict_test_helper"] + +[tool.coverage.report] +show_missing = true +# Omit files that are created in temporary directories during tests. +# If not explicitly omitted they will result in warnings in the report. +omit = ["inspect*", "ann*"] +ignore_errors = true pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy