diff --git a/package.xml b/package.xml index 5111fb51f6..7c9e2387e9 100644 --- a/package.xml +++ b/package.xml @@ -14,8 +14,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> gsherwood@squiz.net yes - 2019-10-28 - + 2019-12-04 + 3.5.3 3.5.3 @@ -2025,6 +2025,72 @@ http://pear.php.net/dtd/package-2.0.xsd"> + + + 3.5.3 + 3.5.3 + + + stable + stable + + 2019-12-04 + BSD License + + - The PHP 7.4 T_FN token has been made available for older versions + -- T_FN represents the fn string used for arrow functions + -- The double arrow becomes the scope opener, and uses a new T_FN_ARROW token type + -- The token after the statement (normally a semicolon) becomes the scope closer + -- The token is also associated with the opening and closing parenthesis of the statement + -- Any functions named "fn" will cause have a T_FN token for the function name, but have no scope information + -- Thanks to Michał Bundyra for the help with this change + - PHP 7.4 numeric separators are now tokenized in the same way when using older PHP versions + -- Previously, a number like 1_000 would tokenize as T_LNUMBER (1), T_STRING (_000) + -- Now, the number tokenizes as T_LNUMBER (1_000) + -- Sniff developers should consider how numbers with underscores impact their custom sniffs + - The PHPCS file cache now takes file permissions into account + -- The cache is now invalidated for a file when its permissions are changed + - File::getMethodParameters() now supports arrow functions + - File::getMethodProperties() now supports arrow functions + - Added Fixer::changeCodeBlockIndent() to change the indent of a code block while auto-fixing + -- Can be used to either increase or decrease the indent + -- Useful when moving the start position of something like a closure, where you want the content to also move + - Added Generic.Files.ExecutableFile sniff + -- Ensures that files are not executable + -- Thanks to Matthew Peveler for the contribution + - Generic.CodeAnalysis.EmptyPhpStatement now reports unnecessary semicolons after control structure closing braces + -- Thanks to Vincent Langlet for the patch + - Generic.PHP.LowerCaseKeyword now enforces that the "fn" keyword is lowercase + -- Thanks to Michał Bundyra for the patch + - Generic.WhiteSpace.ScopeIndent now supports static arrow functions + - PEAR.Functions.FunctionCallSignature now adjusts the indent of function argument contents during auto-fixing + -- Previously, only the first line of an argument was changed, leading to inconsistent indents + -- This change also applies to PSR2.Methods.FunctionCallSignature + - PSR2.ControlStructures.ControlStructureSpacing now checks whitespace before the closing parenthesis of multi-line control structures + -- Previously, it incorrectly applied the whitespace check for single-line definitions only + - PSR12.Functions.ReturnTypeDeclaration now checks the return type of arrow functions + -- Thanks to Michał Bundyra for the patch + - PSR12.Traits.UseDeclaration now ensures all trait import statements are grouped together + -- Previously, the trait import section of the class ended when the first non-import statement was found + -- Checking now continues throughout the class to ensure all statements are grouped together + -- This also ensures that empty lines are not requested after an import statement that isn't the last one + - Squiz.Functions.LowercaseFunctionKeywords now enforces that the "fn" keyword is lowercase + -- Thanks to Michał Bundyra for the patch + - Fixed bug #2586 : Generic.WhiteSpace.ScopeIndent false positives when indenting open tags at a non tab-stop + - Fixed bug #2638 : Squiz.CSS.DuplicateClassDefinitionSniff sees comments as part of the class name + -- Thanks to Raphael Horber for the patch + - Fixed bug #2640 : Squiz.WhiteSpace.OperatorSpacing false positives for some negation operators + -- Thanks to Jakub Chábek and Juliette Reinders Folmer for the patch + - Fixed bug #2674 : Squiz.Functions.FunctionDeclarationArgumentSpacing prints wrong argument name in error message + - Fixed bug #2676 : PSR12.Files.FileHeader locks up when file ends with multiple inline comments + - Fixed bug #2678 : PSR12.Classes.AnonClassDeclaration incorrectly enforcing that closing brace be on a line by itself + - Fixed bug #2685 : File::getMethodParameters() setting typeHintEndToken for vars with no type hint + -- Thanks to Juliette Reinders Folmer for the patch + - Fixed bug #2694 : AbstractArraySniff produces invalid indices when using ternary operator + -- Thanks to Michał Bundyra for the patch + - Fixed bug #2702 : Generic.WhiteSpace.ScopeIndent false positive when using ternary operator with short arrays + + 3.5.2 diff --git a/src/Filters/Filter.php b/src/Filters/Filter.php index a54015525b..fa7360f0cd 100644 --- a/src/Filters/Filter.php +++ b/src/Filters/Filter.php @@ -132,7 +132,8 @@ public function accept() */ public function getChildren() { - $children = new static( + $filterClass = get_called_class(); + $children = new $filterClass( new \RecursiveDirectoryIterator($this->current(), (\RecursiveDirectoryIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS)), $this->basedir, $this->config, diff --git a/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php b/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php index 261f4399fb..708634e973 100644 --- a/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php +++ b/src/Standards/Generic/Tests/Files/ExecutableFileUnitTest.php @@ -15,6 +15,20 @@ class ExecutableFileUnitTest extends AbstractSniffUnitTest { + /** + * Should this test be skipped for some reason. + * + * @return void + */ + protected function shouldSkipTest() + { + // PEAR doesn't preserve the executable flag, so skip + // tests when running in a PEAR install. + return $GLOBALS['PHP_CODESNIFFER_PEAR']; + + }//end shouldSkipTest() + + /** * Returns the lines where errors should occur. * diff --git a/src/Util/Tokens.php b/src/Util/Tokens.php index d0623fb0a0..48ac76b7c0 100644 --- a/src/Util/Tokens.php +++ b/src/Util/Tokens.php @@ -145,7 +145,7 @@ final class Tokens /** * The token weightings. * - * @var array + * @var array */ public static $weightings = [ T_CLASS => 1000, @@ -226,7 +226,7 @@ final class Tokens /** * Tokens that represent assignments. * - * @var array + * @var array */ public static $assignmentTokens = [ T_EQUAL => T_EQUAL, @@ -250,7 +250,7 @@ final class Tokens /** * Tokens that represent equality comparisons. * - * @var array + * @var array */ public static $equalityTokens = [ T_IS_EQUAL => T_IS_EQUAL, @@ -264,7 +264,7 @@ final class Tokens /** * Tokens that represent comparison operator. * - * @var array + * @var array */ public static $comparisonTokens = [ T_IS_EQUAL => T_IS_EQUAL, @@ -282,7 +282,7 @@ final class Tokens /** * Tokens that represent arithmetic operators. * - * @var array + * @var array */ public static $arithmeticTokens = [ T_PLUS => T_PLUS, @@ -296,7 +296,7 @@ final class Tokens /** * Tokens that perform operations. * - * @var array + * @var array */ public static $operators = [ T_MINUS => T_MINUS, @@ -317,7 +317,7 @@ final class Tokens /** * Tokens that perform boolean operations. * - * @var array + * @var array */ public static $booleanOperators = [ T_BOOLEAN_AND => T_BOOLEAN_AND, @@ -330,7 +330,7 @@ final class Tokens /** * Tokens that represent casting. * - * @var array + * @var array */ public static $castTokens = [ T_INT_CAST => T_INT_CAST, @@ -346,7 +346,7 @@ final class Tokens /** * Token types that open parenthesis. * - * @var array + * @var array */ public static $parenthesisOpeners = [ T_ARRAY => T_ARRAY, @@ -367,7 +367,7 @@ final class Tokens /** * Tokens that are allowed to open scopes. * - * @var array + * @var array */ public static $scopeOpeners = [ T_CLASS => T_CLASS, @@ -399,7 +399,7 @@ final class Tokens /** * Tokens that represent scope modifiers. * - * @var array + * @var array */ public static $scopeModifiers = [ T_PRIVATE => T_PRIVATE, @@ -410,7 +410,7 @@ final class Tokens /** * Tokens that can prefix a method name * - * @var array + * @var array */ public static $methodPrefixes = [ T_PRIVATE => T_PRIVATE, @@ -424,7 +424,7 @@ final class Tokens /** * Tokens that open code blocks. * - * @var array + * @var array */ public static $blockOpeners = [ T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, @@ -436,7 +436,7 @@ final class Tokens /** * Tokens that don't represent code. * - * @var array + * @var array */ public static $emptyTokens = [ T_WHITESPACE => T_WHITESPACE, @@ -458,7 +458,7 @@ final class Tokens /** * Tokens that are comments. * - * @var array + * @var array */ public static $commentTokens = [ T_COMMENT => T_COMMENT, @@ -479,7 +479,7 @@ final class Tokens /** * Tokens that are comments containing PHPCS instructions. * - * @var array + * @var array */ public static $phpcsCommentTokens = [ T_PHPCS_ENABLE => T_PHPCS_ENABLE, @@ -494,7 +494,7 @@ final class Tokens * * Note that T_STRINGS are NOT represented in this list. * - * @var array + * @var array */ public static $stringTokens = [ T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING, @@ -504,7 +504,7 @@ final class Tokens /** * Tokens that represent text strings. * - * @var array + * @var array */ public static $textStringTokens = [ T_CONSTANT_ENCAPSED_STRING => T_CONSTANT_ENCAPSED_STRING, @@ -517,7 +517,7 @@ final class Tokens /** * Tokens that represent brackets and parenthesis. * - * @var array + * @var array */ public static $bracketTokens = [ T_OPEN_CURLY_BRACKET => T_OPEN_CURLY_BRACKET, @@ -531,7 +531,7 @@ final class Tokens /** * Tokens that include files. * - * @var array + * @var array */ public static $includeTokens = [ T_REQUIRE_ONCE => T_REQUIRE_ONCE, @@ -543,7 +543,7 @@ final class Tokens /** * Tokens that make up a heredoc string. * - * @var array + * @var array */ public static $heredocTokens = [ T_START_HEREDOC => T_START_HEREDOC, @@ -560,7 +560,7 @@ final class Tokens * Mostly, these are just strings. But PHP tokenizes some language * constructs and functions using their own tokens. * - * @var array + * @var array */ public static $functionNameTokens = [ T_STRING => T_STRING, @@ -580,7 +580,7 @@ final class Tokens /** * Tokens that open class and object scopes. * - * @var array + * @var array */ public static $ooScopeTokens = [ T_CLASS => T_CLASS, @@ -623,8 +623,8 @@ public static function tokenName($token) * * Returns false if there are no weightings for any of the specified tokens. * - * @param array $tokens The token types to get the highest weighted - * type for. + * @param array $tokens The token types to get the highest weighted + * type for. * * @return int The highest weighted token. */ diff --git a/tests/AllTests.php b/tests/AllTests.php index 7b8abb7dea..4ed001dfed 100644 --- a/tests/AllTests.php +++ b/tests/AllTests.php @@ -9,6 +9,8 @@ namespace PHP_CodeSniffer\Tests; +$GLOBALS['PHP_CODESNIFFER_PEAR'] = false; + if (is_file(__DIR__.'/../autoload.php') === true) { include_once 'Core/AllTests.php'; include_once 'Standards/AllSniffs.php'; @@ -16,6 +18,7 @@ include_once 'CodeSniffer/Core/AllTests.php'; include_once 'CodeSniffer/Standards/AllSniffs.php'; include_once 'FileList.php'; + $GLOBALS['PHP_CODESNIFFER_PEAR'] = true; } // PHPUnit 7 made the TestSuite run() method incompatible with