2016-08-27 14:18:14 +00:00
|
|
|
<?xml version="1.0"?>
|
|
|
|
<ruleset name="WordPress Coding Standards">
|
|
|
|
<!-- See https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml -->
|
|
|
|
<!-- See https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/blob/develop/WordPress-Core/ruleset.xml -->
|
|
|
|
|
2017-09-27 16:07:41 +00:00
|
|
|
<description>WooCommerce dev PHP_CodeSniffer ruleset.</description>
|
2016-08-27 14:18:14 +00:00
|
|
|
|
2017-11-09 18:32:04 +00:00
|
|
|
<!-- Exclude paths -->
|
|
|
|
<exclude-pattern>tests/cli/</exclude-pattern>
|
|
|
|
<exclude-pattern>apigen/</exclude-pattern>
|
|
|
|
<exclude-pattern>includes/gateways/simplify-commerce/includes/</exclude-pattern>
|
|
|
|
<exclude-pattern>includes/libraries/</exclude-pattern>
|
|
|
|
<exclude-pattern>includes/api/legacy/</exclude-pattern>
|
2017-11-28 20:16:45 +00:00
|
|
|
<exclude-pattern>includes/api/v1/</exclude-pattern>
|
2017-11-21 12:41:55 +00:00
|
|
|
<exclude-pattern>*/node_modules/*</exclude-pattern>
|
|
|
|
<exclude-pattern>*/vendor/*</exclude-pattern>
|
2017-11-09 18:32:04 +00:00
|
|
|
|
2017-11-21 12:41:55 +00:00
|
|
|
<!-- Configs -->
|
2017-11-22 15:57:48 +00:00
|
|
|
<config name="minimum_supported_wp_version" value="4.7" />
|
2017-11-21 12:41:55 +00:00
|
|
|
<config name="testVersion" value="5.2-"/>
|
|
|
|
|
2017-11-21 12:47:42 +00:00
|
|
|
<!-- Rules -->
|
2017-12-21 23:29:49 +00:00
|
|
|
<rule ref="WooCommerce-Core" />
|
2018-01-11 15:11:24 +00:00
|
|
|
<rule ref="PHPCompatibility">
|
|
|
|
<exclude name="PHPCompatibility.PHP.NewKeywords.t_namespaceFound" />
|
Exclude the /tests/ directory from PHP Compatibility checks
The composer.json file in WooCommerce specifies PHPUnit version 6.2.3 as a development dependency; that version of PHPUnit sets PHP 7.0 as the minimum PHP version, effectively making the minimum development version for WooCommerce to be PHP 7.0 (hooray!).
With a more modern version of PHP as the minimum requirement for developers, the code that isn't distributed with the plugin (e.g. the /tests/ directory) doesn't necessarily need to adhere to PHP 5.2-compatible coding standards. This commit removes the /tests/ directory from the scope of the PHP Compatibility checks, enabling the test suite to leverage modern (relative to PHP 5.2, anyway) features like closures, short-array syntax, and namespaces. Embracing more modern PHP in the test suite also opens up the possibilities of using libraries like Faker to populate dummy data, rather than the hard-coded helpers that exist now.
An example test enabled by this change: developers can now use closures for filter callbacks.
add_filter( 'some_filter', function () {
return 'the filtered value';
}
$this->assertEquals( 'the filtered value', my_function() );
Without a closure, this test would need to either write a one-off method in the test class or hack around it with static properties to configure the expected filter response.
2018-01-11 23:17:19 +00:00
|
|
|
<exclude-pattern>tests/</exclude-pattern>
|
2018-01-11 15:11:24 +00:00
|
|
|
</rule>
|
2017-11-09 18:32:04 +00:00
|
|
|
|
2017-10-20 17:24:56 +00:00
|
|
|
<rule ref="WordPress">
|
2017-11-23 13:41:31 +00:00
|
|
|
<exclude name="WordPress.VIP.DirectDatabaseQuery.NoCaching" />
|
|
|
|
<exclude name="WordPress.VIP.DirectDatabaseQuery.SchemaChange" />
|
|
|
|
<exclude name="WordPress.VIP.FileSystemWritesDisallow.file_ops_fwrite" />
|
2017-10-20 17:24:56 +00:00
|
|
|
<exclude name="WordPress.VIP.OrderByRand" />
|
2017-11-23 13:41:31 +00:00
|
|
|
<exclude name="WordPress.VIP.RestrictedFunctions" />
|
2017-11-23 14:06:00 +00:00
|
|
|
<exclude name="WordPress.VIP.RestrictedVariables.user_meta__wpdb__usermeta" />
|
|
|
|
<exclude name="WordPress.VIP.PostsPerPage.posts_per_page_posts_per_page" />
|
2017-10-20 17:24:56 +00:00
|
|
|
</rule>
|
2017-10-09 17:07:09 +00:00
|
|
|
<rule ref="WordPress.VIP.ValidatedSanitizedInput">
|
|
|
|
<properties>
|
2017-12-05 14:02:40 +00:00
|
|
|
<property name="customSanitizingFunctions" type="array" value="wc_clean,wc_sanitize_tooltip,wc_format_decimal,wc_stock_amount,wc_sanitize_permalink" />
|
2017-10-09 17:07:09 +00:00
|
|
|
</properties>
|
|
|
|
</rule>
|
2017-11-13 19:30:22 +00:00
|
|
|
<rule ref="WordPress.XSS.EscapeOutput">
|
|
|
|
<properties>
|
2017-11-13 21:32:40 +00:00
|
|
|
<property name="customEscapingFunctions" type="array" value="wc_help_tip,wc_sanitize_tooltip" />
|
2017-11-13 19:30:22 +00:00
|
|
|
</properties>
|
2017-11-21 12:41:55 +00:00
|
|
|
</rule>
|
|
|
|
<rule ref="WordPress.WP.I18n">
|
|
|
|
<properties>
|
|
|
|
<property name="text_domain" type="array" value="woocommerce" />
|
|
|
|
</properties>
|
|
|
|
</rule>
|
2017-11-27 12:57:16 +00:00
|
|
|
<rule ref="WordPress.Files.FileName.InvalidClassFileName">
|
|
|
|
<exclude-pattern>includes/**/abstract-*.php</exclude-pattern>
|
2018-01-22 03:23:48 +00:00
|
|
|
<exclude-pattern>tests/</exclude-pattern>
|
|
|
|
</rule>
|
|
|
|
<rule ref="Generic.Commenting">
|
|
|
|
<exclude-pattern>tests/</exclude-pattern>
|
|
|
|
</rule>
|
|
|
|
<rule ref="Squiz.Commenting">
|
|
|
|
<exclude-pattern>tests/</exclude-pattern>
|
2017-11-27 12:57:16 +00:00
|
|
|
</rule>
|
2016-08-27 14:18:14 +00:00
|
|
|
</ruleset>
|