| name: PR validity |
| |
| on: |
| pull_request: |
| types: [opened, synchronize, reopened, edited] |
| |
| jobs: |
| check_testing_header: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Check for `### Testing` section in PR |
| id: check-testing |
| continue-on-error: true |
| run: | |
| cat >/tmp/pr-summary.txt << "EndMarkerForPrSummary" |
| ${{ github.event.pull_request.body }} |
| EndMarkerForPrSummary |
| |
| python -c 'import sys; pr_summary = open("/tmp/pr-summary.txt", "rt").read(); sys.exit(0 if "### Testing" in pr_summary else 1)' |
| |
| - name: Check for PR starting instructions |
| id: check-instructions |
| continue-on-error: true |
| run: | |
| cat >/tmp/pr-summary.txt << "EndMarkerForPrSummary" |
| ${{ github.event.pull_request.body }} |
| EndMarkerForPrSummary |
| |
| python -c 'import sys; pr_summary = open("/tmp/pr-summary.txt", "rt").read(); sys.exit(1 if "Please replace this HTML comment" in pr_summary else 0)' |
| |
| # NOTE: comments disabled for now as separate permissions are required |
| # failing CI step may be sufficient to start (although it contains less information about why it failed) |
| |
| # - name: Add comment (missing instructions) |
| # if: steps.check-instructions.outcome == 'failure' |
| # uses: actions/github-script@v6 |
| # with: |
| # github-token: ${{ secrets.GITHUB_TOKEN }} |
| # script: | |
| # github.rest.issues.createComment({ |
| # issue_number: context.issue.number, |
| # owner: context.repo.owner, |
| # repo: context.repo.repo, |
| # body: 'Please make sure to delete starter instructions from your PR summary and replace them with a descriptive summary.' |
| # }) |
| |
| - name: Fail if PR instructions were not deleted |
| if: (steps.check-instructions.outcome == 'failure') && (github.event.pull_request.user.login != 'dependabot[bot]') |
| run: | |
| python -c 'import sys; print("Please remove the HTML comment blocks that include \"Please replace this HTML comment\" text."); sys.exit(1)' |
| |
| # - name: Add comment (missing testing) |
| # if: steps.check-testing.outcome == 'failure' |
| # uses: actions/github-script@v6 |
| # with: |
| # github-token: ${{ secrets.GITHUB_TOKEN }} |
| # script: | |
| # github.rest.issues.createComment({ |
| # issue_number: context.issue.number, |
| # owner: context.repo.owner, |
| # repo: context.repo.repo, |
| # body: 'Please add a `### Testing` section to your PR summary describing the testing performed. See https://github.com/project-chip/connectedhomeip/blob/master/CONTRIBUTING.md#pull-requests' |
| # }) |
| |
| - name: Fail if `### Testing` section not in PR |
| if: (steps.check-testing.outcome == 'failure') && (github.event.pull_request.user.login != 'dependabot[bot]') |
| |
| run: | |
| python -c 'import sys; print("Testing section missing (test failed)"); sys.exit(1)' |