feat: warn when SwiftSyntaxMacrosTestSupport is used with Swift Testing (#3190) #3217
+83
−2
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.
Description:
This PR addresses #3190 by adding a runtime safety guard to
SwiftSyntaxMacrosTestSupport. This is a stop-gap measure until full Swift Testing support (#2720) is implemented.The Problem
SwiftSyntaxMacrosTestSupportis XCTest-based. When used with the new Swift Testing framework, assertions may fail silently or produce false positives, leading to developer confusion.The Solution
I have added a thread-safe, once-per-process runtime check in
_SwiftTestingDetection.swift.Key Features:
SWIFT_TESTING_) and command-line arguments.NSLockandnonisolated(unsafe)to satisfy strict concurrency requirements.stderrthat is "hard to miss."SWIFTSYNTAX_TESTSUPPORT_SILENCE=1: Suppresses the warning.SWIFTSYNTAX_TESTSUPPORT_STRICT=1: Triggers apreconditionFailurefor strict enforcement.Verification