name: Python - Tests

on:
  pull_request:
    branches: ["main", "feature*"]
    paths:
      - "python/**"
env:
  # Configure a constant location for the uv cache
  UV_CACHE_DIR: /tmp/.uv-cache

jobs:
  python-tests:
    name: Python Tests
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: true
      matrix:
        python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
        # todo: add macos-latest when problems are resolved
        os: [ubuntu-latest, windows-latest]
    env:
      UV_PYTHON: ${{ matrix.python-version }}
    permissions:
      contents: write
    defaults:
      run:
        working-directory: python
    steps:
      - uses: actions/checkout@v5
      - name: Set up python and install the project
        id: python-setup
        uses: ./.github/actions/python-setup
        with:
          python-version: ${{ matrix.python-version }}
          os: ${{ runner.os }}
        env:
          # Configure a constant location for the uv cache
          UV_CACHE_DIR: /tmp/.uv-cache
      # Unit tests
      - name: Run all tests
        run: uv run poe all-tests
        working-directory: ./python

      # Surface failing tests
      - name: Surface failing tests
        if: always()
        uses: pmeier/pytest-results-action@v0.7.2
        with:
          path: ./python/**.xml
          summary: true
          display-options: fEX
          fail-on-empty: false
          title: Test results
