fix(path): fix common() results that depend on the order and/or number of input paths #4414
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.
This pull request addresses (and adds tests for) cases where
common()
returns different values depending on the order and/or number of the input paths, when different results may not be intended.For example in this case it's probably expected that both cases return an empty string:
In the next case the result depends on the number of paths, even if the paths are all equal. The expected result in both cases is likely
'/foo/bar'
:This pull request adds a variable (
append
) to track whether a separator should be appended to the end of the result string. Early returns are removed to keep this tracking consistent. The performance doesn't seem to degrade in the following tested case:Results for Deno v1.41.0, MacOS 14.3.1: