name: Checks
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.11', '3.12', '3.13']
    steps:
      - uses: actions/checkout@v4

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

      - name: Install dependencies
        run: python3 -m pip install ".[test]"

      - name: Run tests
        env:
          WAGSTAILS_TEST_ENV: true
        run: python3 -m pytest tests/
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: 3.11

      - name: Install dependencies
        run: python3 -m pip install ".[dev]"

      - name: Check style
        run: python3 -m ruff check . && ruff format --check .
  precommit_hooks:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        hook:
          - "end-of-file-fixer"
          - "trailing-whitespace"
          - "mixed-line-ending"
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python 3.12
        uses: actions/setup-python@v5
        with:
          python-version: 3.12
      - uses: pre-commit/action@v3.0.1
        with:
          extra_args: ${{ matrix.cmd }} --all-files
  docs:
    runs-on: ubuntu-latest
    env:
      SPHINX_GITHUB_CHANGELOG_TOKEN: ${{ secrets.SPHINX_GITHUB_CHANGELOG_TOKEN }}
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: 3.11

      - name: Install dependencies
        run: |
          python3 -m pip install --upgrade pip
          python3 -m pip install '.[docs]'

      - name: Attempt docs build
        working-directory: ./docs
        run: make html
