# Performs mutation testing analysis on the files changed by a pull request and
# uploads the results. The associated PR is subsequently updated by the
# `pitest-update-pr.yml` workflow. See https://blog.pitest.org/oss-pitest-pr/
# for details.
name: "Mutation testing"
on:
  pull_request:
permissions:
  contents: read
jobs:
  analyze-pr:
    runs-on: ubuntu-22.04
    steps:
      - name: Install Harden-Runner
        uses: step-security/harden-runner@f086349bfa2bd1361f7909c78558e816508cdc10 # v2.8.0
        with:
          disable-sudo: true
          egress-policy: block
          allowed-endpoints: >
            api.adoptium.net:443
            github.com:443
            objects.githubusercontent.com:443
            repo.maven.apache.org:443
      - name: Check out code and set up JDK and Maven
        uses: s4u/setup-maven-action@489441643219d2b93ee2a127b2402eb640a1b947 # v1.13.0
        with:
          checkout-fetch-depth: 2
          java-version: 17.0.13
          java-distribution: temurin
          maven-version: 3.9.9
      - name: Run Pitest
        # By running with features `+GIT(from[HEAD~1]), +gitci`, Pitest only
        # analyzes lines changed in the associated pull request, as GitHub
        # exposes the changes unique to the PR as a single commit on top of the
        # target branch. See https://blog.pitest.org/pitest-pr-setup for
        # details.
        run: mvn test pitest:mutationCoverage -DargLine.xmx=2048m -Dverification.skip -Dfeatures="+GIT(from[HEAD~1]), +gitci"
      - name: Aggregate Pitest reports
        run: mvn pitest-git:aggregate -DkilledEmoji=":tada:" -DmutantEmoji=":zombie:" -DtrailingText="Mutation testing report by [Pitest](https://pitest.org/). Review any surviving mutants by inspecting the line comments under [_Files changed_](${{ github.event.number }}/files)."
      - name: Upload Pitest reports as artifact
        uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
        with:
          name: pitest-reports
          path: ./target/pit-reports-ci
