name: Test

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

jobs:
  pytest:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        python-version: ['3.9', '3.10', '3.11', '3.12']

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Rye
        uses: eifinger/setup-rye@v3
        with:
          enable-cache: true

      - name: Set Rye Config
        run: |
          rye config --set-bool behavior.global-python=true
          rye config --set-bool behavior.use-uv=true

      - name: Set up Python ${{ matrix.python-version }}
        run: |
          export PYTHONUNBUFFERED=1
          rye pin ${{ matrix.python-version }}
          rye sync

      - name: Run Pytest if directory exists
        run: |
          if [ -d "./tests/" ]; then
            rye run pytest -s
          fi