name: Test {{ framework }}

on:
  push:
    branches:
      - master
      - release/**

  pull_request:

# Cancel in progress workflows on pull_requests.
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-a-fallback-value
concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

permissions:
  contents: read

env:
  BUILD_CACHE_KEY: ${{ github.sha }}
  CACHED_BUILD_PATHS: |
    ${{ github.workspace }}/dist-serverless

jobs:
  test:
    name: {{ framework }}, python ${{ matrix.python-version }}, ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    timeout-minutes: 45
    continue-on-error: true
{{ strategy_matrix }}
{{ services }}

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-python@v4
        with:
          python-version: ${{ matrix.python-version }}

      - name: Setup Test Env
        env:
          PGHOST: localhost
          PGPASSWORD: sentry
        run: |
          pip install codecov tox

      - name: Test {{ framework }}
        env:
          CI_PYTHON_VERSION: ${{ matrix.python-version }}
        timeout-minutes: 45
        shell: bash
        run: |
          set -x # print commands that are executed
          coverage erase

          ./scripts/runtox.sh "${{ matrix.python-version }}-{{ framework }}" --cov=tests --cov=sentry_sdk --cov-report= --cov-branch
          coverage combine .coverage*
          coverage xml -i
          codecov --file coverage.xml
