Skip to content

Add Coverage workflow #623

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 37 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
7078342
Add coverage workflow
Daraan Jul 7, 2025
56faf0f
Add coverage summary
Daraan Jul 7, 2025
045b6f7
add PR write permission
Daraan Jul 7, 2025
21b240c
report line misses in logs
Daraan Jul 7, 2025
71daf3d
Merge branch 'main' into add-coverage
Daraan Jul 7, 2025
3b6319d
Remove install check again
Daraan Jul 7, 2025
e69ace4
Merge remote-tracking branch 'refs/remotes/origin/add-coverage' into …
Daraan Jul 7, 2025
4384206
coverage not on mypy
Daraan Jul 7, 2025
b852953
Feedback; include temp files in .coverage
Daraan Jul 7, 2025
022d37b
Merge remote-tracking branch 'upstream' into add-coverage
Daraan Jul 7, 2025
9f1b3e1
check files present
Daraan Jul 7, 2025
4bd0aa1
Add omit to final output
Daraan Jul 7, 2025
7a7d6b3
Read env
Daraan Jul 7, 2025
ba46124
Use pyproject.toml for coverage
Daraan Jul 7, 2025
b9613f7
clean comment
Daraan Jul 7, 2025
525e198
Merge branch 'main' into add-coverage
Daraan Jul 7, 2025
034ec43
Zizmor feedback: Pin actions
Daraan Jul 7, 2025
88ba8f6
Merge branch 'main' into add-coverage
Daraan Aug 13, 2025
6c43f31
Test without permissions override
Daraan Aug 18, 2025
943aba7
Merge branch 'main' into add-coverage
Daraan Aug 18, 2025
5bbafa0
Revert "Test without permissions override"
Daraan Aug 18, 2025
ee8f319
rework pr comment with workflow_run
Daraan Aug 18, 2025
2757de5
overwrite pr number
Daraan Aug 18, 2025
084e39d
na
Daraan Aug 18, 2025
6ed9889
continue on error as v4 has a bug
Daraan Aug 18, 2025
f48d961
slim workflow_run
Daraan Aug 18, 2025
8d7600b
WIP: checkout files
Daraan Aug 18, 2025
8677db5
adjust filename
Daraan Aug 18, 2025
f77717e
fix dir
Daraan Aug 18, 2025
4cc732b
recheck
Daraan Aug 18, 2025
30a30d1
recheck
Daraan Aug 18, 2025
b03f51f
recheck
Daraan Aug 18, 2025
1a7c6e5
Fix file/path
Daraan Aug 18, 2025
355ccd7
cleanup
Daraan Aug 18, 2025
90c0e0c
wrong event name
Daraan Aug 18, 2025
b16e770
add pr write
Daraan Aug 18, 2025
26ace2b
Merge branch 'main' into add-coverage
Daraan Aug 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 86 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,40 @@ 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
cd src
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') }}
Expand Down Expand Up @@ -109,3 +135,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
- 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*
# add -i to ignore code in ephemeral python files created in temporary
# directories during tests; this will result in warnings in the report
echo "Creating coverage report..."
coverage report
coverage xml

- name: Code Coverage Report
uses: irongut/[email protected]
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@v2
if: github.event_name == 'pull_request'
with:
recreate: true
path: code-coverage-results.md
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@ venv*/
*.swp
*.pyc
*.egg-info/

.coverage*
coverage.xml
6 changes: 6 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -114,3 +114,9 @@ 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.
omit = ["inspect*", "ann*"]
ignore_errors = true
Loading