[wp-trac] [WordPress Trac] #53911: Test modernization backwards-compatibility backports to help extenders with WordPress cross-version testing

WordPress Trac noreply at wordpress.org
Thu Aug 12 22:23:06 UTC 2021

#53911: Test modernization backwards-compatibility backports to help extenders with
WordPress cross-version testing
 Reporter:  hellofromTonya    |       Owner:  johnbillion
     Type:  task (blessed)    |      Status:  assigned
 Priority:  normal            |   Milestone:  5.9
Component:  Build/Test Tools  |     Version:
 Severity:  normal            |  Resolution:
 Keywords:                    |     Focuses:

Comment (by jrf):

 I've done a careful assessment of what is feasible and necessary for the
 backports and @hellofromTonya and me have discussed this.

 As things are, we'd like to propose the following for the backports:

 == WordPress 5.2 - 5.8

 - Add PHPUnit Polyfills as a Composer dependency.
 - Add the Polyfill traits to the `WP_UnitTestCase`.
 - Add the loading of the Polyfill autoloader to the bootstrap in the same
 way as done for WP 5.9.
 - Add `set_up()`, `tear_down()` etc wrappers to the `WP_UnitTestCase`
 class. These fall through to the camelCase methods in the
 `WP_UnitTestCase_Base` class.
 - Add `set_up()`, `tear_down()` etc wrappers to the other WP native
 TestCases within the `tests/phpunit/includes` directory.

 == WordPress 5.1 and lower

 - Backport just and only the fixture method wrappers and nothing else.

 It is not an option to introduce the PHPUnit Polyfills to older WP
 versions as the minimum PHP requirement for the Polyfills in PHP 5.4, due
 to the use of traits.

 Integration test suites for plugins/themes which still support older WP
 versions, but have a minimum PHP requirement of PHP 5.4, can still
 introduce the Polyfills in their own test suite for those older WP

 At this point it is undecided ''how far back'' to backport the fixture
 method wrappers.

 == Impact Assessment

 ➕ Allows for (security) tests backported for WP Core itself to work
 without changes using the features as per WP 5.9 for WP 5.2 to 5.8. For
 older WP versions, some assertion/expectation method calls ''may'' need to
 be switched out for their "old" name.
 ➕ Allows integration tests to switch completely to snake_case fixture
 method names.
 ➕ Allows integration tests to use PHPUnit 9.x assertion and expectation
 methods via the Polyfills for WP 5.2 and higher. When the test suite would
 also need to run in combination with older WP versions, the Polyfills can
 still be used, as long as the tests are run on PHP 5.4 or higher.
 ➕ It prevents breaking integration test suites which haven't updated to
 the "WP 5.9 way" yet.

 ➖ Still limits running of the tests on WP < 5.9 to PHPUnit 5.x - 7.x.
 ➖ With as a consequence that integration tests will need to do some
 PHPUnit version juggling, probably via Composer, in their CI.

Ticket URL: <https://core.trac.wordpress.org/ticket/53911#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list