name: Post Tests
# This is for tests that run on a PR post merge. This to optimize CI test suite time
# for exceptionally long running test processes. Errors will still generate an
# issue against the PR/commit so will be caught.
# These tests also run on the ci:run_full label.

on:
  pull_request_target:
    types:
      - closed
      - labeled

jobs:
  riscv_postmerge:
    if: ${{ github.event.pull_request.merged == true ||
      contains(github.event.pull_request.labels.*.name, 'ci:run_full') }}
    uses: ./.github/workflows/riscv_postmerge.yml
    with:
      trigger-sha: ${{ github.event.pull_request.head.sha }}
    secrets:
      tflm-bot-token: ${{ secrets.TFLM_BOT_PACKAGE_READ_TOKEN }}

  xtensa_postmerge:
    if: ${{ github.event.pull_request.merged == true ||
            contains(github.event.pull_request.labels.*.name, 'ci:run_full') }}
    uses: ./.github/workflows/xtensa_postmerge.yml
    with:
      trigger-sha: ${{ github.event.pull_request.head.sha }}
    secrets:
      tflm-bot-token: ${{ secrets.TFLM_BOT_PACKAGE_READ_TOKEN }}

  cortex_m_ci_full:
    if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:run_full') }}
    uses: ./.github/workflows/cortex_m.yml
    with:
      trigger-sha: ${{ github.event.pull_request.head.sha }}
    secrets:
      tflm-bot-token: ${{ secrets.TFLM_BOT_PACKAGE_READ_TOKEN }}

  issue_on_error:
    needs: [riscv_postmerge,xtensa_postmerge,cortex_m_ci_full]
    if: ${{ always() && contains(needs.*.result, 'failure') &&
            !contains(github.event.pull_request.labels.*.name, 'ci:run_full') }}
    uses: ./.github/workflows/issue_on_error.yml
    with:
      repo: ${{ github.repository}}
      workflow: ${{ github.workflow }}
      run_number: ${{ github.run_number }}
      run_id: ${{ github.run_id }}
      flag_label: ci:bot_issue
      pr_number: ${{ github.event.number }}
      pr_link: ${{ github.event.pull_request._links.html.href }}
    secrets:
      token: ${{ secrets.GITHUB_TOKEN }}

  ci_run_full:
    needs: [issue_on_error]
    runs-on: ubuntu-latest
    steps:
      - name: remove-cirun-full
        if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:run_full') }}
        uses: actions/github-script@v5
        with:
          github-token: ${{ secrets.TFLM_BOT_REPO_TOKEN }}
          script: |
            github.rest.issues.removeLabel({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              name: 'ci:run_full'
            })
        continue-on-error: true

