From c9cf61fcff7f522cf3431c7373eb096b89e87b12 Mon Sep 17 00:00:00 2001 From: Max Antipin Date: Thu, 16 Jul 2026 01:50:14 +0300 Subject: [PATCH] Bugfixes after updating dependencies --- .docker/Dockerfile | 10 ++--- .docker/compose.yaml | 2 +- .docker/phpunit.9.xml | 30 -------------- .docker/phpunit.cs.xml | 40 +++++++++++++++++++ .../ParameterTypeDeclarationSniff.php | 35 +--------------- .../Functions/ReturnTypeDeclarationSniff.php | 3 +- .../PropertyTypeDeclarationUnitTest.php | 12 +++--- .../ParameterTypeDeclarationUnitTest.php | 12 +++--- .../ReturnTypeDeclarationUnitTest.php | 10 ++--- Makefile | 2 +- README.md | 8 ++++ composer.json | 3 +- phpcs.xml.dist | 2 +- 13 files changed, 76 insertions(+), 93 deletions(-) delete mode 100644 .docker/phpunit.9.xml create mode 100644 .docker/phpunit.cs.xml diff --git a/.docker/Dockerfile b/.docker/Dockerfile index f0ea7a2..7f90aa9 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -2,12 +2,11 @@ ARG PHP_VERSION=8.4 ARG COMPOSER_VERSION=2.10 -ARG CS_BRANCH=3.13.5 +ARG CS_BRANCH=4.0.1 FROM composer:${COMPOSER_VERSION} AS composer_image FROM php:${PHP_VERSION}-cli-alpine AS dev_image -ARG CS_BRANCH COPY --from=ghcr.io/mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ RUN set -eu; \ apk upgrade --no-cache --quiet; \ @@ -20,7 +19,8 @@ RUN set -eu; \ # xdebug code coverage requires more memory than default amount. COPY --from=composer_image --link /usr/bin/composer /usr/local/bin/composer WORKDIR /usr/src/cs-test/ -RUN set -eu; \ +ARG CS_BRANCH +RUN set -eux; \ git clone https://github.com/PHPCSStandards/PHP_CodeSniffer.git --branch ${CS_BRANCH} --single-branch . \ && composer install \ && composer require --dev --no-scripts --no-plugins max-antipin/php-code-sniffs @@ -34,5 +34,5 @@ RUN --mount=type=bind,from=git-files,source=.,target=.git,readonly \ composer validate; \ composer install --no-autoloader --no-progress; \ composer dump-autoload --classmap-authoritative --strict-psr --strict-ambiguous -COPY phpunit.9.xml /usr/src/cs-test/phpunit.xml -COPY --from=source ./AntipinCS/ /usr/src/cs-test/src/Standards/AntipinCS/ \ No newline at end of file +COPY --link phpunit.cs.xml /usr/src/cs-test/phpunit.xml +COPY --from=source --link ./AntipinCS/ /usr/src/cs-test/src/Standards/AntipinCS/ \ No newline at end of file diff --git a/.docker/compose.yaml b/.docker/compose.yaml index b65eb0c..89f6a73 100644 --- a/.docker/compose.yaml +++ b/.docker/compose.yaml @@ -40,6 +40,6 @@ services: volumes: *volumes configs: phpunit-cs: - file: ./phpunit.9.xml + file: ./phpunit.cs.xml xdebug: file: ./xdebug.ini diff --git a/.docker/phpunit.9.xml b/.docker/phpunit.9.xml deleted file mode 100644 index 0b83210..0000000 --- a/.docker/phpunit.9.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - tests/Standards/AllSniffs.php - - - - - src/Standards/AntipinCS/ - - - src/Standards/AntipinCS/Tests/ - - - - - - \ No newline at end of file diff --git a/.docker/phpunit.cs.xml b/.docker/phpunit.cs.xml new file mode 100644 index 0000000..d0c18d2 --- /dev/null +++ b/.docker/phpunit.cs.xml @@ -0,0 +1,40 @@ + + + + + src/Standards/AntipinCS/Tests/ + + + + + src/Standards/AntipinCS/ + + + src/Standards/AntipinCS/Tests/ + + + + + + + + \ No newline at end of file diff --git a/AntipinCS/Sniffs/Functions/ParameterTypeDeclarationSniff.php b/AntipinCS/Sniffs/Functions/ParameterTypeDeclarationSniff.php index a21f70d..a079a3a 100644 --- a/AntipinCS/Sniffs/Functions/ParameterTypeDeclarationSniff.php +++ b/AntipinCS/Sniffs/Functions/ParameterTypeDeclarationSniff.php @@ -57,38 +57,7 @@ public function process(File $phpcsFile, int $stackPtr): void ); return; } - $this->processBracket($phpcsFile, $token['parenthesis_opener']); - if ($token['code'] === T_CLOSURE) { - $use = $phpcsFile->findNext(T_USE, ($token['parenthesis_closer'] + 1), $token['scope_opener']); - if ($use !== false) { - $openBracket = $phpcsFile->findNext(T_OPEN_PARENTHESIS, ($use + 1)); - if (false === $openBracket) { - throw new RuntimeException('Parse error'); - } - $this->processBracket($phpcsFile, $openBracket); - } - } - } - - protected function processBracket(File $phpcsFile, int $openBracket): void - { - $tokens = $phpcsFile->getTokens(); - if (isset($tokens[$openBracket]['parenthesis_owner'])) { - $stackPtr = $tokens[$openBracket]['parenthesis_owner']; - } else { - $stackPtr = $phpcsFile->findPrevious(T_USE, ($openBracket - 1)); - if (false === $stackPtr) { - $phpcsFile->addError( - 'Unknown error', - $openBracket, - 'Unknown', - [], - 9 - ); - } - # else: use condition found, skip it. - return; - } + $stackPtr = $token['parenthesis_owner']; $params = $phpcsFile->getMethodParameters($stackPtr); if (empty($params)) { return; @@ -163,7 +132,7 @@ private function ignoreMethod(File $phpcsFile, int $stackPtr): bool * use ValueError; * use \ErrorException; * use PHP_CodeSniffer\Files\File; - * use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest as SomeKindOfTests; + * use PHP_CodeSniffer\Tests\Standards\AbstractSniffTestCase as SomeKindOfTests; * use PHPstan\Command\{AnalyseCommand,AnalyserResult as TmpResult,AnalyseApplication\TestApp}; * use function file_get_contents; * use const JSON_BIGINT_AS_STRING; diff --git a/AntipinCS/Sniffs/Functions/ReturnTypeDeclarationSniff.php b/AntipinCS/Sniffs/Functions/ReturnTypeDeclarationSniff.php index 51eb48b..ae81f92 100644 --- a/AntipinCS/Sniffs/Functions/ReturnTypeDeclarationSniff.php +++ b/AntipinCS/Sniffs/Functions/ReturnTypeDeclarationSniff.php @@ -40,8 +40,7 @@ public function process(File $phpcsFile, int $stackPtr): void static $skipMethods = ['__construct' => true, '__destruct' => true]; if ( !isset($skipTypes[$token['type']]) - && ($methodName = $phpcsFile->getDeclarationName($stackPtr)) !== null - && isset($skipMethods[$methodName]) + && isset($skipMethods[$phpcsFile->getDeclarationName($stackPtr)]) ) { return; } diff --git a/AntipinCS/Tests/Classes/PropertyTypeDeclarationUnitTest.php b/AntipinCS/Tests/Classes/PropertyTypeDeclarationUnitTest.php index e77a347..d8dd1d8 100644 --- a/AntipinCS/Tests/Classes/PropertyTypeDeclarationUnitTest.php +++ b/AntipinCS/Tests/Classes/PropertyTypeDeclarationUnitTest.php @@ -10,14 +10,12 @@ namespace MaxAntipin\PHPCS\Standards\AntipinCS\Tests\Classes; -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; +use MaxAntipin\PHPCS\Standards\AntipinCS\Sniffs\Classes\PropertyTypeDeclarationSniff; +use PHP_CodeSniffer\Tests\Standards\AbstractSniffTestCase; +use PHPUnit\Framework\Attributes\CoversClass; -/** - * Unit test class for the PropertyTypeDeclaration sniff. - * - * @covers \MaxAntipin\PHPCS\Standards\AntipinCS\Sniffs\Classes\PropertyTypeDeclarationSniff - */ -final class PropertyTypeDeclarationUnitTest extends AbstractSniffUnitTest +#[CoversClass(PropertyTypeDeclarationSniff::class)] +final class PropertyTypeDeclarationUnitTest extends AbstractSniffTestCase { /** * Returns the lines where errors should occur. diff --git a/AntipinCS/Tests/Functions/ParameterTypeDeclarationUnitTest.php b/AntipinCS/Tests/Functions/ParameterTypeDeclarationUnitTest.php index a24164a..4bc29ce 100644 --- a/AntipinCS/Tests/Functions/ParameterTypeDeclarationUnitTest.php +++ b/AntipinCS/Tests/Functions/ParameterTypeDeclarationUnitTest.php @@ -10,14 +10,12 @@ namespace MaxAntipin\PHPCS\Standards\AntipinCS\Tests\Functions; -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; +use MaxAntipin\PHPCS\Standards\AntipinCS\Sniffs\Functions\ParameterTypeDeclarationSniff; +use PHP_CodeSniffer\Tests\Standards\AbstractSniffTestCase; +use PHPUnit\Framework\Attributes\CoversClass; -/** - * Unit test class for the ParameterTypeDeclaration sniff. - * - * @covers \MaxAntipin\PHPCS\Standards\AntipinCS\Sniffs\Functions\ParameterTypeDeclarationSniff - */ -final class ParameterTypeDeclarationUnitTest extends AbstractSniffUnitTest +#[CoversClass(ParameterTypeDeclarationSniff::class)] +final class ParameterTypeDeclarationUnitTest extends AbstractSniffTestCase { /** * Get a list of all test files to check. diff --git a/AntipinCS/Tests/Functions/ReturnTypeDeclarationUnitTest.php b/AntipinCS/Tests/Functions/ReturnTypeDeclarationUnitTest.php index d0cf003..41cda81 100644 --- a/AntipinCS/Tests/Functions/ReturnTypeDeclarationUnitTest.php +++ b/AntipinCS/Tests/Functions/ReturnTypeDeclarationUnitTest.php @@ -10,12 +10,12 @@ namespace MaxAntipin\PHPCS\Standards\AntipinCS\Tests\Functions; -use PHP_CodeSniffer\Tests\Standards\AbstractSniffUnitTest; +use MaxAntipin\PHPCS\Standards\AntipinCS\Sniffs\Functions\ReturnTypeDeclarationSniff; +use PHP_CodeSniffer\Tests\Standards\AbstractSniffTestCase; +use PHPUnit\Framework\Attributes\CoversClass; -/** - * @covers \MaxAntipin\PHPCS\Standards\AntipinCS\Sniffs\Functions\ReturnTypeDeclarationSniff - */ -final class ReturnTypeDeclarationUnitTest extends AbstractSniffUnitTest +#[CoversClass(ReturnTypeDeclarationSniff::class)] +final class ReturnTypeDeclarationUnitTest extends AbstractSniffTestCase { /** * Get a list of all test files to check. diff --git a/Makefile b/Makefile index 56f9240..7383013 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ fix-lint: php ./vendor/bin/phpcbf test-cs: - cd ../cs-test/ && php ./vendor/bin/phpunit --no-coverage --filter AntipinCS + cd ../cs-test/ && php ./vendor/bin/phpunit --no-coverage -v -s --filter AntipinCS test-coverage: cd ../cs-test/ && XDEBUG_MODE=coverage php ./vendor/bin/phpunit --filter AntipinCS diff --git a/README.md b/README.md index 023f3ab..48438cc 100644 --- a/README.md +++ b/README.md @@ -83,3 +83,11 @@ Run test containers with all PHP versions and code coverage: ```Shell docker compose -f .docker/compose-test.yaml up --quiet-build ``` + +Two errors with property hooks: +- There must not be more than one property declared per statement +- Missing type declaration for property "$this" + +```Shell +cat AntipinCS/Tests/Functions/ReturnTypeDeclarationUnitTest.2.inc | ./vendor/bin/phpcs --stdin-path=/php-code-sniffs/AntipinCS/Tests/Functions/ReturnTypeDeclarationUnitTest.2.php -v -s - +``` \ No newline at end of file diff --git a/composer.json b/composer.json index ae4c395..fd3cd28 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,8 @@ "require-dev": { "phpstan/phpstan": "^2.1", "phpcsstandards/phpcsdevtools": "^1.2", - "max-antipin/packagist-export-ignore": "^1" + "max-antipin/packagist-export-ignore": "^1", + "phpunit/phpunit": "^11" }, "autoload": { "psr-4": { diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 45dd243..ecab15f 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -10,7 +10,7 @@ - +