name: Python Unittest Coverage

on: [push, pull_request]

jobs:
  test:
    if: false == contains(github.event.pull_request.title, 'WIP')
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macos-15]
        python-version: ['3.10', '3.11', '3.12']
    env:
      OS: ${{ matrix.os }}
    steps:
    - uses: actions/checkout@master
    - name: Setup Python ${{ matrix.python-version }}
      uses: actions/setup-python@master
      with:
        python-version: ${{ matrix.python-version }}
    - name: Update setuptools
      run: |
        pip install setuptools==78.1.1 wheel==0.45.1
    - name: Install Dev Dependencies
      run: |
        pip install -q -e .[dev]
        pip install coverage pytest
    - name: Run tests with coverage
      run: |
        coverage run -m pytest tests
    - name: Generate coverage report
      run: |
        coverage report -m