name: Linting and testing

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
    types: [opened, synchronize, reopened]

jobs:
  build:

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

    steps:
    - name: Checkout
      uses: actions/checkout@v2
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install system dependencies
      run: |
        sudo apt-get update && sudo apt-get install -y libcairo2-dev
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install poetry
        python -m poetry install --with dev
    - name: Test with Coverage and Pytest (Fail if coverage is low)
      run: |
        poetry run coverage run --source=./maigret -m pytest --reruns 3 --reruns-delay 5 tests
        poetry run coverage report --fail-under=60
        poetry run coverage html
    - name: Upload coverage report
      uses: actions/upload-artifact@v4
      with:
        name: htmlcov-${{ strategy.job-index }}
        path: htmlcov