Merge pull request #69 from mideind/grammar-coverage #314
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: tests | |
| on: | |
| # Run push CI on master only; branch work is covered by pull_request. | |
| # (Running push CI on all branches would duplicate every run - both | |
| # events fire for each push to a branch with an open PR.) | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| # Note: "**" is required to match branch names containing '/' | |
| branches: [ "**" ] | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "pypy3.11"] | |
| # The Windows and macOS wheels are built from the same sources, | |
| # so test at least one Python version on each of those platforms | |
| include: | |
| - os: windows-latest | |
| python-version: "3.13" | |
| - os: macos-latest | |
| python-version: "3.13" | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| # Exact tag: setup-uv has no floating 'v8' major tag (unlike v6/v7) | |
| uses: astral-sh/setup-uv@v8.3.2 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install GreynirEngine | |
| run: uv sync --locked | |
| - name: Lint with ruff | |
| run: uv run ruff check src/reynir | |
| - name: Type check with mypy | |
| # mypy is not installed on PyPy (see [dependency-groups] in pyproject.toml) | |
| if: ${{ !startsWith(matrix.python-version, 'pypy') }} | |
| run: uv run mypy src/reynir | |
| - name: Test with pytest | |
| run: uv run pytest | |
| - name: Slack notification | |
| uses: 8398a7/action-slack@v3 | |
| with: | |
| status: ${{ job.status }} | |
| author_name: Integration Testing (Python ${{ matrix.python-version }}) | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| if: failure() # Pick up event if the job fails |