[wp-trac] [WordPress Trac] #55897: Add tests for path_join()

WordPress Trac noreply at wordpress.org
Fri Jun 3 15:08:45 UTC 2022


#55897: Add tests for path_join()
-------------------------------------------------+-------------------------
 Reporter:  karlijnbk                            |       Owner:  karlijnbk
     Type:  enhancement                          |      Status:  assigned
 Priority:  normal                               |   Milestone:  6.1
Component:  General                              |     Version:  trunk
 Severity:  normal                               |  Resolution:
 Keywords:  has-patch has-unit-tests dev-        |     Focuses:
  feedback                                       |
-------------------------------------------------+-------------------------

Comment (by SergeyBiryukov):

 Replying to [comment:9 SergeyBiryukov]:
 > Looks like you're right about including it in the first return, and we
 should include a test case for a path with multiple slashes.

 A test case was added in [53461].

 Thinking about it some more, I believe the current behavior is correct:
 Windows supports any combination of two or more leading slashes or
 backslashes in network shares:

 * `\\host\share`
 * `\\host/share`
 * `//host\share`
 * `//host/share`
 * `\\\host\share`
 * `\\\host/share`
 * `///host\share`
 * `///host/share`

 So using `return '/' . ltrim( $path, '/' )` in case of an absolute path
 would break it, keeping only a single slash or introducing a mix of
 slashes. We could limit the leading slashes or backslashes to two, but
 that would make the function a bit more complicated without an obvious
 benefit.

 There are a few further enhancements that could be made here:

 * Making sure that `$base` and `$path` are both indeed strings. This could
 use some discussion on how to handle and what to return in case of an
 invalid input.
 * Normalizing the slashes and adding test cases for mixed slashes.
 * Limiting the leading slashes to two and adding test cases for more than
 two slashes.

 I think they should be explored in a new ticket, as this one was focused
 on adding some tests for the current behavior.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/55897#comment:13>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list