Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
When running the tests, three notices along the lines of the below are shown at the top of the test run: ``` PHP Notice: Function WP_Block_Type_Registry::register was called <strong>incorrectly</strong>. Block type names must contain a namespace prefix. Example: my-plugin/my-custom-block-type Please see <a href="https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/">Debugging in WordPress</a> for more information. (This message was added in version 5.0.0.) in /tmp/wordpress/wp-includes/functions.php on line 6114 ``` The reason these notices show is that the `blocks/*/*/block.json` files for the Yoast custom blocks do not exist in a plain PHP based test environment in which no `npm install` (etc) has been run. Now why does that cause these notices ? * The test bootstrap initializes the plugin with WordPress. * As part of the activation/initialization of the plugin, the custom blocks are being registered using the `register_block_type()` function. * The first parameter of the `register_block_type()` function is one of those monstrosities you find in WP - it can be various different data types: > Block type name including namespace, or alternatively a path to the JSON file with metadata definition for the block, or a path to the folder where the block.json file is located, or a complete WP_Block_Type instance * The YoastSEO plugin uses the "path to the JSON file with metadata definition for the block" variant, but the files referenced in the parameter do not exist in a plain PHP test environment. * If WordPress can't find the file and the parameter is a string, it presumes the parameter was a "block type name including namespace", but a file path (as passed by YoastSEO) doesn't comply with the regex WP uses to validate the block type name, which cause the error notice. To fix this, I've updated the `yoast_seo_create_asset_files` closure which was originally used to only create the `src/generated/assets` files to also handle creation of mocks for the missing `block.json` files. As the PHP tests don't contain tests which are dependent on the _real_ `block.json` files being in place and valid, this "hack" will side-step the notices from WP without diminishing the value of the tests. Also note that if a dev-user already has (real) copies of these files in their development setup, those files will not be overwritten by this fix, so this shouldn't break anyone's dev environment. Ref: * https://developer.wordpress.org/reference/functions/register_block_type/ * https://developer.wordpress.org/reference/classes/wp_block_type_registry/register/
- Loading branch information