🏡 index : cold-air-networks/mirror-webgpu-cts.git

name: pr

on:
  pull_request:
    branches: [main]

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    permissions:
      pull-requests: write
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
          # When running a pull_request job, GitHub generates a merge commit that merges the PR
          # with the latest commit on the target branch. By default, actions/checkout shallowly
          # checks out only the merge commit. We want to fetch the two parent commits as well.
          fetch-depth: 2
      - uses: actions/setup-node@v6
        with:
          node-version: '16.x'
      - run: npm ci
      - name: validating cache
        run: npx grunt run:validate-cache
      - run: npm test
      - name: copy out-wpt to wpt tree
        run: |
          git clone --depth 2 https://github.com/web-platform-tests/wpt.git
          rsync -av out-wpt/ wpt/webgpu
      - name: adding wpt lint ignore rule for *.bin
        run: 'echo "TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.bin" >> wpt/lint.ignore'
      - name: test wpt lint
        run: ./wpt lint
        working-directory: ./wpt
      - name: compute case count after PR
        run: |
          tools/validate --print-case-count-report src/webgpu > case-count-report-after.txt
      - name: checkout before PR
        run: |
          # HEAD will always be a merge commit with 2 parents. HEAD^1 will be the target branch.
          # HEAD^2 will be the PR branch. (Log all three, to make it easy to see what's being
          # checked out, and also to validate the assumption that there are actually two parents.)
          git log --oneline --graph HEAD 'HEAD^1' 'HEAD^2'
          git checkout 'HEAD^1'
      - name: compute case count before PR and diff
        id: case_count_diff
        run: |
          set -eu

          tools/validate --print-case-count-report src/webgpu > case-count-report-before.txt
          # Diff only showing the changed lines and nothing else
          diff --unified=0 case-count-report-{before,after}.txt | grep '^[+-][^+-]' | tee case-count-report-diff.txt
          (
            echo '```diff'
            line_count=$(wc -l < case-count-report-diff.txt)
            if [[ "${line_count}" -eq 0 ]] ; then
              echo ' Test case/subcase counts did not change.'
            elif [[ "${line_count}" -le 20 ]] ; then
              cat case-count-report-diff.txt
            else
              head -n18 case-count-report-diff.txt
              echo ' [snip - full report in action logs]'
              tail -n2 case-count-report-diff.txt
            fi
            echo '```'
          ) > pr-comment-body.txt
      - name: Upload pr-comment-body.txt
        uses: actions/upload-artifact@v4
        with:
          name: pr-comment-body.txt
          path: pr-comment-body.txt