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

Composer/PHPCS: update to YoastCS 3.0.0 #151

Merged
merged 1 commit into from
Dec 14, 2023

Conversation

jrfnl
Copy link
Collaborator

@jrfnl jrfnl commented Dec 14, 2023

YoastCS 3.0.0 has been released and is based on WordPressCS 3.0.0.

This commit makes the necessary updates for that:

  • Composer: update the requirements.
  • PHPCS ruleset:
    • Exclude new WP specific rules which don't apply to this package.
    • Exclude code modernization sniffs which can't be applied to this package yet.
    • Enforce strict PSR-4 for both src and tests.
    • Add a few selective exclusions for specific situations.
  • GHA CS workflow: run the CS check on the latest PHP version.
    No need to run on PHP 7.4 any more as the deprecations previously encountered were all fixed.
  • Add one selective ignore annotation for a long closure (autoloader in the test bootstrap).

While YoastCS 3.0.0 contains lots of goodies, it also has a downside: a minimum PHP requirement of PHP 7.2, which conflicts with the minimum supported PHP version of this package.

This causes two issues:

  1. A plain composer install will no longer work on PHP < 7.2.
    This means the YoastCS package will need to be removed for the CI linting and test workfows.
  2. As the (Parallel) linting packages are "inherited" from YoastCS, removing YoastCS would break the linting command in CI, so we need to require-dev the Parallel Lint packages in PHPUnit Polyfills itself to allow the workflow to continue to work.

Refs:

YoastCS 3.0.0 has been released and is based on WordPressCS 3.0.0.

This commit makes the necessary updates for that:
* Composer: update the requirements.
* PHPCS ruleset:
    - Exclude new WP specific rules which don't apply to this package.
    - Exclude code modernization sniffs which can't be applied to this package yet.
    - Enforce strict PSR-4 for both src and tests.
    - Add a few selective exclusions for specific situations.
* GHA CS workflow: run the CS check on the latest PHP version.
    No need to run on PHP 7.4 any more as the deprecations previously encountered were all fixed.
* Add one selective ignore annotation for a long closure (autoloader in the test bootstrap).

While YoastCS 3.0.0 contains lots of goodies, it also has a downside: a minimum PHP requirement of PHP 7.2, which conflicts with the minimum supported PHP version of this package.

This causes two issues:
1. A plain `composer install` will no longer work on PHP < 7.2.
    This means the YoastCS package will need to be removed for the CI linting and test workfows.
2. As the (Parallel) linting packages are "inherited" from YoastCS, removing YoastCS would break the linting command in CI, so we need to `require-dev` the Parallel Lint packages in PHPUnit Polyfills itself to allow the workflow to continue to work.

With those two work-arounds in place, everything should work again.

Refs:
* https://github.com/Yoast/yoastcs/releases/tag/3.0.0
* https://github.com/WordPress/WordPress-Coding-Standards/releases/tag/3.0.0
@coveralls
Copy link

Coverage Status

coverage: 97.254%. remained the same
when pulling d42ef7f on JRF/CS/update-phpcs-ruleset-yoastcs-3.0.0
into 2d0d527 on 1.x.

@jrfnl jrfnl merged commit f07cf7b into 1.x Dec 14, 2023
84 checks passed
@jrfnl jrfnl deleted the JRF/CS/update-phpcs-ruleset-yoastcs-3.0.0 branch December 14, 2023 21:29
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.

2 participants