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>
|
2018-03-09 13:47:14 +00:00
|
|
|
<exclude-pattern>includes/gateways/simplify-commerce</exclude-pattern>
|
2017-11-09 18:32:04 +00:00
|
|
|
<exclude-pattern>includes/libraries/</exclude-pattern>
|
2018-03-07 21:48:56 +00:00
|
|
|
<exclude-pattern>includes/legacy/</exclude-pattern>
|
2017-11-09 18:32:04 +00:00
|
|
|
<exclude-pattern>includes/api/legacy/</exclude-pattern>
|
2017-11-28 20:16:45 +00:00
|
|
|
<exclude-pattern>includes/api/v1/</exclude-pattern>
|
2018-03-15 20:23:40 +00:00
|
|
|
<exclude-pattern>includes/class-wc-geo-ip.php</exclude-pattern>
|
2018-03-07 21:48:56 +00:00
|
|
|
<exclude-pattern>includes/wc-deprecated-functions.php</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">
|
2018-03-21 03:18:01 +00:00
|
|
|
<exclude name="PHPCompatibility.PHP.NewFunctions.hash_equalsFound" />
|
2018-03-21 03:11:16 +00:00
|
|
|
<exclude name="PHPCompatibility.PHP.NewInterfaces.jsonserializableFound" />
|
2018-01-11 15:11:24 +00:00
|
|
|
<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" />
|
2018-02-10 04:56:06 +00:00
|
|
|
<exclude name="WordPress.VIP.DirectDatabaseQuery.DirectQuery" />
|
2018-02-11 10:40:30 +00:00
|
|
|
<exclude name="WordPress.VIP.DirectDatabaseQuery.SchemaChange" />
|
2017-11-23 13:41:31 +00:00
|
|
|
<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" />
|
2018-03-15 21:22:12 +00:00
|
|
|
<exclude name="WordPress.VIP.RestrictedVariables.cache_constraints___COOKIE" />
|
2017-10-20 17:24:56 +00:00
|
|
|
</rule>
|
2017-10-09 17:07:09 +00:00
|
|
|
<rule ref="WordPress.VIP.ValidatedSanitizedInput">
|
|
|
|
<properties>
|
2018-03-16 19:15:08 +00:00
|
|
|
<property name="customSanitizingFunctions" type="array" value="wc_clean,wc_sanitize_tooltip,wc_format_decimal,wc_stock_amount,wc_sanitize_permalink,wc_sanitize_textarea" />
|
2017-10-09 17:07:09 +00:00
|
|
|
</properties>
|
|
|
|
</rule>
|
2017-11-13 19:30:22 +00:00
|
|
|
<rule ref="WordPress.XSS.EscapeOutput">
|
|
|
|
<properties>
|
2018-04-24 18:25:20 +00:00
|
|
|
<property name="customEscapingFunctions" type="array" value="wc_help_tip,wc_sanitize_tooltip,wc_selected" />
|
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-15 17:02:39 +00:00
|
|
|
<exclude-pattern>tests/*</exclude-pattern>
|
2017-11-27 12:57:16 +00:00
|
|
|
</rule>
|
2018-01-22 03:23:48 +00:00
|
|
|
<rule ref="Generic.Commenting">
|
|
|
|
<exclude-pattern>tests/</exclude-pattern>
|
|
|
|
</rule>
|
|
|
|
<rule ref="Squiz.Commenting">
|
|
|
|
<exclude-pattern>tests/</exclude-pattern>
|
2018-01-23 11:03:30 +00:00
|
|
|
<exclude name="Squiz.Commenting.LongConditionClosingComment" />
|
2018-01-30 11:45:00 +00:00
|
|
|
<exclude name="Squiz.Commenting.PostStatementComment" />
|
2017-11-27 12:57:16 +00:00
|
|
|
</rule>
|
2018-01-22 03:42:05 +00:00
|
|
|
<rule ref="PEAR.Functions.FunctionCallSignature.EmptyLine">
|
|
|
|
<exclude-pattern>tests/e2e-tests/</exclude-pattern>
|
|
|
|
</rule>
|
2018-03-05 19:44:56 +00:00
|
|
|
<rule ref="WordPress.Files.FileName.NotHyphenatedLowercase">
|
|
|
|
<exclude-pattern>i18n/</exclude-pattern>
|
|
|
|
</rule>
|
2018-03-06 11:08:28 +00:00
|
|
|
|
|
|
|
<!-- CLI commands require PHP >= 5.5 instead of 5.2 -->
|
2018-03-06 10:43:02 +00:00
|
|
|
<rule ref="PHPCompatibility.PHP.NewLanguageConstructs.t_ns_separatorFound">
|
|
|
|
<exclude-pattern>includes/cli/</exclude-pattern>
|
|
|
|
</rule>
|
2018-03-06 11:08:28 +00:00
|
|
|
<rule ref="PHPCompatibility.PHP.NewFunctions.array_columnFound">
|
|
|
|
<exclude-pattern>includes/cli/</exclude-pattern>
|
|
|
|
</rule>
|
2018-03-06 11:46:28 +00:00
|
|
|
<rule ref="PHPCompatibility.PHP.NewClosure.Found">
|
|
|
|
<exclude-pattern>includes/cli/</exclude-pattern>
|
|
|
|
</rule>
|
2018-03-06 13:32:56 +00:00
|
|
|
<rule ref="WordPress.Files.FileName.NotHyphenatedLowercase">
|
|
|
|
<exclude-pattern>i18n/</exclude-pattern>
|
|
|
|
</rule>
|
2016-08-27 14:18:14 +00:00
|
|
|
</ruleset>
|