Skip to content

Add Stryker mutation-testing workflow (T3)#186

Closed
Chris-Wolfgang wants to merge 2 commits into
mainfrom
t3-stryker-mutation-testing
Closed

Add Stryker mutation-testing workflow (T3)#186
Chris-Wolfgang wants to merge 2 commits into
mainfrom
t3-stryker-mutation-testing

Conversation

@Chris-Wolfgang

Copy link
Copy Markdown
Owner

Summary

Adds .github/workflows/stryker.yaml — canonical Stryker.NET mutation-testing workflow.

  • Triggers on workflow_dispatch and a weekly Sunday schedule (mutation runs are slow — not on every PR).
  • Detects stryker-config.json at repo root or under tests/**/. 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.
  • Uploads the StrykerOutput report as a 30-day artifact.

Why this is a protected PR

.github/workflows/* trips the pr.yaml Detect .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

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>
Copilot AI review requested due to automatic review settings May 23, 2026 01:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.yaml with workflow_dispatch + weekly cron triggers.
  • Detects stryker-config.json (root or tests/**/) and skips the run with a notice if none is present.
  • Runs Stryker and uploads StrykerOutput as 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 thread .github/workflows/stryker.yaml Outdated
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>
@Chris-Wolfgang

Copy link
Copy Markdown
Owner Author

Superseded by the canonical-protected PR (#184). The T3 commit (and the round-2 fix) has been folded into canonical-protected via merge commit. Keeping the T3 work on its own branch would have meant two admin-bypass merges per repo (one for canonical-protected, one for T3); folding it in collapses that to one. Closing this PR; the branch can be deleted once the consolidation is reviewed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants