Make WordPress Core

Changeset 51567 for trunk/phpcs.xml.dist

08/07/2021 10:20:05 AM (3 years ago)

Build/Test Tools: Use the PHPUnit Polyfill TestCase as void workaround.

PHPUnit 8.0.0 introduced a void return type declaration to the "fixture" methods – setUpBeforeClass(), setUp(), tearDown() and tearDownAfterClass(). As the void return type was not introduced until PHP 7.1, this makes it more difficult to create cross-version compatible tests when using fixtures, due to signature mismatches.

The Yoast\PHPUnitPolyfills\TestCases\TestCase overcomes the signature mismatch by having two versions. The correct one will be loaded depending on the PHPUnit version being used.

When using this TestCase, if an individual test, or another TestCase which extends this TestCase, needs to overload any of the "fixture" methods, it should do so by using a snake_case variant of the original fixture method name, i.e. set_up_before_class(), set_up(), assert_pre_conditions(), assert_post_conditions(), tear_down(), and tear_down_after_class().

The snake_case methods will automatically be called by PHPUnit.

IMPORTANT: The snake_case methods should not call the PHPUnit parent, i.e. do not use parent::setUp() from within an overloaded set_up() method. If necessary, DO call parent::set_up().


This commit:

  • Lets the PHPUnit_Adapter_TestCase extend the Yoast\PHPUnitPolyfills\TestCases\TestCase, which makes this solution for the void return type available to the WordPress test suite.
  • Removes the individual import and trait use statements for the Polyfill traits. These are no longer necessary as the Yoast\PHPUnitPolyfills\TestCases\TestCase already includes those.

Follow-up to [51559-51566].

Props jrf, hellofromTonya, johnbillion, netweb, SergeyBiryukov.
See #46149.

1 edited


  • trunk/phpcs.xml.dist

    r51122 r51567  
    236236            <property name="custom_test_class_whitelist" type="array">
    237237                <!-- Test case parent classes. -->
     238                <element value="PHPUnit_Adapter_TestCase"/>
    238239                <element value="WP_UnitTestCase"/>
    239240                <element value="WP_Ajax_UnitTestCase"/>
    268269                <element value="SpeedTrapListener"/>
    269270                <element value="PHPUnit_Framework_Exception"/>
     271                <element value="Polyfill_TestCase"/>
    270272            </property>
    271273        </properties>
Note: See TracChangeset for help on using the changeset viewer.