Darwin SearchPaths without expanding tilde produce non-tilde-based paths #1069
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.
The
String
, ObjC-based search path enumeration calls the Swift implementation which produces aURL
and then converts each URL back to aString
path. This process is actually making paths absolute which is fine for Swift use cases, but the ObjC API has an option to prevent expansion of the tilde directory. By passing those unexpanded paths throughURL
, we end up with paths like/Users/USER/Library
which are incorrect because the tilde is expanded.To avoid these behaviors and maintain support for the "legacy" ObjC behavior for string paths, I shuffled the functions around just a bit so that the implementation creates
String
s instead ofURL
s and only converts toURL
for the Swift API. This also allows us to test theString
results directly in our unit tests to add a test that validates this behavior even in non-FOUNDATION_FRAMEWORK
builds.