From 816c81fe76827f6fefc42fafe76b99aef872ce9b Mon Sep 17 00:00:00 2001 From: Erik van der Bas Date: Thu, 2 May 2024 19:33:19 +0200 Subject: [PATCH 1/5] chore: introduce phpcs and phpstan --- composer.json | 15 +++- phpcs.xml.dist | 140 +++++++++++++++++++++++++++++++ phpstan.neon | 13 +++ tests/TestTimberStarterTheme.php | 10 +-- tests/bootstrap.php | 14 ++-- 5 files changed, 176 insertions(+), 16 deletions(-) create mode 100644 phpcs.xml.dist create mode 100644 phpstan.neon diff --git a/composer.json b/composer.json index 8309e1c83..2c6a251ba 100644 --- a/composer.json +++ b/composer.json @@ -16,11 +16,14 @@ } ], "require": { - "timber/timber": "2.x-dev" + "timber/timber": "^2.1" }, "require-dev": { "automattic/wordbless": "^0.4.2", - "yoast/wp-test-utils": "^1.0" + "yoast/wp-test-utils": "^1.0", + "wp-coding-standards/wpcs": "^3.1", + "phpcompatibility/php-compatibility": "^9", + "szepeviktor/phpstan-wordpress": "^1.3" }, "extra": { "installer-paths": { @@ -33,10 +36,14 @@ "config": { "allow-plugins": { "roots/wordpress-core-installer": true, - "composer/installers": true + "composer/installers": true, + "dealerdirect/phpcodesniffer-composer-installer": true } }, "scripts": { - "test": "phpunit" + "test": "phpunit", + "cs": "@php ./vendor/bin/phpcs", + "cs:fix": "@php ./vendor/bin/phpcbf" } } + diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 000000000..2816c61cb --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,140 @@ + + + + + + + + + A custom set of code standard rules to check for WordPress themes. + + + + + + + + + + + + + + + . + + */node_modules/* + */wordpress/* + */vendor/* + */resources/* + */dist/* + */tests/* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *.php + + + + + + + + + + + + + diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 000000000..42238b3a8 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,13 @@ +parameters: + editorUrl: 'vscode://file/%%file%%:%%line%%' + level: 5 # Increase until "max" + paths: + - src/ + - page.php + excludePaths: + - tests/* + - docs/* + ignoreErrors: + +includes: + - vendor/szepeviktor/phpstan-wordpress/extension.neon \ No newline at end of file diff --git a/tests/TestTimberStarterTheme.php b/tests/TestTimberStarterTheme.php index d52d901e1..33a6651ae 100644 --- a/tests/TestTimberStarterTheme.php +++ b/tests/TestTimberStarterTheme.php @@ -6,15 +6,15 @@ class TestTimberStarterTheme extends BaseTestCase { public function set_up() { - switch_theme( basename( dirname( __DIR__ ) ) . '/theme' ); + switch_theme(basename(dirname(__DIR__)) . '/theme'); - require dirname( __DIR__ ) . '/functions.php'; + require dirname(__DIR__) . '/functions.php'; - Timber::$dirname = array_merge( (array) Timber::$dirname, [ '../views' ] ); - Timber::$dirname = array_unique( Timber::$dirname ); + Timber::$dirname = array_merge((array) Timber::$dirname, [ '../views' ]); + Timber::$dirname = array_unique(Timber::$dirname); // WorDBless includes wp-settings.php - do_action( 'after_setup_theme' ); + do_action('after_setup_theme'); parent::set_up(); } diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 9ffd4932e..fb3f98213 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -2,7 +2,7 @@ use WorDBless\Load; -if (! file_exists( dirname(__DIR__) . '/wordpress/wp-content')) { +if (! file_exists(dirname(__DIR__) . '/wordpress/wp-content')) { mkdir(dirname(__DIR__) . '/wordpress/wp-content'); } @@ -11,18 +11,18 @@ } copy( - dirname( __DIR__ ) . '/vendor/automattic/wordbless/src/dbless-wpdb.php', - dirname( __DIR__ ) . '/wordpress/wp-content/db.php' + dirname(__DIR__) . '/vendor/automattic/wordbless/src/dbless-wpdb.php', + dirname(__DIR__) . '/wordpress/wp-content/db.php' ); -$theme_base_name = basename( dirname( __DIR__ ) ); -$src = realpath( dirname( dirname( __DIR__ ) ) . '/' . $theme_base_name ); -$dest = dirname( __DIR__ ) . '/wordpress/wp-content/themes/' . $theme_base_name; +$theme_base_name = basename(dirname(__DIR__)); +$src = realpath(dirname(dirname(__DIR__)) . '/' . $theme_base_name); +$dest = dirname(__DIR__) . '/wordpress/wp-content/themes/' . $theme_base_name; if ( is_dir($src) && ! file_exists($dest) ) { symlink($src, $dest); } -require_once dirname( __DIR__ ) . '/vendor/autoload.php'; +require_once dirname(__DIR__) . '/vendor/autoload.php'; Load::load(); From ee933d8f544ce0ca7f793d3cb1bfda4a1d65cbf8 Mon Sep 17 00:00:00 2001 From: Erik van der Bas Date: Fri, 3 May 2024 12:14:14 +0200 Subject: [PATCH 2/5] feat: add phpstan command and expand config --- composer.json | 3 ++- phpstan.neon | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 2c6a251ba..d07258717 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,8 @@ "scripts": { "test": "phpunit", "cs": "@php ./vendor/bin/phpcs", - "cs:fix": "@php ./vendor/bin/phpcbf" + "cs:fix": "@php ./vendor/bin/phpcbf", + "phpstan": "@php ./vendor/bin/phpstan analyse" } } diff --git a/phpstan.neon b/phpstan.neon index 42238b3a8..5ce8f6de7 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -3,10 +3,12 @@ parameters: level: 5 # Increase until "max" paths: - src/ - - page.php + - %currentWorkingDirectory%/ excludePaths: - tests/* - docs/* + - vendor/* + - wordpress/* ignoreErrors: includes: From b0d74340bc681afb6a84a41ff9e88b2d27b8f5c7 Mon Sep 17 00:00:00 2001 From: Erik van der Bas Date: Mon, 20 May 2024 14:07:18 +0200 Subject: [PATCH 3/5] chore: add phpcs 10-up --- composer.json | 4 +- phpcs.xml.dist | 134 +++++-------------------------------------------- 2 files changed, 15 insertions(+), 123 deletions(-) diff --git a/composer.json b/composer.json index 7db81db72..57e3c4889 100644 --- a/composer.json +++ b/composer.json @@ -43,7 +43,8 @@ "yoast/wp-test-utils": "^1.0", "wp-coding-standards/wpcs": "^3.1", "phpcompatibility/php-compatibility": "^9", - "szepeviktor/phpstan-wordpress": "^1.3" + "szepeviktor/phpstan-wordpress": "^1.3", + "10up/phpcs-composer": "^3.0" }, "extra": { "installer-paths": { @@ -67,4 +68,3 @@ "phpstan": "@php ./vendor/bin/phpstan analyse" } } - diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 2816c61cb..22bcb0a1a 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -1,36 +1,6 @@ - - - - - - - - A custom set of code standard rules to check for WordPress themes. - - - - - - - - - - - - - - + + . */node_modules/* @@ -39,102 +9,24 @@ */resources/* */dist/* */tests/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - *.php - - - - - - - - - - - - - + \ No newline at end of file From fb79cbc45041da9bca4b2948d9fc28de56fe66f2 Mon Sep 17 00:00:00 2001 From: Erik van der Bas Date: Tue, 21 May 2024 13:47:34 +0200 Subject: [PATCH 4/5] chore: update tested PHP version to 8.1 --- .github/workflows/test.yml | 31 +++++++++++++------------------ phpcs.xml.dist | 2 +- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1f3665db9..18a82160a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,37 +26,32 @@ jobs: strategy: fail-fast: false matrix: - php: ['7.4', '8.0', '8.1'] + php: ['8.1', '8.2'] wp: ['latest'] multisite: ['0', '1'] extensions: ['gd'] + coverage: [false] experimental: [false] include: - # WP Trunk - - php: '7.4' + # PHP 8.2 / experimental + - php: '8.2' wp: 'trunk' + dependency-version: 'highest' multisite: '0' experimental: true - # PHP 8.0 - - php: '8.0' - wp: 'latest' + # PHP 8.3 / experimental + - php: '8.3' + wp: 'trunk' + dependency-version: 'highest' multisite: '0' - experimental: false - # PHP 8.1 + experimental: true + # Coverage - php: '8.1' wp: 'latest' + dependency-version: 'highest' multisite: '0' + coverage: true experimental: false - # PHP 8.1 / experimental - - php: '8.1' - wp: 'trunk' - multisite: '0' - experimental: true - # PHP 8.2 / experimental - - php: '8.2' - wp: 'trunk' - multisite: '0' - experimental: true steps: - name: Checkout diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 22bcb0a1a..b5cc39e17 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -14,7 +14,7 @@ - + From 28e69edfa6bd39ca57fb944e7361941c8873af4a Mon Sep 17 00:00:00 2001 From: Erik van der Bas Date: Tue, 21 May 2024 13:52:32 +0200 Subject: [PATCH 5/5] remove coverage --- .github/workflows/test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 18a82160a..bcd1b32dc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,6 @@ jobs: wp: ['latest'] multisite: ['0', '1'] extensions: ['gd'] - coverage: [false] experimental: [false] include: # PHP 8.2 / experimental @@ -50,7 +49,6 @@ jobs: wp: 'latest' dependency-version: 'highest' multisite: '0' - coverage: true experimental: false steps: