Tests: Use correct comparison in do_enclose() tests.

As per the PHP manual:
> If the `component` parameter is omitted, an associative array is returned.
> If the `component` parameter is specified, `parse_url()` returns a string (or an int, in the case of `PHP_URL_PORT`) instead of an array. If the requested component doesn't exist within the given URL, `null` will be returned.

Reference: [https://www.php.net/manual/en/function.parse-url.php#refsect1-function.parse-url-returnvalues PHP Manual: parse_url(): Return Values]

In this case, `parse_url()` is called with the `PHP_URL_PATH` as `$component`, but the returned value is subsequently checked against `false`.

In other words, this condition would previously always result in `true` and would lead to `null` potentially being passed to the PHP native `pathinfo()` function which expects a string.

On PHP 8.1, this would result in a test failure with a `pathinfo(): Passing null to parameter #1 ($path) of type string is deprecated` error.

Reference: [https://www.php.net/manual/en/function.pathinfo.php PHP Manual: pathinfo()]

Follow-up to [46175].

Props jrf.
See #53635.

git-svn-id: https://develop.svn.wordpress.org/trunk@51606 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2021-08-12 17:48:55 +00:00
parent 2985e902d4
commit 6406dbaca8

View File

@ -280,7 +280,7 @@ class Tests_Functions_DoEnclose extends WP_UnitTestCase {
$path = parse_url( $url, PHP_URL_PATH );
if ( false !== $path ) {
if ( null !== $path ) {
$extension = pathinfo( $path, PATHINFO_EXTENSION );
if ( isset( $fake_headers[ $extension ] ) ) {
return $fake_headers[ $extension ];