v1.1.0 — SPM support and testing framework detection #55
ericodx
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Swift Package Manager projects are now first-class citizens. The tool auto-detects whether the project is Xcode or SPM, resolves the testing framework in use, and runs the full mutation pipeline without requiring a scheme or destination for SPM targets.
What's new
Swift Package Manager support
Package.swiftis present and no scheme/destination is configured, the tool runs in SPM modeProjectTypeenum (.xcode(scheme:destination:)or.spm) drives all branching across the pipelineswift build/swift testinstead ofxcodebuildSPMProcessLauncherwith aggressive child process cleanup to prevent orphaned test processesTesting framework detection
TestingFrameworkenum (.xctestor.swiftTesting) with auto-detection by scanning test file imports--testing-frameworkCLI flag for explicit overrideconcurrency: 1to avoid parallel test runner conflictsinittemplate outputPlatform-aware timeouts
--timeoutas beforeResult parsing
TestResultResolvercentralises result parsing, delegating toResultParser(Xcode) orSPMResultParser(SPM)SPMResultParserhandles Swift Testing output format and classifies empty output as crashBuild resilience
FallbackExecutorextracted for per-file rebuild fallback on build failure — now supports both Xcode and SPM pathsBuildError.compilationFailednow carries compiler output for better diagnosticsProcess management
ProcessRequestandProcessRunnerextracted to reduce duplication between Xcode and SPM launchersXcodeProcessLauncherpreserves v1.0.0 behaviour;SPMProcessLauncheradds escaped child cleanupInfiniteLoopFilterskips mutations insidewhileandrepeat-whileloop bodies that would produce infinite loopsError reporting
LocalizedErrorconformance onBuildErrorandSimulatorErrorfor human-readable error messagesTextReporterformats total duration as minutes and secondsArchitecture changes
Discovery pipeline — expanded from 4 to 6 stages:
FileDiscoveryStageParsingStageParsedSourcevalues using SwiftSyntaxMutantDiscoveryStageMutantIndexingStageSchematizationStageIncompatibleRewritingStageExecution layer —
ExecutionDepsconsolidates shared dependencies (launcher, cache, reporter, counter) passed between executor and stage types.Configuration —
RunnerConfigurationnow nestsBuildOptions,ReportingOptions, andFilterOptions.DetectedProjectuses aKindenum (.xcodeor.spm) for project detection results.Bug fixes
Internal improvements
IncompatibleMutantExecutorandProjectDetectorDiscoveryPipeline,SchemataGenerator, andMutationRewriterCalcLibrary) added for end-to-end validationRequirements
Installation
See the Installation Guide for Homebrew, pre-built binary, and build from source instructions.
What's Changed
Full Changelog: v1.0.0...v1.1.0
This discussion was created from the release v1.1.0 — SPM support and testing framework detection.
All reactions