Skip to content

Nightly mutation breadth audit #3

Nightly mutation breadth audit

Nightly mutation breadth audit #3

name: Nightly mutation breadth audit
# Broad replay changes source in place and runs all package targets. A separate
# scheduled checkout keeps that expensive audit out of the train's critical path.
on:
schedule:
- cron: "0 8 * * *"
concurrency:
group: mutations-audit-${{ github.ref }}
cancel-in-progress: true
jobs:
audit:
strategy:
fail-fast: false
matrix:
runner: [ubuntu-24.04, windows-2025]
runs-on: ${{ matrix.runner }}
env:
CARGO_TERM_COLOR: always
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_TEST_DEBUG: "0"
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install cargo-nextest
shell: bash
run: |
if [ "$RUNNER_OS" = "Windows" ]; then
curl.exe --fail --location --silent --show-error --ssl-revoke-best-effort --retry 3 --output nextest.tar.gz https://get.nexte.st/latest/windows-tar
tar zxf nextest.tar.gz -C "$HOME/.cargo/bin"
rm nextest.tar.gz
else
curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C "${CARGO_HOME:-$HOME/.cargo}/bin"
fi
cargo nextest --version
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Install mutation checker dependency
run: python -m pip install PyYAML==6.0.3
- name: Install pinned mutation runner
shell: bash
run: |
cargo install --locked --git https://github.com/cortexkit/commons --rev a2db1cfd9149424257bbed675c55434d0915138e cortexkit-mutate
ckdev-mutate --version
- name: Audit all package test targets
shell: bash
run: |
mkdir -p target/mutations
python scripts/prepare-mutation-audit.py mutations.d target/mutations/broad.toml
ckdev-mutate --catalogue target/mutations/broad.toml check
ckdev-mutate --catalogue target/mutations/broad.toml run --all --broad --report target/mutations/nightly.json
- name: Retain breadth evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: mutations-nightly-${{ matrix.runner }}-${{ github.run_id }}
path: target/mutations/nightly.json
if-no-files-found: error