Skip to content

SPM support — SPMResultParser#48

Merged
ericodx merged 3 commits intomainfrom
incompatible-mutant-executor
Mar 31, 2026
Merged

SPM support — SPMResultParser#48
ericodx merged 3 commits intomainfrom
incompatible-mutant-executor

Conversation

@ericodx
Copy link
Copy Markdown
Owner

@ericodx ericodx commented Mar 31, 2026

Summary

  • Phase 7 — Result parsing consolidation: Extracted a dedicated SPMResultParser struct under Execution/Parsing/, symmetric to the existing ResultParser. Both TestExecutionStage and IncompatibleMutantExecutor had an identical private spmOutcome method — these are removed and replaced with SPMResultParser().parse(exitCode:output:).
  • SPMResultParser.parse maps exit codes and TestOutputParser results to TestRunOutcome: -1 → timedOut, 0 → testsSucceeded, non-zero → killed / crashed / unviable via TestOutputParser. No xcresulttool involvement.

Type of Change

  • feat: A new feature has been added.
  • fix: A bug has been fixed.
  • perf: A code change that improves performance.
  • refactor: A code change that neither fixes a bug nor adds a feature.
  • test: Addition or correction of tests.
  • docs: Changes only to the documentation.
  • ci: Changes related to continuous integration and deployment scripts.
  • build: Changes that affect the build system or external dependencies.
  • deps: Dependency version upgrades with no logic changes.
  • chore: Other changes that do not fit into the previous categories.
  • revert: Reverts a previous commit.

Invariants Checklist

  • Original project is never modified — all mutations happen inside an isolated sandbox
  • xcodebuild build-for-testing runs exactly once for all schematizable mutants
  • No mutant results are lost or duplicated
  • Mutant positions (file, line, column) are accurate in all reported results
  • A cancelled task never leaves a simulator slot permanently acquired from the pool
  • schematizedContent never contains the __swiftMutationTestingID global declaration
  • Swift 6 Strict Concurrency compatible
  • Pipeline stages remain stateless pure transformations

Pipeline Impact

Which stages are affected?

  • SandboxFactory
  • BuildStage
  • SimulatorPool
  • TestExecutionStage
  • IncompatibleMutantExecutor
  • PerFileBuildFallback
  • CacheStore
  • Reporters (Text / JSON / HTML / Sonar)
  • CLI / Configuration
  • Models / RunnerInput contract
  • None

Testing

  • Unit tests added or updated
  • Tests use mock ProcessLaunching — no real xcodebuild, xcrun simctl, or xcresulttool
  • Tests use FileHelpers for any filesystem interaction (temp directories only)
  • Snapshot tests added or updated (if reporter output format changed)
  • Integration tests added or updated and tagged separately (if pipeline or CLI behavior changed)
  • All tests pass locally (swift test)

@ericodx ericodx self-assigned this Mar 31, 2026
@ericodx ericodx changed the title Incompatible mutant executor refactor: SPM support — Phase 7 (SPMResultParser) Mar 31, 2026
@ericodx ericodx added refactor Code change that neither fixes a bug nor adds a feature test Addition or correction of tests labels Mar 31, 2026
@ericodx ericodx changed the title refactor: SPM support — Phase 7 (SPMResultParser) SPM support — SPMResultParser Mar 31, 2026
@ericodx ericodx merged commit 2292540 into main Mar 31, 2026
1 check passed
@ericodx ericodx deleted the incompatible-mutant-executor branch March 31, 2026 02:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

refactor Code change that neither fixes a bug nor adds a feature test Addition or correction of tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant