on:
  pull_request:
    branches:
      - main
name: unittest
jobs:
  unit:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Setup Python
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python }}
    - name: Install nox
      run: |
        python -m pip install --upgrade setuptools pip wheel
        python -m pip install nox
    - name: Run unit tests
      env:
        COVERAGE_FILE: .coverage-${{ matrix.python }}
      run: |
        nox -s unit-${{ matrix.python }}
    - name: Upload coverage results
      uses: actions/upload-artifact@v4
      with:
        name: coverage-artifact-${{ matrix.python }}
        path: .coverage-${{ matrix.python }}

  cover:
    runs-on: ubuntu-latest
    needs:
        - unit
    steps:
    - name: Checkout
      uses: actions/checkout@v4
    - name: Setup Python
      uses: actions/setup-python@v5
      with:
        python-version: "3.8"
    - name: Install coverage
      run: |
        python -m pip install --upgrade setuptools pip wheel
        python -m pip install coverage
    - name: Download coverage results
      uses: actions/download-artifact@v4
      with:
        path: .coverage-results/
    - name: Report coverage results
      run: |
        find .coverage-results -type f -name '*.zip' -exec unzip {} \;
        coverage combine .coverage-results/**/.coverage*
        coverage report --show-missing --fail-under=99
