Skip to content
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

Testing change of/removal of coverage hack #455

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
252 changes: 128 additions & 124 deletions .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
@@ -1,132 +1,136 @@
name: Build and test

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

on:
# Only on pushes to main or one of the release branches we build on push
push:
branches:
- main
- "[0-9].[0-9]+-branch"
tags:
- "*"
# Build pull requests
pull_request:
# Only on pushes to main or one of the release branches we build on push
push:
branches:
- main
- "[0-9].[0-9]+-branch"
tags:
- "*"
# Build pull requests
pull_request:

jobs:
test:
strategy:
matrix:
py:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "pypy-3.9"
- "pypy-3.10"
# Pre-release
os:
- "ubuntu-22.04"
- "windows-latest"
- "macos-14" # arm64
- "macos-13" # x64
architecture:
- x64
- x86
- arm64
include:
- py: "pypy-3.9"
toxenv: "pypy39"
- py: "pypy-3.10"
toxenv: "pypy310"
exclude:
# Ubuntu does not have x86/arm64 Python
- os: "ubuntu-22.04"
architecture: x86
- os: "ubuntu-22.04"
architecture: arm64
# MacOS we need to make sure to remove x86 on all
# We need to run no arm64 on macos-13 (Intel), but some
# Python versions: 3.9/3.10
#
# From 3.11 onward, there is support for running x64 and
# arm64 on Apple Silicon based systems (macos-14)
- os: "macos-13"
architecture: x86
- os: "macos-13"
architecture: arm64
- os: "macos-14"
architecture: x86
- os: "macos-14"
architecture: x64
py: "3.9"
- os: "macos-14"
architecture: x64
py: "3.10"
# Windows does not have arm64 releases
- os: "windows-latest"
architecture: arm64
# Don't run all PyPy versions except latest on
# Windows/macOS. They are expensive to run.
- os: "windows-latest"
py: "pypy-3.9"
- os: "macos-13"
py: "pypy-3.9"
- os: "macos-14"
py: "pypy-3.9"
test:
strategy:
matrix:
py:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "pypy-3.9"
- "pypy-3.10"
# Pre-release
os:
- "ubuntu-22.04"
- "windows-latest"
- "macos-14" # arm64
- "macos-13" # x64
architecture:
- x64
- x86
- arm64
include:
- py: "pypy-3.9"
toxenv: "pypy39"
- py: "pypy-3.10"
toxenv: "pypy310"
exclude:
# Ubuntu does not have x86/arm64 Python
- os: "ubuntu-22.04"
architecture: x86
- os: "ubuntu-22.04"
architecture: arm64
# MacOS we need to make sure to remove x86 on all
# We need to run no arm64 on macos-13 (Intel), but some
# Python versions: 3.9/3.10
#
# From 3.11 onward, there is support for running x64 and
# arm64 on Apple Silicon based systems (macos-14)
- os: "macos-13"
architecture: x86
- os: "macos-13"
architecture: arm64
- os: "macos-14"
architecture: x86
- os: "macos-14"
architecture: x64
py: "3.9"
- os: "macos-14"
architecture: x64
py: "3.10"
# Windows does not have arm64 releases
- os: "windows-latest"
architecture: arm64
# Don't run all PyPy versions except latest on
# Windows/macOS. They are expensive to run.
- os: "windows-latest"
py: "pypy-3.9"
- os: "macos-13"
py: "pypy-3.9"
- os: "macos-14"
py: "pypy-3.9"
name: "Python: ${{ matrix.py }}-${{ matrix.architecture }} on ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
architecture: ${{ matrix.architecture }}
- run: pip install tox
- name: Running tox with specific toxenv
if: ${{ matrix.toxenv != '' }}
env:
TOXENV: ${{ matrix.toxenv }}
run: tox
- name: Running tox for current python version
if: ${{ matrix.toxenv == '' }}
run: tox -e py

name: "Python: ${{ matrix.py }}-${{ matrix.architecture }} on ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
architecture: ${{ matrix.architecture }}
- run: pip install tox
- name: Running tox with specific toxenv
if: ${{ matrix.toxenv != '' }}
env:
TOXENV: ${{ matrix.toxenv }}
run: tox
- name: Running tox for current python version
if: ${{ matrix.toxenv == '' }}
run: tox -e py
coverage:
runs-on: ubuntu-22.04
name: Validate coverage
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: x64
- run: pip install tox
- run: tox -e py313,coverage

coverage:
runs-on: ubuntu-22.04
name: Validate coverage
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: x64
docs:
runs-on: ubuntu-22.04
name: Build the documentation
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: x64
- run: pip install tox
- run: tox -e docs

- run: pip install tox
- run: tox -e py313,coverage
docs:
runs-on: ubuntu-22.04
name: Build the documentation
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: x64
- run: pip install tox
- run: tox -e docs
lint:
runs-on: ubuntu-22.04
name: Lint the package
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: x64
- run: pip install tox
- run: tox -e lint
lint:
runs-on: ubuntu-22.04
name: Lint the package
steps:
- uses: actions/checkout@v4
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.13"
architecture: x64
- run: pip install tox
- run: tox -e lint
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ where=src
testing =
pytest
pytest-cov
coverage>=5.0
coverage>=7.6.0

docs =
Sphinx>=1.8.1
Expand Down
13 changes: 0 additions & 13 deletions tests/test_functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,9 @@ def emit(self, record):
def start_server(app, svr, queue, **kwargs): # pragma: no cover
"""Run a fixture application."""
logging.getLogger("waitress").addHandler(NullHandler())
try_register_coverage()
svr(app, queue, **kwargs).run()


def try_register_coverage(): # pragma: no cover
# Hack around multiprocessing exiting early and not triggering coverage's
# atexit handler by always registering a signal handler

if "COVERAGE_PROCESS_START" in os.environ:

def sigterm(*args):
sys.exit(0)

signal.signal(signal.SIGTERM, sigterm)


class FixtureTcpWSGIServer(server.TcpWSGIServer):
"""A version of TcpWSGIServer that relays back what it's bound to."""

Expand Down