[node-core-library] Fix semantics of RealNodeModulePath #5042
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.
Summary
Updates
RealNodeModulePath
to match the behavior offs.realpathSync.native
with respect to relative paths and trailing slashes.Details
Relative paths go through
path.resolve
, which will join them with the current working directory.If the path has one or more trailing path separators, they will be removed, unless the path is a root, at which point it will be normalized to one trailing path separator.
Switched to using
path.join
to ensure that empty path segments get pruned.This will somewhat slow the performance, since
path.parse
andpath.format
are a bit more work that previous API calls, but it will produce correct results on Windows when link targets are absolute paths with trailing path separators.How it was tested
Additional unit tests.
Impacted documentation
None. Semantics of
fs.realpathSync.native
are matched, as is the purpose of the API.