Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve tests setup #949

Merged
merged 16 commits into from
Jul 24, 2023
Merged

Improve tests setup #949

merged 16 commits into from
Jul 24, 2023

Conversation

GaryJones
Copy link
Contributor

Description

Update the integrations tests and CI process to cover newer PHP versions.

  • Introduce Yoast/WP-Test-Utils and PHPUnit 9.
  • Update the prepare test script and bootstrap files.
  • Fix up incorrect uses of factory property to use a factory() method.
  • Update deprecated or removed assertions.
  • Refresh the PHPUnit config.
  • Identify multisite-specific tests via @group instead of skipping tests.
  • Apply fixes for running under PHP 8.1 and 8.2, including defining dynamic properties.
  • Remove a test that wasn't testing anything about CAP.
  • Update the CI test matrix to cover highest and lowest WP version, and highest and lowest PHP 7.x and 8.x versions.

Deploy Notes

None.

Steps to Test

See this action.

This package combines the previously used PHPUnit_Polyfills with support for WordPress integration tests.
Needed to make tests compatible with multiple versions of PHPUnit.
This was deprecated in PHPUnit 8 and removed in PHPUnit 9, but the dms/phpunit-arraysubset-asserts means it can continue to be used for now.
PHPUnit 9 deprecates `assertObjectHasAttribute()`. `assertObjectHasProperty()` is not available until PHPUnit 10.1, and only available with PHPUnit-Polyfills 2.0.0, which doesn't seem compatible with unit tests running under WP 5.7/5.8.
This was deprecated in PHPUnit 8 in favour of more specific method names.
Use `assertStringNotContainsString()` instead.
- Removes constant that was making all tests run with multisite.
- Converts deprecations to exceptions to be true.
By marking certain tests as being in a `@group`, and excluding them, then we can get a green result instead of yellow "tests skipped" results that we would do by marking tests as skipped of the single/multisite condition was not correct.
- Mark one test as requiring multisite.
- Remove the other test, as it was causing an issue, and doesn't seem to be testing anything about CAP anyway.
- Make dynamic properties explicit.
- Skip a test that generates a deprecation notice in PHP 8.1 + WP < 6.3.
Highest and lowest versions of PHP 7, and PHP 8.
Highest and lowest versions of WP, plus trunk.
See https://make.wordpress.org/core/2021/09/27/changes-to-the-wordpress-core-php-test-suite/#integration-tests-ci-changes - PHPUnit 9 removed a `PHPUnit\Util\Getopt` class, but the [fix](https://core.trac.wordpress.org/changeset/51570/) wasn't applied to WP until 5.9.

Also - exclude WP 5.7 on PHP 8.2 since it is not supported.
@GaryJones GaryJones added this to the 3.5.11 milestone Jul 24, 2023
@GaryJones GaryJones self-assigned this Jul 24, 2023
@GaryJones GaryJones merged commit c07ce27 into master Jul 24, 2023
10 checks passed
@GaryJones GaryJones deleted the improve/phpunit-setup branch July 24, 2023 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant