name: Test changed content # **What it does**: Runs the vitest tests for changed and deleted content files. # **Why we have it**: Use GitHub Actions to run tests on changed content files. # **Who does it impact**: Docs engineering, open-source engineering contributors. on: pull_request: branches: # This is important! If you make a PR against a megabranch, you # might actually want to delete a file without setting up a # redirect in its place. But if it's going into `main` we'll # want to make sure that doesn't happen. - main paths: - 'content/**' permissions: contents: read jobs: test-changed-content: runs-on: ${{ fromJSON('["ubuntu-latest", "ubuntu-20.04-xl"]')[github.repository == 'github/docs-internal'] }} if: ${{ github.repository == 'github/docs-internal' || github.repository == 'github/docs' }} steps: # Each of these ifs needs to be repeated at each step to make sure the required check still runs # Even if if doesn't do anything - name: Check out repo uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: # See https://github.com/tj-actions/changed-files#on-pull_request- fetch-depth: 2 - uses: ./.github/actions/node-npm-setup - uses: ./.github/actions/get-docs-early-access if: ${{ github.repository == 'github/docs-internal' }} with: token: ${{ secrets.DOCS_BOT_PAT_READPUBLICKEY }} - uses: ./.github/actions/cache-nextjs - name: Run build script run: npm run build - name: Get changed files id: changed-files uses: tj-actions/changed-files@1754cd4b9e661d1f0eced3b33545a8d8b3bc46d8 # v44.5.0 with: # No need to escape the file names because we make the output of # tj-actions/changed-files be set as an environment variable. Not # as a direct input to the line of bash that uses it. # See https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable safe_output: false files: 'content/**' # Necessary so we can know what the old name was when a # content file was renamed. output_renamed_files_as_deleted_and_added: true - name: Run tests env: CHANGED_FILES: ${{ steps.changed-files.outputs.modified_files }} DELETED_FILES: ${{ steps.changed-files.outputs.deleted_files }} run: npm test -- src/content-render/tests/render-changed-and-deleted-files.js