Add stub for Testing module #5077
Merged
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.
Now that swift-testing is present in the toolchain, SwiftPM builds of the test target in this package will automatically import
Testing
, causing our test target to link theTesting
library in the toolchain. This is problematic, because theTesting
module links Foundation (from the toolchain) which results in a variety of issues and crashes when running our tests caused by the presence of two Foundations (classes of the same name are indistinguishable and one implementation is nondeterministically picked leading to failures when bridging). To resolve this, we will use the same solution we found for XCTest - to vendor a small copy of the library within our project that will be picked up instead of the toolchain version. In our case, we only need a small stub because we don't actually use theTesting
module yet.In the future, now that SwiftPM supports cycles in package dependencies as long as there is no target-level cycle, we could update the package build to use the package build of swift-testing (which we could have rely on the package build of Foundation thus ensuring only one Foundation is present) but for now this simple solution gets us building and testing again.