[wp-trac] [WordPress Trac] #46149: PHPUnit 8.x support
WordPress Trac
noreply at wordpress.org
Sat Aug 7 10:20:21 UTC 2021
#46149: PHPUnit 8.x support
-------------------------------------------------+-------------------------
Reporter: SergeyBiryukov | Owner: netweb
Type: task (blessed) | Status: assigned
Priority: high | Milestone: 5.9
Component: Build/Test Tools | Version:
Severity: normal | Resolution:
Keywords: has-patch has-unit-tests early php8 | Focuses:
needs-dev-note |
-------------------------------------------------+-------------------------
Comment (by SergeyBiryukov):
In [changeset:"51567" 51567]:
{{{
#!CommitTicketReference repository="" revision="51567"
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()`.
Reference: https://github.com/Yoast/PHPUnit-Polyfills#testcases
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.
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/46149#comment:83>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list