name: Python - Test Coverage

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

jobs:
  python-tests-coverage:
    runs-on: ubuntu-latest
    continue-on-error: false
    defaults:
      run:
        working-directory: python
    env:
      UV_PYTHON: "3.10"
    steps:
      - uses: actions/checkout@v5
      # Save the PR number to a file since the workflow_run event
      # in the coverage report workflow does not have access to it
      - name: Save PR number
        run: |
          echo ${{ github.event.number }} > ./pr_number
      - 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
      - name: Run all tests with coverage report
        run: uv run poe all-tests-cov --cov-report=xml:python-coverage.xml -q --junitxml=pytest.xml
      - name: Upload coverage report
        uses: actions/upload-artifact@v5
        with:
          path: |
            python/python-coverage.xml
            python/pytest.xml
            python/pr_number
          overwrite: true
          retention-days: 1
          if-no-files-found: error
