Skip to content
Merged
71 changes: 50 additions & 21 deletions .github/workflows/test-worker.yml
Original file line number Diff line number Diff line change
@@ -1,44 +1,73 @@
name: Run Python tests
name: Run Test Suite

on: [ push ]
on:
push:
pull_request:
workflow_dispatch:

defaults:
run:
shell: bash

env:
PIP_DISABLE_PIP_VERSION_CHECK: 1
COVERAGE_IGOR_VERBOSE: 1
FORCE_COLOR: 1 # pytest output color

permissions:
contents: read

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

jobs:
build:
tests:
name: "${{ matrix.python-version }} on ${{ matrix.os }}"
runs-on: "${{ matrix.os }}-latest"

continue-on-error: ${{ startsWith(matrix.python-version, '~') }} # Allows unstable Python versions to fail

name: Run tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
os:
- ubuntu
- windows
- macos
python-version: ["3.9", "3.10", "3.11", "3.x"]


steps:
- uses: actions/checkout@v3
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
- name: Install Python dependencies
run: |
python -m pip install -U pip
python -m pip install -U coverage pytest pytest-cov poetry
set -xe
python -m pip install poetry coverage pytest
python -m poetry install
python -m poetry self add poetry-plugin-export
python -m poetry export -f requirements.txt --output requirements.txt
python -m pip install -r requirements.txt

- name: Lint with Ruff
run: |
python -m pip install -U ruff
ruff --per-file-ignores="__init__.py:F401" --per-file-ignores="__init__.py:E402" .
continue-on-error: true

- name: Test with pytest
run: |
coverage run -m pytest -v -s
set -xe
python -m pytest -sv

- name: Generate Coverage Report
run: |
coverage report -m
check:
if: always()
name: Tests Successful
runs-on: ubuntu-latest
needs: tests

steps:
- name: Whether the whole test suite passed
uses: re-actors/alls-green@v1.2.2
with:
jobs: ${{ toJSON(needs) }}