Introduce scenario-based regression testing framework with expanded configuration coverage #51
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Pull Request CI | |
| on: | |
| pull_request: | |
| concurrency: | |
| group: pr-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| unit: | |
| name: Unit | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 25 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04, macos-15, windows-2025] | |
| python-version: ["3.12", "3.13", "3.14"] | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| - name: Install testing dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[testing] | |
| - name: Pytest (unit) • ${{ matrix.os }}, ${{ matrix.python-version }} | |
| run: python -m pytest tests/unit | |
| regression-quick: | |
| name: Regression (fast) | |
| needs: unit | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 35 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 | |
| - name: Set up Python 3.14 | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 | |
| with: | |
| python-version: "3.14" | |
| cache: pip | |
| - name: Cache testdata | |
| uses: actions/cache@v4 | |
| with: | |
| path: .testdata | |
| key: codeentropy-testdata-${{ runner.os }}-py314 | |
| - name: Install testing dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[testing] | |
| - name: Run fast regression tests (parallel) | |
| run: | | |
| python -m pytest tests/regression \ | |
| -m "not slow" \ | |
| -n auto \ | |
| --dist=loadscope \ | |
| -vv \ | |
| --durations=20 | |
| - name: Upload artifacts (failure) | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: quick-regression-failure | |
| path: | | |
| .testdata/** | |
| /tmp/pytest-of-*/pytest-*/** | |
| docs: | |
| name: Docs | |
| needs: unit | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 25 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 | |
| - name: Set up Python 3.14 | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 | |
| with: | |
| python-version: "3.14" | |
| cache: pip | |
| - name: Install docs dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[docs] | |
| - name: Build docs | |
| run: | | |
| make -C docs clean | |
| make -C docs html SPHINXOPTS="-W --keep-going" | |
| - name: Upload docs artifact | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: docs-html | |
| path: docs/_build/html | |
| pre-commit: | |
| name: Pre-commit | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 | |
| - name: Set up Python 3.14 | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 | |
| with: | |
| python-version: "3.14" | |
| cache: pip | |
| - name: Install pre-commit dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[pre-commit] | |
| - name: Run pre-commit | |
| run: | | |
| pre-commit install | |
| pre-commit run --all-files || { | |
| git status --short | |
| git diff | |
| exit 1 | |
| } | |
| coverage: | |
| name: Coverage | |
| needs: unit | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 | |
| - name: Set up Python 3.14 | |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 | |
| with: | |
| python-version: "3.14" | |
| cache: pip | |
| - name: Install testing dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install -e .[testing] | |
| - name: Run coverage | |
| run: | | |
| pytest tests/unit \ | |
| --cov CodeEntropy \ | |
| --cov-report term-missing \ | |
| --cov-report xml \ | |
| -q | |
| - name: Upload coverage to Coveralls | |
| uses: coverallsapp/github-action@5cbfd81b66ca5d10c19b062c04de0199c215fb6e | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| file: coverage.xml | |
| fail-on-error: false |