Add Stryker mutation-testing workflow (T3)#186
Closed
Chris-Wolfgang wants to merge 2 commits into
Closed
Conversation
New .github/workflows/stryker.yaml runs Stryker.NET against the repo's test projects on workflow_dispatch and a weekly schedule. The workflow is a no-op until a stryker-config.json is added at repo root or under tests/<project>/ — this commit is the canonical infrastructure; per-repo Stryker config is the follow-up. Initiative T3. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a dedicated GitHub Actions workflow to run Stryker.NET mutation testing on-demand or weekly, and publish the generated mutation report as an artifact.
Changes:
- Introduces
.github/workflows/stryker.yamlwithworkflow_dispatch+ weekly cron triggers. - Detects
stryker-config.json(root ortests/**/) and skips the run with a notice if none is present. - Runs Stryker and uploads
StrykerOutputas a 30-day artifact.
Comment on lines
+26
to
+28
| - name: Check out repo | ||
| uses: actions/checkout@v4 | ||
|
|
Comment on lines
+43
to
+46
| - name: Setup .NET | ||
| if: steps.check.outputs.found == 'true' | ||
| uses: actions/setup-dotnet@v4 | ||
| with: |
Comment on lines
+47
to
+50
| dotnet-version: | | ||
| 8.0.x | ||
| 10.0.x | ||
|
|
Comment on lines
+34
to
+38
| configs=(stryker-config.json tests/**/stryker-config.json) | ||
| if (( ${#configs[@]} )); then | ||
| printf 'found=true\n' >> "$GITHUB_OUTPUT" | ||
| printf 'configs<<EOF\n%s\nEOF\n' "${configs[*]}" >> "$GITHUB_OUTPUT" | ||
| else |
- .github/workflows/stryker.yaml: replace literal-in-array config detection with explicit [ -f ] checks. nullglob only drops words that look like globs (contain *, ?, [); the bare literal 'stryker-config.json' was preserved unconditionally, so the workflow would mark found=true and attempt to install Stryker even on repos with no config. - actions/checkout@v4 -> @v6 and setup-dotnet@v4 -> @v5 for consistency with the rest of the fleet's workflows. Fan-out of the round-2 Copilot fixes verified against DateTime-Extensions (#181 pilot). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Owner
Author
|
Superseded by the canonical-protected PR (#184). The T3 commit (and the round-2 fix) has been folded into |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
.github/workflows/stryker.yaml— canonical Stryker.NET mutation-testing workflow.workflow_dispatchand a weekly Sunday schedule (mutation runs are slow — not on every PR).stryker-config.jsonat repo root or undertests/**/. If none present, the run is a no-op and logs a notice. Per-repo Stryker config is a follow-up; this PR is the canonical infrastructure.Why this is a protected PR
.github/workflows/*trips thepr.yamlDetect .NET Projects guard, so this PR needs a maintainer admin bypass. It is kept minimal — one new workflow file, no behavior change to existing CI.Initiative T3.
🤖 Generated with Claude Code