name: Python - Test Coverage Report on: workflow_run: workflows: ["Python - Test Coverage"] types: - completed permissions: contents: read actions: read pull-requests: write jobs: python-test-coverage-report: runs-on: ubuntu-latest if: github.event.workflow_run.conclusion == 'success' continue-on-error: false defaults: run: working-directory: python steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Download coverage report uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: github-token: ${{ github.token }} run-id: ${{ github.event.workflow_run.id }} path: ./python merge-multiple: true - name: Display structure of downloaded files run: ls - name: Read and validate PR number # Keep the artifact handoff aligned with the workflow run that produced it. env: GH_TOKEN: ${{ github.token }} REPO: ${{ github.repository }} RUN_HEAD_SHA: ${{ github.event.workflow_run.head_sha }} run: | if [ ! -s pr_number ]; then echo "PR number file 'pr_number' is missing or empty" exit 1 fi ARTIFACT_PR_NUMBER=$(cat pr_number) if ! [[ "$ARTIFACT_PR_NUMBER" =~ ^[0-9]+$ ]]; then echo "::error::PR number file contains invalid content" exit 1 fi PR_HEAD_SHA=$(gh pr view "$ARTIFACT_PR_NUMBER" --repo "$REPO" --json headRefOid --jq '.headRefOid') if [ "$PR_HEAD_SHA" != "$RUN_HEAD_SHA" ]; then echo "::error::PR head SHA does not match the triggering workflow run" exit 1 fi echo "PR_NUMBER=$ARTIFACT_PR_NUMBER" >> "$GITHUB_ENV" - name: Pytest coverage comment id: coverageComment uses: MishaKav/pytest-coverage-comment@dd5b80bde6d16941f336518e92929e89069d8451 # v1.7.2 with: github-token: ${{ github.token }} issue-number: ${{ env.PR_NUMBER }} pytest-xml-coverage-path: python/python-coverage.xml title: "Python Test Coverage Report" badge-title: "Python Test Coverage" junitxml-title: "Python Unit Test Overview" junitxml-path: python/pytest.xml default-branch: "main" report-only-changed-files: true