name: "Tests"

on:
  push:
    branches: [ main ]
  pull_request: ~
  workflow_dispatch:

# Cancel redundant in-progress jobs.
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:

  test:
    name: "Python ${{ matrix.python-version }}"
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        python-version: [
          "3.9",
          "3.10",
          "3.11",
          "3.12",
          "3.13",
        ]
    env:
      UV_SYSTEM_PYTHON: true

    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: 22

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

    - name: Set up uv
      uses: astral-sh/setup-uv@v5
      with:
        version: "latest"
        enable-cache: true
        cache-suffix: ${{ matrix.python-version }}
        cache-dependency-glob: |
          pyproject.toml

    - name: Install and validate package
      run: |
        uv pip install '.[develop,test]'
        poe check
