# Do not edit this file.
# This file is generated automatically by executing tox -e generate-workflows

name: Test

on:
  workflow_call:

permissions:
  contents: read

env:
  CORE_REPO_SHA: main
  # Set the SHA to the branch name if the PR has a label 'prepare-release' or 'backport' otherwise, set it to 'main'
  # For PRs you can change the inner fallback ('main')
  # For pushes you change the outer fallback ('main')
  # The logic below is used during releases and depends on having an equivalent branch name in the contrib repo.
  CONTRIB_REPO_SHA: {% raw %}${{ github.event_name == 'pull_request' && (
       contains(github.event.pull_request.labels.*.name, 'prepare-release') && github.event.pull_request.head.ref ||
       contains(github.event.pull_request.labels.*.name, 'backport') && github.event.pull_request.base.ref ||
       'main'
    ) || 'main' }}{% endraw %}
  WEAVER_VERSION: "v0.22.1"
  PIP_EXISTS_ACTION: w
  CONTRIB_REPO_UTIL_HTTP: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/util/opentelemetry-util-http
  CONTRIB_REPO_INSTRUMENTATION: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/opentelemetry-instrumentation
  CONTRIB_REPO_INSTRUMENTATION_REQUESTS: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-requests
  CONTRIB_REPO_INSTRUMENTATION_WSGI: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-wsgi
  CONTRIB_REPO_INSTRUMENTATION_FLASK: ${% raw %}{{ github.workspace }}{% endraw %}/opentelemetry-python-contrib/instrumentation/opentelemetry-instrumentation-flask

jobs:
  {%- for job_data in job_datas %}

  {{ job_data.name }}:
    name: {{ job_data.ui_name }}
    runs-on: {{ job_data.os }}
    timeout-minutes: 30
    steps:
      {%- if job_data.os == "windows-latest" %}
      - name: Configure git to support long filenames
        run: git config --system core.longpaths true

      {%- endif %}
      - name: Checkout repo @ SHA - ${% raw %}{{ github.sha }}{% endraw %}
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      {%- if "getting-started" in job_data.tox_env %}

      - name: Checkout contrib repo @ ${% raw %}{{ env.CONTRIB_REPO_SHA }}{% endraw %}
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          repository: open-telemetry/opentelemetry-python-contrib
          ref: ${% raw %}{{ env.CONTRIB_REPO_SHA }}{% endraw %}
          path: opentelemetry-python-contrib
      {%- endif %}
      {%- if "test-opentelemetry-test-utils" in job_data.tox_env and job_data.os != "windows-latest" %}

      - name: Install weaver
        run: |
          WEAVER_URL="https://github.com/open-telemetry/weaver/releases/download/${% raw %}{{ env.WEAVER_VERSION }}{% endraw %}/weaver-x86_64-unknown-linux-gnu.tar.xz"
          curl -sSL "$WEAVER_URL" | tar -xJ -C /tmp weaver-x86_64-unknown-linux-gnu/weaver
          sudo mv /tmp/weaver-x86_64-unknown-linux-gnu/weaver /usr/local/bin/weaver
      {%- endif %}

      - name: Set up Python {{ job_data.python_version }}
        uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
        with:
          python-version: "{{ job_data.python_version }}"

      - name: Set up uv
        uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0

      - name: Run tests
        run: uvx --with tox-uv tox -e {{ job_data.tox_env }} -- -ra
  {%- endfor %}
