Skip to content

Parallelise mutation tests #135

Parallelise mutation tests

Parallelise mutation tests #135

name: mutation-tests
on:
push:
branches: [ main, release/* ]
pull_request:
branches: [ main, release/* ]
workflow_dispatch:
env:
DOTNET_CLI_TELEMETRY_OPTOUT: true
DOTNET_GENERATE_ASPNET_CERTIFICATE: false
DOTNET_NOLOGO: true
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: 1
NUGET_XMLDOC_MODE: skip
TERM: xterm
permissions:
contents: read
jobs:
mutations:
name: 'mutations-${{ matrix.name }}'
runs-on: windows-latest
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
include:
- name: core
target: Core
- name: extensions
target: Extensions
- name: legacy
target: Legacy
- name: rate-limiting
target: RateLimiting
- name: testing
target: Testing
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 0
- name: Setup .NET SDKs
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
with:
dotnet-version: |
6.0.x
8.0.x
- name: Setup .NET SDK
uses: actions/setup-dotnet@3e891b0cb619bf60e2c25674b222b8940e2c1c25 # v4.1.0
- name: Setup NuGet cache
uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.props') }}
restore-keys: ${{ runner.os }}-nuget-
- name: Run mutation tests for ${{ matrix.target }}
shell: pwsh
env:
MUTATION_TARGET: 'MutationTests${{ matrix.target }}'
SKIP_POLLY_ANALYZERS: 'true'
run: ./build.ps1 -Target ${env:MUTATION_TARGET}
- name: Upload Mutation Report
if: ${{ !cancelled() }}
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
with:
name: mutation-report-${{ matrix.name }}
path: ./artifacts/mutation-report
mutation-tests:
needs: [ mutations ]
if: ${{ always() }}
runs-on: ubuntu-latest
env:
MUTATIONS_SUCCESS: ${{ !contains(needs.*.result, 'failure') }}
steps:
- run: |
if [ "$MUTATIONS_SUCCESS" == "true" ]
then
echo 'Mutation tests successful ✅'
else
echo 'One or more mutation test runs failed ❌'
exit 1
fi