diff --git a/.github/workflows/test-worker.yml b/.github/workflows/test-worker.yml index 4ca0211..054409b 100644 --- a/.github/workflows/test-worker.yml +++ b/.github/workflows/test-worker.yml @@ -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) }}