Make WordPress Core

Opened 3 months ago

Last modified 28 hours ago

#60705 new task (blessed)

Test tool and unit test improvements for 6.6

Reported by: sergeybiryukov's profile SergeyBiryukov Owned by:
Milestone: 6.6 Priority: normal
Severity: normal Version:
Component: Build/Test Tools Keywords: has-patch has-unit-tests
Focuses: Cc:

Description

Previously:

This ticket is for various fixes and improvements in PHPUnit tests that don't have a more specific ticket, as well as general improvements to the GitHub Actions workflows that run automated testing.

Change History (8)

This ticket was mentioned in PR #5100 on WordPress/wordpress-develop by @johnbillion.


3 months ago
#1

  • Keywords has-patch has-unit-tests added

Trac ticket:
https://core.trac.wordpress.org/ticket/60705
https://core.trac.wordpress.org/ticket/59647
https://core.trac.wordpress.org/ticket/58955

This changes several instances of test skipping to test failures, and removes some unnecessary function_exists() checks for compat functions.

If any of the checks in these test aren't satisfied then the test should fail rather than be skipped.

In addition, I removed some multisite test skipping which is redundant as it's handled by the ms-required and ms-excluded test group handling.

Previously:

This ticket was mentioned in PR #5849 on WordPress/wordpress-develop by @hellofromTonya.


3 months ago
#2

Reorganizes the hooks tests to align to coding standards and consistency within the test suite.

  • [X] Moves WP_Hooks method tests to into separate directory <GroupName>/<className>/<methodName>.php.
  • [X] Splits the function tests in actions.php and filters.php into separate test classes within the tests/hooks/ directory.
  • [ ] Add assertion failure message to each instance where there are more than 1 assertion in the test method.

Trac ticket:
https://core.trac.wordpress.org/ticket/60705
https://core.trac.wordpress.org/ticket/59647

#3 @SergeyBiryukov
2 months ago

In 57861:

Tests: Remove unnecessary use of utf8_encode() in KSES tests.

One of the tests for the wp_kses_xml_named_entities() function used utf8_encode( chr( 160 ) ) to set an expectation of a Unicode character for a non-breaking space.

It is understandable that this expectation was previously set this way, as it is not possible for a developer to distinguish between a breaking space and a non-breaking space visually, so the chances of the test accidentally breaking on an incorrect save when the plain Unicode character would be used, was high.

However, the utf8_encode() function is deprecated as of PHP 8.2, and its use needs to be removed from the WP codebase.

PHP 7.0 has introduced Unicode escape sequences, which allows to create a text string using Unicode characters referenced by their codepoint. By switching the test case to provide the test expectation using a Unicode escape sequence, we remove the use of the deprecated PHP function and still preserve the safeguard against the test accidentally breaking.

Follow-up to [52229].

Props jrf, afercia, poena, SergeyBiryukov.
See #55603, #60705.

#4 @SergeyBiryukov
8 weeks ago

In 57892:

Tests: Use an existing user fixture in the test for logging in with an email address.

Creating a new user is redundant here, the fixture shared by other tests can be used instead.

Follow-up to [36617].

See #60705.

#5 @SergeyBiryukov
11 days ago

In 58136:

Tests: Move add_settings_section() tests to a more appropriate place.

Follow-up to [54247].

See #60705.

#6 @SergeyBiryukov
3 days ago

In 58176:

Tests: Correct a number of invalid @covers tags.

This resolves a few warnings when running PHPUnit with the code coverage report:

"@covers WP_Privacy_Requests_List_Table::get_views" is invalid
"@covers WP_Block_Bindings_Registry::register_block_bindings_source" is invalid
"@covers WP_Block_Patterns_Registry::_register_theme_block_patterns" is invalid

The two removed @coversDefaultClass annotations are redundant, as the class name is already included in the individual @covers tags. Removing them allows @covers ::_register_theme_block_patterns to work as expected, where _register_theme_block_patterns is an standalone function, not a class method.

Follow-up to [54215], [56733], [57373], [57562].

See #60705.

#7 @SergeyBiryukov
2 days ago

In 58181:

Tests: Use assertSame() in block support tests.

This ensures that not only the return values match the expected results, but also that their type is the same.

Going forward, stricter type checking by using assertSame() should generally be preferred to assertEquals() where appropriate, to make the tests more reliable.

Includes renaming a few test classes per the naming conventions.

Reference: Writing PHP Tests: Naming and Organization.

Follow-up to [53076], [53085], [54497], [56046], [56614], [57246], [57491].

See #60705.

#8 @SergeyBiryukov
28 hours ago

In 58183:

Tests: Use assertSame() in navigation fallback tests.

This ensures that not only the return values match the expected results, but also that their type is the same.

Going forward, stricter type checking by using assertSame() should generally be preferred to assertEquals() where appropriate, to make the tests more reliable.

Follow-up to [56052].

See #60705.

Note: See TracTickets for help on using tickets.