# Built from:
# https://docs.github.com/en/actions/guides/building-and-testing-python
---
name: Build and test

on:  # yamllint disable-line rule:truthy
  push:
    branches: [main]
  pull_request:

env:
  FORCE_COLOR: "1" # Make tools pretty.

#permissions: {}

jobs:
  test:

    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.10", "3.11", "3.12", "3.13"]
      fail-fast: false

    steps:

      # https://github.com/actions/checkout
      - name: Check out repository
        uses: actions/checkout@v6
        with:
          persist-credentials: false

      # https://github.com/astral-sh/setup-uv
      - name: Install uv
        uses: astral-sh/setup-uv@v7
        with:
          python-version: ${{ matrix.python-version }}
          enable-cache: true
          cache-dependency-glob: "uv.lock"

      # https://github.com/actions/setup-python
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install just
        run: |
          uv tool install rust-just

      - name: Install project
        run: uv sync --dev

      - name: Run test suite
        run: just test
