Make WordPress Core


Ignore:
Timestamp:
08/21/2023 03:53:04 PM (8 months ago)
Author:
SergeyBiryukov
Message:

Build/Test Tools: Update PHPUnit Polyfills to version 1.1.0.

PHPUnit 9.6.1 deprecated the assertObjectHasAttribute() and assertObjectNotHasAttribute() methods, leading to deprecation notices in a number of tests.

PHPUnit 10.1.0 brought the methods back by popular request, though renamed as assertObjectHasProperty() and assertObjectNotHasProperty(), to prevent confusion with PHP 8.0 attributes.

This meant that users which cannot (yet) upgrade to PHPUnit 10.1+ would always have deprecation notices for these methods without recourse. So, after much discussion, the new methods have been backported to PHPUnit 9.6.11, leaving just the 10.0.x series with a deprecation notice and no recourse.

What does this mean for WordPress?

WordPress uses the PHPUnit Polyfills to be able to write tests for the most recent versions of PHPUnit, with the Polyfills taking care of polyfilling any new PHPUnit methods on older PHPUnit versions.

  • The PHPUnit Polyfills 1.x series supports PHPUnit 4.x to 9.x.
  • The PHPUnit Polyfills 2.x series supports PHPUnit 5.x to 10.x.

WordPress currently runs against PHPUnit 6.x to 9.x with PHPUnit Polyfills 1.x, while the new methods were previously only included in PHPUnit Polyfills 2.0.0+, as they were introduced in PHPUnit 10.x.

Since the assertObjectHasProperty() and assertObjectNotHasProperty() methods have been backported to PHPUnit 9.x, the PHPUnit Polyfills will now include these methods in the 1.x series as well.

By upgrading to the latest PHPUnit Polyfills 1.1.0 release, we can get rid of the deprecation notices related to the use of the assertObjectHasAttribute() and assertObjectNotHasAttribute() methods.

This could have implications for plugins or themes running integration tests with WordPress if they have set their PHPUnit Polyfills dependency to a fixed version or have a too strict version constraint (limiting the PHPUnit Polyfills to the 1.0.x series). The solution for those plugins or themes is to update their version constraints for the PHPUnit Polyfills to allow for the 1.1.x series.

Follow-up to [51559], [51598].

Props jrf, ayeshrajans.
Fixes #59150.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/includes/abstract-testcase.php

    r56212 r56421  
    870870
    871871        foreach ( $fields as $field_name => $field_value ) {
    872             $this->assertObjectHasAttribute( $field_name, $actual, $message . " Property $field_name does not exist on the object." );
     872            $this->assertObjectHasProperty( $field_name, $actual, $message . " Property $field_name does not exist on the object." );
    873873            $this->assertSame( $field_value, $actual->$field_name, $message . " Value of property $field_name is not $field_value." );
    874874        }
Note: See TracChangeset for help on using the changeset viewer.