Skip to content

Commit 0f5577b

Browse files
committed
Allow presence of comments inside the first argument (hook name).
Add test.
1 parent ea81caf commit 0f5577b

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

WPForms/Sniffs/PHP/ValidateHooksSniff.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ public function process( File $phpcsFile, $stackPtr ) {
8787
*/
8888
private function getFirstArgument( $phpcsFile, $stackPtr ) {
8989

90+
$blankTokens = [ T_WHITESPACE, T_COMMENT, T_PHPCS_IGNORE ];
91+
9092
$tokens = $phpcsFile->getTokens();
9193
$openPtr = $phpcsFile->findNext( T_OPEN_PARENTHESIS, $stackPtr );
9294
$closePtr = $tokens[ $openPtr ]['parenthesis_closer'];
@@ -96,7 +98,10 @@ private function getFirstArgument( $phpcsFile, $stackPtr ) {
9698
$closePtr = $commaPtr;
9799
}
98100

99-
$firstArgument = trim( $phpcsFile->getTokensAsString( $openPtr + 1, $closePtr - $openPtr - 1 ) );
101+
$openPtr = $phpcsFile->findNext( $blankTokens, $openPtr + 1, $closePtr, true );
102+
$closePtr = $phpcsFile->findPrevious( $blankTokens, $closePtr - 1, $openPtr, true );
103+
104+
$firstArgument = trim( $phpcsFile->getTokensAsString( $openPtr, $closePtr - $openPtr + 1 ) );
100105

101106
return strtolower(
102107
preg_replace( '/[\'\"]/', '', $firstArgument )

WPForms/Tests/TestedFiles/PHP/ValidateHooks.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ public function useHooks() {
1717
apply_filters( "wpforms_tests_testedfiles_php_validate_hooks_{$extra}_detail", true );
1818
do_action( "wpforms_tests_testedfiles_php_validate_hooks_{$extra}_detail" );
1919

20+
echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
21+
"wpforms_tests_testedfiles_php_validate_hooks_{$extra}_detail",
22+
true
23+
);
24+
2025
// Invalid.
2126
apply_filters( 'tests_testedfiles_php_validate_hooks', true );
2227
apply_filters( 'tests_testedfiles_php_validate_hooks_extra_detail', true );

WPForms/Tests/Tests/PHP/ValidateHooksTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,6 @@ public function testProcess() {
2121

2222
$phpcsFile = $this->process( new ValidateHooksSniff() );
2323

24-
$this->fileHasErrors( $phpcsFile, 'InvalidHookName', [ 21, 22, 23, 24, 26, 27 ] );
24+
$this->fileHasErrors( $phpcsFile, 'InvalidHookName', [ 26, 27, 28, 29, 31, 32 ] );
2525
}
2626
}

0 commit comments

Comments
 (0)