Repository navigation
Support explicit source module qualification for mocks - #604
Open
GtechGovind wants to merge 1 commit into
Open
GtechGovind wants to merge 1 commit into
GtechGovind wants to merge 1 commit into
Conversation
GtechGovind
marked this pull request as ready for review
October 17, 2026 06:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #128
I added an optional
sourceModuleconfiguration value so generated mocks and stubs can refer to their original declarations with a module-qualified name when imported modules share type names.Qualification covers inheritance,
MocksType, default implementations, type-erasure constraints and nested declaration namespaces. Generated mock/proxy names remain unchanged. The option is explicit rather than inferred from a configuration section name, and does not rewrite arbitrary member types.I added a Swift Package regression fixture with colliding class, protocol and namespace names in two imported modules, and wired it into the macOS package CI job.
Validation:
swift buildpassed.swift test --force-resolved-versionsinIntegrationTests/SourceModule: 4 tests passed.sourceModulefrom the fixture reproduced ambiguous-type compilation failures; restoring it passed.git diff --checkpassed.For the local Xcode suites, I generated the workspace with Tuist 4.53.4 and used command-line deployment-target overrides (macOS 12 and iOS 15) because the installed SDK no longer accepts the project's macOS 10.15 target. I generated mocks separately and set
GENERATE_TEST_MOCKS=NO; project deployment settings are unchanged. Rootswift testcannot run the Objective-C mock tests without the generated Xcode workspace, so the full suites were run through Xcode.