| name: check |
| on: |
| push: |
| tags-ignore: ["**"] |
| pull_request: |
| schedule: |
| - cron: "0 8 * * *" |
| |
| concurrency: |
| group: check-${{ github.ref }} |
| cancel-in-progress: true |
| |
| jobs: |
| test: |
| name: test ${{ matrix.py }} - ${{ matrix.os }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| py: |
| - "pypy3.9" # ahead to start it earlier because takes longer |
| - "3.12" |
| - "3.11" |
| - "3.10" |
| - "3.9" |
| - "3.8" |
| os: |
| - ubuntu-22.04 |
| - windows-2022 |
| - macos-12 |
| |
| steps: |
| - name: Setup python for tox |
| uses: actions/setup-python@v4 |
| with: |
| python-version: "3.11" |
| - name: Install tox |
| run: python -m pip install tox |
| - uses: actions/checkout@v4 |
| with: |
| fetch-depth: 0 |
| - name: Setup python for test ${{ matrix.py }} |
| uses: actions/setup-python@v4 |
| with: |
| python-version: ${{ matrix.py }} |
| - name: Pick environment to run |
| run: | |
| import codecs |
| import os |
| import platform |
| import sys |
| cpy = platform.python_implementation() == "CPython" |
| base =("{}{}{}" if cpy else "{}{}").format("py" if cpy else "pypy", *sys.version_info[0:2]) |
| env = "TOXENV={}\n".format(base) |
| print("Picked:\n{}for{}".format(env, sys.version)) |
| with codecs.open(os.environ["GITHUB_ENV"], "a", "utf-8") as file_handler: |
| file_handler.write(env) |
| shell: python |
| - name: Setup test suite |
| run: tox -vv --notest |
| - name: Run test suite |
| run: tox --skip-pkg-install |
| env: |
| PYTEST_ADDOPTS: "-vv --durations=20" |
| CI_RUN: "yes" |
| - name: Rename coverage report file |
| run: | |
| import os; import sys; |
| os.rename(f".tox/.coverage.{os.environ['TOXENV']}", f".tox/.coverage.{os.environ['TOXENV']}-{sys.platform}") |
| shell: python |
| - name: Upload coverage data |
| uses: actions/upload-artifact@v3 |
| with: |
| name: coverage-data |
| path: ".tox/.coverage.*" |
| |
| coverage: |
| name: Combine coverage |
| runs-on: ubuntu-22.04 |
| needs: test |
| steps: |
| - uses: actions/checkout@v4 |
| with: |
| fetch-depth: 0 |
| - uses: actions/setup-python@v4 |
| with: |
| python-version: "3.10" |
| - name: Install tox |
| run: python -m pip install tox |
| - name: Setup coverage tool |
| run: tox -e coverage --notest |
| - name: Install package builder |
| run: python -m pip install build |
| - name: Build package |
| run: pyproject-build --wheel . |
| - name: Download coverage data |
| uses: actions/download-artifact@v3 |
| with: |
| name: coverage-data |
| path: .tox |
| - name: Combine and report coverage |
| run: tox -e coverage |
| - name: Upload HTML report |
| uses: actions/upload-artifact@v3 |
| with: |
| name: html-report |
| path: .tox/htmlcov |
| |
| check: |
| name: ${{ matrix.tox_env }} - ${{ matrix.os }} |
| runs-on: ${{ matrix.os }} |
| strategy: |
| fail-fast: false |
| matrix: |
| os: |
| - ubuntu-22.04 |
| - windows-2022 |
| tox_env: |
| - dev |
| - type |
| - docs |
| - readme |
| exclude: |
| - { os: windows-latest, tox_env: readme } |
| steps: |
| - uses: actions/checkout@v4 |
| with: |
| fetch-depth: 0 |
| - name: Setup Python "3.11" |
| uses: actions/setup-python@v4 |
| with: |
| python-version: "3.11" |
| - name: Install tox |
| run: python -m pip install tox |
| - name: Setup test suite |
| run: tox -vv --notest -e ${{ matrix.tox_env }} |
| - name: Run test suite |
| run: tox --skip-pkg-install -e ${{ matrix.tox_env }} |