on:
  pull_request:
    branches:
      - main
name: unittest
jobs:
  unit:
    # TODO(https://github.com/googleapis/gapic-generator-python/issues/2303): use `ubuntu-latest` once this bug is fixed.
    # Use ubuntu-22.04 until Python 3.7 is removed from the test matrix
    # https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
    runs-on: ubuntu-22.04
    strategy:
      matrix:
        python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
    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 }}
        include-hidden-files: true

  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
