From a6de35dac701dc0a5f08e9fa615b3f87b484e79f Mon Sep 17 00:00:00 2001 From: George Steel <george@net-glue.co.uk> Date: Mon, 29 May 2023 16:26:11 +0100 Subject: [PATCH 1/3] Remove support for PHP 8.0 - Bumps Service Manager to 3.21.x to work around BC break in tests - Fixes newly discovered psalm issues - Bumps dev deps and refreshes lock Signed-off-by: George Steel <george@net-glue.co.uk> --- composer.json | 14 +- composer.lock | 615 +++++++----------- phpcs.xml | 2 +- psalm-baseline.xml | 370 +++++------ src/Assertion/ExpressionAssertion.php | 11 +- .../AssertionManagerCompatibilityTest.php | 2 +- 6 files changed, 440 insertions(+), 574 deletions(-) diff --git a/composer.json b/composer.json index 3174317..c9be203 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "config": { "sort-packages": true, "platform": { - "php": "8.0.99" + "php": "8.1.99" }, "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true @@ -29,15 +29,15 @@ "zendframework/zend-permissions-acl": "*" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0" }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-servicemanager": "^3.19", - "phpbench/phpbench": "^1.2", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0" + "laminas/laminas-servicemanager": "^3.21", + "phpbench/phpbench": "^1.2.10", + "phpunit/phpunit": "^9.6.8", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.12" }, "suggest": { "laminas/laminas-servicemanager": "To support Laminas\\Permissions\\Acl\\Assertion\\AssertionManager plugin manager usage" diff --git a/composer.lock b/composer.lock index ebc26da..4fda33d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "33dc66135c7bf948a3ca88cce97dda62", + "content-hash": "1f8e12ec02a66e71f3fa9efd5878a1f0", "packages": [], "packages-dev": [ { @@ -578,16 +578,16 @@ }, { "name": "doctrine/annotations", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "d02c9f3742044e17d5fa8d28d8402a2d95c33302" + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/d02c9f3742044e17d5fa8d28d8402a2d95c33302", - "reference": "d02c9f3742044e17d5fa8d28d8402a2d95c33302", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", "shasum": "" }, "require": { @@ -648,79 +648,36 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.0" - }, - "time": "2022-12-19T18:17:20+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } + "source": "https://github.com/doctrine/annotations/tree/2.0.1" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" - }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-02-02T22:02:53+00:00" }, { "name": "doctrine/instantiator", - "version": "1.5.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.30 || ^5.4" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -747,7 +704,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -763,32 +720,31 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "84a527db05647743d50373e0ec53a152f2cde568" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^5.0" }, "type": "library", "autoload": { @@ -825,7 +781,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.0" }, "funding": [ { @@ -841,7 +797,7 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2022-12-15T16:57:16+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -946,16 +902,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "0.4.1", + "version": "0.5.1", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2" + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/79261cc280aded96d098e1b0e0ba0c4881b432c2", - "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", "shasum": "" }, "require": { @@ -995,7 +951,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.4.1" + "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" }, "funding": [ { @@ -1003,7 +959,7 @@ "type": "github" } ], - "time": "2022-12-16T22:01:02+00:00" + "time": "2022-12-24T12:35:10+00:00" }, { "name": "laminas/laminas-coding-standard", @@ -1063,26 +1019,26 @@ }, { "name": "laminas/laminas-servicemanager", - "version": "3.20.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59" + "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", - "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/625f2aa3bc6dd02688b2da5155b3a69870812bda", + "reference": "625f2aa3bc6dd02688b2da5155b3a69870812bda", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.2.1", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "laminas/laminas-stdlib": "^3.17", + "php": "~8.1.0 || ~8.2.0", "psr/container": "^1.0" }, "conflict": { "ext-psr": "*", - "laminas/laminas-code": "<3.3.1", + "laminas/laminas-code": "<4.10.0", "zendframework/zend-code": "<3.3.1", "zendframework/zend-servicemanager": "*" }, @@ -1094,18 +1050,19 @@ }, "require-dev": { "composer/package-versions-deprecated": "^1.11.99.5", - "laminas/laminas-coding-standard": "~2.4.0", + "friendsofphp/proxy-manager-lts": "^1.0.14", + "laminas/laminas-code": "^4.10.0", + "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", "laminas/laminas-dependency-plugin": "^2.2", - "mikey179/vfsstream": "^1.6.11@alpha", - "ocramius/proxy-manager": "^2.14.1", - "phpbench/phpbench": "^1.2.7", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "mikey179/vfsstream": "^1.6.11", + "phpbench/phpbench": "^1.2.9", + "phpunit/phpunit": "^10.0.17", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.8.0" }, "suggest": { - "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" + "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" }, "bin": [ "bin/generate-deps-for-config-factory", @@ -1149,34 +1106,34 @@ "type": "community_bridge" } ], - "time": "2022-12-01T17:03:38+00:00" + "time": "2023-05-14T12:24:54+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.16.1", + "version": "3.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17" + "reference": "dd35c868075bad80b6718959740913e178eb4274" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/f4f773641807c7ccee59b758bfe4ac4ba33ecb17", - "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/dd35c868075bad80b6718959740913e178eb4274", + "reference": "dd35c868075bad80b6718959740913e178eb4274", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.4.0", - "phpbench/phpbench": "^1.2.7", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.0.0" + "laminas/laminas-coding-standard": "^2.5", + "phpbench/phpbench": "^1.2.9", + "phpunit/phpunit": "^10.0.16", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.8" }, "type": "library", "autoload": { @@ -1208,20 +1165,20 @@ "type": "community_bridge" } ], - "time": "2022-12-03T18:48:01+00:00" + "time": "2023-03-20T13:51:37+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -1259,7 +1216,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -1267,20 +1224,20 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.1.0", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "shasum": "" }, "require": { @@ -1316,22 +1273,22 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" }, - "time": "2022-12-08T20:46:14+00:00" + "time": "2023-04-09T17:37:40+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.3", + "version": "v4.15.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -1372,9 +1329,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, - "time": "2023-01-16T22:05:37+00:00" + "time": "2023-05-19T20:20:00+00:00" }, { "name": "phar-io/manifest", @@ -1540,25 +1497,25 @@ }, { "name": "phpbench/dom", - "version": "0.3.2", + "version": "0.3.3", "source": { "type": "git", "url": "https://github.com/phpbench/dom.git", - "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110" + "reference": "786a96db538d0def931f5b19225233ec42ec7a72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/dom/zipball/b013b717832ddbaadf2a40984b04bc66af9a7110", - "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110", + "url": "https://api.github.com/repos/phpbench/dom/zipball/786a96db538d0def931f5b19225233ec42ec7a72", + "reference": "786a96db538d0def931f5b19225233ec42ec7a72", "shasum": "" }, "require": { "ext-dom": "*", - "php": "^7.2||^8.0" + "php": "^7.3||^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", - "phpstan/phpstan": "^0.12.83", + "friendsofphp/php-cs-fixer": "^3.14", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.0||^9.0" }, "type": "library", @@ -1585,22 +1542,22 @@ "description": "DOM wrapper to simplify working with the PHP DOM implementation", "support": { "issues": "https://github.com/phpbench/dom/issues", - "source": "https://github.com/phpbench/dom/tree/0.3.2" + "source": "https://github.com/phpbench/dom/tree/0.3.3" }, - "time": "2021-09-24T15:26:07+00:00" + "time": "2023-03-06T23:46:57+00:00" }, { "name": "phpbench/phpbench", - "version": "1.2.8", + "version": "1.2.10", "source": { "type": "git", "url": "https://github.com/phpbench/phpbench.git", - "reference": "3f7b3c200f86727de7a14bde94adb68a88e1bafc" + "reference": "95206f92479674599a75e02b74b9933e2d9883aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/phpbench/zipball/3f7b3c200f86727de7a14bde94adb68a88e1bafc", - "reference": "3f7b3c200f86727de7a14bde94adb68a88e1bafc", + "url": "https://api.github.com/repos/phpbench/phpbench/zipball/95206f92479674599a75e02b74b9933e2d9883aa", + "reference": "95206f92479674599a75e02b74b9933e2d9883aa", "shasum": "" }, "require": { @@ -1611,9 +1568,9 @@ "ext-reflection": "*", "ext-spl": "*", "ext-tokenizer": "*", - "php": "^7.3 || ^8.0", + "php": "^7.4 || ^8.0", "phpbench/container": "^2.1", - "phpbench/dom": "~0.3.1", + "phpbench/dom": "~0.3.3", "psr/log": "^1.1 || ^2.0 || ^3.0", "seld/jsonlint": "^1.1", "symfony/console": "^4.2 || ^5.0 || ^6.0", @@ -1631,7 +1588,7 @@ "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5.8 || ^9.0", + "phpunit/phpunit": "^9.0", "symfony/error-handler": "^5.2 || ^6.0", "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0" }, @@ -1669,7 +1626,7 @@ "description": "PHP Benchmarking Framework", "support": { "issues": "https://github.com/phpbench/phpbench/issues", - "source": "https://github.com/phpbench/phpbench/tree/1.2.8" + "source": "https://github.com/phpbench/phpbench/tree/1.2.10" }, "funding": [ { @@ -1677,7 +1634,7 @@ "type": "github" } ], - "time": "2023-01-14T13:08:42+00:00" + "time": "2023-03-24T08:52:55+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1890,23 +1847,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.23", + "version": "9.2.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c" + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", - "reference": "9f1f0f9a2fbb680b26d1cf9b61b6eac43a6e4e9c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.14", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -1921,8 +1878,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -1955,7 +1912,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.23" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" }, "funding": [ { @@ -1963,7 +1920,7 @@ "type": "github" } ], - "time": "2022-12-28T12:41:10+00:00" + "time": "2023-03-06T12:58:08+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2208,16 +2165,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.28", + "version": "9.6.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e" + "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/954ca3113a03bf780d22f07bf055d883ee04b65e", - "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/17d621b3aff84d0c8b62539e269e87d8d5baa76e", + "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e", "shasum": "" }, "require": { @@ -2250,8 +2207,8 @@ "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -2259,7 +2216,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -2290,7 +2247,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.28" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.8" }, "funding": [ { @@ -2306,7 +2264,7 @@ "type": "tidelift" } ], - "time": "2023-01-14T12:32:24+00:00" + "time": "2023-05-11T05:14:45+00:00" }, { "name": "psalm/plugin-phpunit", @@ -2815,16 +2773,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -2869,7 +2827,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -2877,20 +2835,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -2932,7 +2890,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -2940,7 +2898,7 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", @@ -3254,16 +3212,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -3302,10 +3260,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -3313,7 +3271,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -3372,16 +3330,16 @@ }, { "name": "sebastian/type", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", - "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -3416,7 +3374,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -3424,7 +3382,7 @@ "type": "github" } ], - "time": "2022-09-12T14:47:03+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -3481,16 +3439,16 @@ }, { "name": "seld/jsonlint", - "version": "1.9.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "4211420d25eba80712bff236a98960ef68b866b7" + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", "shasum": "" }, "require": { @@ -3529,7 +3487,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" }, "funding": [ { @@ -3541,7 +3499,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T13:37:23+00:00" + "time": "2023-05-11T13:16:46+00:00" }, { "name": "slevomat/coding-standard", @@ -3606,26 +3564,25 @@ }, { "name": "spatie/array-to-xml", - "version": "2.17.1", + "version": "3.1.6", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46" + "reference": "e210b98957987c755372465be105d32113f339a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", - "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/e210b98957987c755372465be105d32113f339a4", + "reference": "e210b98957987c755372465be105d32113f339a4", "shasum": "" }, "require": { "ext-dom": "*", - "php": "^7.4|^8.0" + "php": "^8.0" }, "require-dev": { "mockery/mockery": "^1.2", "pestphp/pest": "^1.21", - "phpunit/phpunit": "^9.0", "spatie/pest-plugin-snapshots": "^1.1" }, "type": "library", @@ -3654,7 +3611,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/2.17.1" + "source": "https://github.com/spatie/array-to-xml/tree/3.1.6" }, "funding": [ { @@ -3666,20 +3623,20 @@ "type": "github" } ], - "time": "2022-12-26T08:22:07+00:00" + "time": "2023-05-11T14:04:07+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -3715,31 +3672,33 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2022-06-18T07:21:10+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { "name": "symfony/console", - "version": "v6.0.17", + "version": "v6.2.11", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2ab307342a7233b9a260edd5ef94087aaca57d18" + "reference": "5aa03db8ef0a5457c316ec580e69562d97734c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2ab307342a7233b9a260edd5ef94087aaca57d18", - "reference": "2ab307342a7233b9a260edd5ef94087aaca57d18", + "url": "https://api.github.com/repos/symfony/console/zipball/5aa03db8ef0a5457c316ec580e69562d97734c77", + "reference": "5aa03db8ef0a5457c316ec580e69562d97734c77", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^1.1|^2|^3", "symfony/string": "^5.4|^6.0" @@ -3796,12 +3755,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.0.17" + "source": "https://github.com/symfony/console/tree/v6.2.11" }, "funding": [ { @@ -3817,29 +3776,29 @@ "type": "tidelift" } ], - "time": "2022-12-28T14:21:34+00:00" + "time": "2023-05-26T08:16:21+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.0.2", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -3868,7 +3827,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" }, "funding": [ { @@ -3884,24 +3843,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2023-03-01T10:25:55+00:00" }, { "name": "symfony/filesystem", - "version": "v6.0.13", + "version": "v6.2.10", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3adca49133bd055ebe6011ed1e012be3c908af79" + "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3adca49133bd055ebe6011ed1e012be3c908af79", - "reference": "3adca49133bd055ebe6011ed1e012be3c908af79", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd588debf7d1bc16a2c84b4b3b71145d9946b894", + "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -3931,7 +3890,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.0.13" + "source": "https://github.com/symfony/filesystem/tree/v6.2.10" }, "funding": [ { @@ -3947,24 +3906,27 @@ "type": "tidelift" } ], - "time": "2022-09-21T20:25:27+00:00" + "time": "2023-04-18T13:46:08+00:00" }, { "name": "symfony/finder", - "version": "v6.0.19", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5cc9cac6586fc0c28cd173780ca696e419fefa11" + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5cc9cac6586fc0c28cd173780ca696e419fefa11", - "reference": "5cc9cac6586fc0c28cd173780ca696e419fefa11", + "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0" }, "type": "library", "autoload": { @@ -3992,7 +3954,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.0.19" + "source": "https://github.com/symfony/finder/tree/v6.2.7" }, "funding": [ { @@ -4008,24 +3970,24 @@ "type": "tidelift" } ], - "time": "2023-01-20T17:44:14+00:00" + "time": "2023-02-16T09:57:23+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.0.19", + "version": "v6.2.7", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "6a180d1c45e0d9797470ca9eb46215692de00fa3" + "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/6a180d1c45e0d9797470ca9eb46215692de00fa3", - "reference": "6a180d1c45e0d9797470ca9eb46215692de00fa3", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/aa0e85b53bbb2b4951960efd61d295907eacd629", + "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.1|^3" }, "type": "library", @@ -4059,7 +4021,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.0.19" + "source": "https://github.com/symfony/options-resolver/tree/v6.2.7" }, "funding": [ { @@ -4075,7 +4037,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2023-02-14T08:44:56+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4407,105 +4369,22 @@ ], "time": "2022-11-03T14:55:06+00:00" }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, { "name": "symfony/process", - "version": "v6.0.19", + "version": "v6.2.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "2114fd60f26a296cc403a7939ab91478475a33d4" + "reference": "97ae9721bead9d1a39b5650e2f4b7834b93b539c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/2114fd60f26a296cc403a7939ab91478475a33d4", - "reference": "2114fd60f26a296cc403a7939ab91478475a33d4", + "url": "https://api.github.com/repos/symfony/process/zipball/97ae9721bead9d1a39b5650e2f4b7834b93b539c", + "reference": "97ae9721bead9d1a39b5650e2f4b7834b93b539c", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -4533,7 +4412,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.0.19" + "source": "https://github.com/symfony/process/tree/v6.2.11" }, "funding": [ { @@ -4549,7 +4428,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2023-05-19T07:42:48+00:00" }, { "name": "symfony/service-contracts", @@ -4636,20 +4515,20 @@ }, { "name": "symfony/string", - "version": "v6.0.17", + "version": "v6.2.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "3f57003dd8a67ed76870cc03092f8501db7788d9" + "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/3f57003dd8a67ed76870cc03092f8501db7788d9", - "reference": "3f57003dd8a67ed76870cc03092f8501db7788d9", + "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", + "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -4661,6 +4540,7 @@ "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", "symfony/translation-contracts": "^2.0|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, @@ -4701,7 +4581,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.0.17" + "source": "https://github.com/symfony/string/tree/v6.2.8" }, "funding": [ { @@ -4717,7 +4597,7 @@ "type": "tidelift" } ], - "time": "2022-12-14T15:52:41+00:00" + "time": "2023-03-20T16:06:02+00:00" }, { "name": "theseer/tokenizer", @@ -4771,22 +4651,22 @@ }, { "name": "vimeo/psalm", - "version": "5.4.0", + "version": "5.12.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863" + "reference": "f90118cdeacd0088e7215e64c0c99ceca819e176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", - "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/f90118cdeacd0088e7215e64c0c99ceca819e176", + "reference": "f90118cdeacd0088e7215e64c0c99ceca819e176", "shasum": "" }, "require": { "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.10.0", + "composer-runtime-api": "^2", "composer/semver": "^1.4 || ^2.0 || ^3.0", "composer/xdebug-handler": "^2.0 || ^3.0", "dnoegel/php-xdg-base-dir": "^0.1.1", @@ -4799,28 +4679,28 @@ "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.1", "felixfbecker/language-server-protocol": "^1.5.2", - "fidry/cpu-core-counter": "^0.4.0", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.14", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", - "sebastian/diff": "^4.0", - "spatie/array-to-xml": "^2.17.0", + "sebastian/diff": "^4.0 || ^5.0", + "spatie/array-to-xml": "^2.17.0 || ^3.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/polyfill-php80": "^1.25" + "symfony/filesystem": "^5.4 || ^6.0" }, "provide": { "psalm/psalm": "self.version" }, "require-dev": { + "amphp/phpunit-util": "^2.0", "bamarni/composer-bin-plugin": "^1.4", - "brianium/paratest": "^6.0", + "brianium/paratest": "^6.9", "ext-curl": "*", "mockery/mockery": "^1.5", "nunomaduro/mock-final-classes": "^1.1", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpdoc-parser": "^1.6", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^9.6", "psalm/plugin-mockery": "^1.1", "psalm/plugin-phpunit": "^0.18", "slevomat/coding-standard": "^8.4", @@ -4866,34 +4746,35 @@ "keywords": [ "code", "inspection", - "php" + "php", + "static analysis" ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.4.0" + "source": "https://github.com/vimeo/psalm/tree/5.12.0" }, - "time": "2022-12-19T21:31:12+00:00" + "time": "2023-05-22T21:19:03+00:00" }, { "name": "webimpress/coding-standard", - "version": "1.2.4", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/webimpress/coding-standard.git", - "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9" + "reference": "b26557e2386711ecb74f22718f4b4bde5ddbc899" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", - "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", + "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/b26557e2386711ecb74f22718f4b4bde5ddbc899", + "reference": "b26557e2386711ecb74f22718f4b4bde5ddbc899", "shasum": "" }, "require": { "php": "^7.3 || ^8.0", - "squizlabs/php_codesniffer": "^3.6.2" + "squizlabs/php_codesniffer": "^3.7.2" }, "require-dev": { - "phpunit/phpunit": "^9.5.13" + "phpunit/phpunit": "^9.6.4" }, "type": "phpcodesniffer-standard", "extra": { @@ -4919,7 +4800,7 @@ ], "support": { "issues": "https://github.com/webimpress/coding-standard/issues", - "source": "https://github.com/webimpress/coding-standard/tree/1.2.4" + "source": "https://github.com/webimpress/coding-standard/tree/1.3.1" }, "funding": [ { @@ -4927,7 +4808,7 @@ "type": "github" } ], - "time": "2022-02-15T19:52:12+00:00" + "time": "2023-03-09T15:05:18+00:00" }, { "name": "webmozart/assert", @@ -5043,11 +4924,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0" }, "platform-dev": [], "platform-overrides": { - "php": "8.0.99" + "php": "8.1.99" }, "plugin-api-version": "2.3.0" } diff --git a/phpcs.xml b/phpcs.xml index 81110cb..2a5699e 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -8,7 +8,7 @@ <arg name="colors"/> <arg name="extensions" value="php"/> <arg name="parallel" value="80"/> - <arg value="s" /> + <arg value="ps" /> <rule ref="LaminasCodingStandard"/> diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 632b478..b9b901e 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,19 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<files psalm-version="5.0.0@4e177bf0c9f03c17d2fbfd83b7cc9c47605274d8"> +<files psalm-version="5.12.0@f90118cdeacd0088e7215e64c0c99ceca819e176"> <file src="src/Acl.php"> - <InvalidNullableReturnType occurrences="1"> - <code>bool</code> - </InvalidNullableReturnType> - <InvalidReturnType occurrences="3"> - <code>bool|void</code> - <code>bool|void</code> - <code>bool|void</code> - </InvalidReturnType> - <MixedArgument occurrences="15"> + <MixedArgument> <code>$child</code> <code>$childId</code> - <code>$dfs['stack']</code> - <code>$dfs['stack']</code> + <code><![CDATA[$dfs['stack']]]></code> + <code><![CDATA[$dfs['stack']]]></code> <code>$privilege</code> <code>$privilege</code> <code>$resource</code> @@ -26,75 +18,75 @@ <code>$role</code> <code>$visitor</code> </MixedArgument> - <MixedArrayAccess occurrences="33"> - <code>$rule['assert']</code> - <code>$rule['assert']</code> - <code>$rule['type']</code> - <code>$rule['type']</code> - <code>$rules['allPrivileges']['type']</code> - <code>$rules['byPrivilegeId'][$privilege]['type']</code> - <code>$this->resources[$id]['children']</code> - <code>$this->resources[$parentId]['parent']</code> - <code>$this->resources[$resource->getResourceId()]['parent']</code> - <code>$this->resources[$resource->getResourceId()]['parent']</code> - <code>$this->resources[$resourceId]['children']</code> - <code>$this->resources[$resourceId]['instance']</code> - <code>$this->resources[$resourceId]['parent']</code> - <code>$this->resources[$resourceId]['parent']</code> - <code>$this->resources[$resourceParent->getResourceId()]['children']</code> - <code>$this->rules['allResources']['byRoleId']</code> - <code>$this->rules['allResources']['byRoleId']</code> - <code>$this->rules['allResources']['byRoleId']</code> - <code>$this->rules['allResources']['byRoleId']</code> - <code>$this->rules['allResources']['byRoleId'][$roleIdCurrent]</code> - <code>$this->rules['allResources']['byRoleId'][$roleIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId']</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId']</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceId]</code> - <code>$this->rules['byResourceId'][$resourceId]</code> - <code>$visitor['allRoles']</code> - <code>$visitor['byRoleId']</code> - <code>$visitor['byRoleId'][$roleId]</code> + <MixedArrayAccess> + <code><![CDATA[$rule['assert']]]></code> + <code><![CDATA[$rule['assert']]]></code> + <code><![CDATA[$rule['type']]]></code> + <code><![CDATA[$rule['type']]]></code> + <code><![CDATA[$rules['allPrivileges']['type']]]></code> + <code><![CDATA[$rules['byPrivilegeId'][$privilege]['type']]]></code> + <code><![CDATA[$this->resources[$id]['children']]]></code> + <code><![CDATA[$this->resources[$parentId]['parent']]]></code> + <code><![CDATA[$this->resources[$resource->getResourceId()]['parent']]]></code> + <code><![CDATA[$this->resources[$resource->getResourceId()]['parent']]]></code> + <code><![CDATA[$this->resources[$resourceId]['children']]]></code> + <code><![CDATA[$this->resources[$resourceId]['instance']]]></code> + <code><![CDATA[$this->resources[$resourceId]['parent']]]></code> + <code><![CDATA[$this->resources[$resourceId]['parent']]]></code> + <code><![CDATA[$this->resources[$resourceParent->getResourceId()]['children']]]></code> + <code><![CDATA[$this->rules['allResources']['byRoleId']]]></code> + <code><![CDATA[$this->rules['allResources']['byRoleId']]]></code> + <code><![CDATA[$this->rules['allResources']['byRoleId']]]></code> + <code><![CDATA[$this->rules['allResources']['byRoleId']]]></code> + <code><![CDATA[$this->rules['allResources']['byRoleId'][$roleIdCurrent]]]></code> + <code><![CDATA[$this->rules['allResources']['byRoleId'][$roleIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId']]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId']]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceId]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceId]]]></code> + <code><![CDATA[$visitor['allRoles']]]></code> + <code><![CDATA[$visitor['byRoleId']]]></code> + <code><![CDATA[$visitor['byRoleId'][$roleId]]]></code> </MixedArrayAccess> - <MixedArrayAssignment occurrences="10"> - <code>$dfs['stack'][]</code> - <code>$dfs['stack'][]</code> - <code>$dfs['visited'][$role->getRoleId()]</code> - <code>$dfs['visited'][$role->getRoleId()]</code> - <code>$this->resources[$resourceParentId]['children']</code> - <code>$this->resources[$resourceParentId]['children'][$resourceId]</code> - <code>$this->rules['byResourceId'][$resourceId]</code> - <code>$visitor['allRoles']</code> - <code>$visitor['byRoleId']</code> - <code>$visitor['byRoleId'][$roleId]</code> + <MixedArrayAssignment> + <code><![CDATA[$dfs['stack'][]]]></code> + <code><![CDATA[$dfs['stack'][]]]></code> + <code><![CDATA[$dfs['visited'][$role->getRoleId()]]]></code> + <code><![CDATA[$dfs['visited'][$role->getRoleId()]]]></code> + <code><![CDATA[$this->resources[$resourceParentId]['children']]]></code> + <code><![CDATA[$this->resources[$resourceParentId]['children'][$resourceId]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceId]]]></code> + <code><![CDATA[$visitor['allRoles']]]></code> + <code><![CDATA[$visitor['byRoleId']]]></code> + <code><![CDATA[$visitor['byRoleId'][$roleId]]]></code> </MixedArrayAssignment> - <MixedArrayOffset occurrences="13"> - <code>$dfs['visited'][$role->getRoleId()]</code> - <code>$dfs['visited'][$role->getRoleId()]</code> - <code>$rules['byPrivilegeId'][$privilege]</code> - <code>$rules['byPrivilegeId'][$privilege]</code> - <code>$rules['byPrivilegeId'][$privilege]</code> - <code>$this->resources[$parentId]</code> - <code>$this->resources[$parentId]</code> - <code>$this->resources[$resourceParent->getResourceId()]</code> - <code>$this->rules['allResources']['byRoleId'][$roleIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]</code> - <code>$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]</code> + <MixedArrayOffset> + <code><![CDATA[$dfs['visited'][$role->getRoleId()]]]></code> + <code><![CDATA[$dfs['visited'][$role->getRoleId()]]]></code> + <code><![CDATA[$rules['byPrivilegeId'][$privilege]]]></code> + <code><![CDATA[$rules['byPrivilegeId'][$privilege]]]></code> + <code><![CDATA[$rules['byPrivilegeId'][$privilege]]]></code> + <code><![CDATA[$this->resources[$parentId]]]></code> + <code><![CDATA[$this->resources[$parentId]]]></code> + <code><![CDATA[$this->resources[$resourceParent->getResourceId()]]]></code> + <code><![CDATA[$this->rules['allResources']['byRoleId'][$roleIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]]]></code> + <code><![CDATA[$this->rules['byResourceId'][$resourceIdCurrent]['byRoleId'][$roleIdCurrent]]]></code> </MixedArrayOffset> - <MixedAssignment occurrences="42"> + <MixedAssignment> <code>$child</code> <code>$child</code> <code>$childId</code> <code>$children</code> - <code>$dfs['stack'][]</code> - <code>$dfs['stack'][]</code> + <code><![CDATA[$dfs['stack'][]]]></code> + <code><![CDATA[$dfs['stack'][]]]></code> <code>$parentId</code> <code>$parentId</code> <code>$privilege</code> @@ -132,58 +124,62 @@ <code>$visitor</code> <code>$visitor</code> </MixedAssignment> - <MixedInferredReturnType occurrences="3"> + <MixedInferredReturnType> <code>ResourceInterface</code> <code>array|null</code> <code>string|null</code> </MixedInferredReturnType> - <MixedMethodCall occurrences="5"> + <MixedMethodCall> <code>getResourceId</code> <code>getResourceId</code> <code>getResourceId</code> <code>getRoleId</code> <code>getRoleId</code> </MixedMethodCall> - <MixedReturnStatement occurrences="6"> - <code>$rule['type']</code> - <code>$this->resources[$resourceId]['instance']</code> - <code>$visitor['allRoles']</code> - <code>$visitor['allRoles']</code> - <code>$visitor['byRoleId'][$roleId]</code> - <code>$visitor['byRoleId'][$roleId]</code> + <MixedReturnStatement> + <code><![CDATA[$rule['type']]]></code> + <code><![CDATA[$this->resources[$resourceId]['instance']]]></code> + <code><![CDATA[$visitor['allRoles']]]></code> + <code><![CDATA[$visitor['allRoles']]]></code> + <code><![CDATA[$visitor['byRoleId'][$roleId]]]></code> + <code><![CDATA[$visitor['byRoleId'][$roleId]]]></code> </MixedReturnStatement> - <PossiblyInvalidPropertyAssignmentValue occurrences="2"> + <PossiblyInvalidPropertyAssignmentValue> <code>$resource</code> <code>$role</code> </PossiblyInvalidPropertyAssignmentValue> - <PossiblyNullArgument occurrences="2"> - <code>$dfs['stack']</code> - <code>$dfs['stack']</code> + <PossiblyNullArgument> + <code><![CDATA[$dfs['stack']]]></code> + <code><![CDATA[$dfs['stack']]]></code> </PossiblyNullArgument> - <PossiblyNullArrayAccess occurrences="2"> - <code>$dfs['stack']</code> - <code>$dfs['stack']</code> + <PossiblyNullArrayAccess> + <code><![CDATA[$dfs['stack']]]></code> + <code><![CDATA[$dfs['stack']]]></code> </PossiblyNullArrayAccess> - <PossiblyNullArrayAssignment occurrences="2"> - <code>$rules['allPrivileges']</code> - <code>$rules['byPrivilegeId']</code> + <PossiblyNullArrayAssignment> + <code><![CDATA[$rules['allPrivileges']]]></code> + <code><![CDATA[$rules['byPrivilegeId']]]></code> </PossiblyNullArrayAssignment> - <PossiblyNullReference occurrences="2"> + <PossiblyNullReference> <code>getResourceId</code> <code>getResourceId</code> </PossiblyNullReference> - <PossiblyUndefinedVariable occurrences="1"> + <PossiblyUndefinedVariable> <code>$resourceParentId</code> </PossiblyUndefinedVariable> - <RedundantCastGivenDocblockType occurrences="2"> + <RedundantCastGivenDocblockType> <code>(string) $resource</code> <code>(string) $resource</code> </RedundantCastGivenDocblockType> - <UnsupportedReferenceUsage occurrences="2"> - <code>$rules =& $this->getRules($resource, $role)</code> - <code>$rules =& $this->getRules($resource, $role, true)</code> + <UnsupportedPropertyReferenceUsage> + <code><![CDATA[$visitor =& $this->rules['allResources']]]></code> + <code><![CDATA[$visitor =& $this->rules['byResourceId'][$resourceId]]]></code> + </UnsupportedPropertyReferenceUsage> + <UnsupportedReferenceUsage> + <code><![CDATA[$rules =& $this->getRules($resource, $role)]]></code> + <code><![CDATA[$rules =& $this->getRules($resource, $role, true)]]></code> </UnsupportedReferenceUsage> - <UnusedForeachValue occurrences="9"> + <UnusedForeachValue> <code>$child</code> <code>$resource</code> <code>$rule</code> @@ -194,108 +190,92 @@ <code>$rules</code> <code>$rules</code> </UnusedForeachValue> - <UnusedVariable occurrences="1"> + <UnusedVariable> <code>$rules</code> </UnusedVariable> </file> <file src="src/Assertion/AssertionAggregate.php"> - <MixedAssignment occurrences="1"> + <MixedAssignment> <code>$assertion</code> </MixedAssignment> - <MixedMethodCall occurrences="2"> + <MixedMethodCall> <code>assert</code> <code>new $assertion()</code> </MixedMethodCall> - <MixedOperand occurrences="1"> + <MixedOperand> <code>$assertion</code> </MixedOperand> </file> <file src="src/Assertion/AssertionManager.php"> - <MissingReturnType occurrences="1"> + <MissingReturnType> <code>validatePlugin</code> </MissingReturnType> - <NonInvariantDocblockPropertyType occurrences="1"> + <NonInvariantDocblockPropertyType> <code>$instanceOf</code> </NonInvariantDocblockPropertyType> </file> <file src="src/Assertion/ExpressionAssertion.php"> - <InvalidNullableReturnType occurrences="1"> + <InvalidNullableReturnType> <code>bool</code> </InvalidNullableReturnType> - <InvalidReturnType occurrences="1"> - <code>bool|void</code> - </InvalidReturnType> - <MissingReturnType occurrences="2"> + <MissingReturnType> <code>validateOperand</code> <code>validateOperator</code> </MissingReturnType> - <MixedArgument occurrences="12"> - <code>$contextProperty</code> - <code>$contextProperty</code> - <code>$contextProperty</code> - <code>$expression['operator']</code> + <MixedArgument> + <code><![CDATA[$expression['operator']]]></code> <code>$left</code> <code>$left</code> - <code>$object</code> - <code>$object</code> <code>$right</code> <code>$right</code> <code>$right</code> <code>$right</code> </MixedArgument> - <MixedArrayOffset occurrences="1"> - <code>$context[$contextProperty]</code> - </MixedArrayOffset> - <MixedAssignment occurrences="4"> - <code>$contextProperty</code> + <MixedAssignment> <code>$left</code> - <code>$object</code> <code>$right</code> </MixedAssignment> - <MixedPropertyFetch occurrences="1"> - <code>$object->$field</code> - </MixedPropertyFetch> - <NullableReturnStatement occurrences="1"> - <code>static::evaluateExpression($left, $this->operator, $right)</code> + <NullableReturnStatement> + <code><![CDATA[static::evaluateExpression($left, $this->operator, $right)]]></code> </NullableReturnStatement> </file> <file src="src/Resource/GenericResource.php"> - <RedundantCastGivenDocblockType occurrences="1"> + <RedundantCastGivenDocblockType> <code>(string) $resourceId</code> </RedundantCastGivenDocblockType> </file> <file src="src/Role/GenericRole.php"> - <RedundantCastGivenDocblockType occurrences="1"> + <RedundantCastGivenDocblockType> <code>(string) $roleId</code> </RedundantCastGivenDocblockType> </file> <file src="src/Role/Registry.php"> - <InvalidPropertyAssignmentValue occurrences="1"> - <code>$this->roles</code> + <InvalidPropertyAssignmentValue> + <code><![CDATA[$this->roles]]></code> </InvalidPropertyAssignmentValue> - <MixedArgument occurrences="3"> + <MixedArgument> <code>$parentId</code> <code>$roleParentId</code> <code>$roleParentId</code> </MixedArgument> - <MixedArrayAccess occurrences="2"> - <code>$this->roles[$childId]['parents'][$roleId]</code> - <code>$this->roles[$parentId]['children'][$roleId]</code> + <MixedArrayAccess> + <code><![CDATA[$this->roles[$childId]['parents'][$roleId]]]></code> + <code><![CDATA[$this->roles[$parentId]['children'][$roleId]]]></code> </MixedArrayAccess> - <MixedArrayAssignment occurrences="1"> - <code>$this->roles[$roleParentId]['children'][$roleId]</code> + <MixedArrayAssignment> + <code><![CDATA[$this->roles[$roleParentId]['children'][$roleId]]]></code> </MixedArrayAssignment> - <MixedArrayOffset occurrences="5"> + <MixedArrayOffset> <code>$roleParents[$roleParentId]</code> - <code>$this->roles[$childId]</code> - <code>$this->roles[$parentId]</code> - <code>$this->roles[$roleParentId]</code> - <code>$this->roles[$roleParentId]</code> + <code><![CDATA[$this->roles[$childId]]]></code> + <code><![CDATA[$this->roles[$parentId]]]></code> + <code><![CDATA[$this->roles[$roleParentId]]]></code> + <code><![CDATA[$this->roles[$roleParentId]]]></code> </MixedArrayOffset> - <MixedArrayTypeCoercion occurrences="1"> - <code>$this->roles[$roleParentId]</code> + <MixedArrayTypeCoercion> + <code><![CDATA[$this->roles[$roleParentId]]]></code> </MixedArrayTypeCoercion> - <MixedAssignment occurrences="8"> + <MixedAssignment> <code>$child</code> <code>$childId</code> <code>$parent</code> @@ -305,81 +285,81 @@ <code>$parentId</code> <code>$roleParentId</code> </MixedAssignment> - <MixedInferredReturnType occurrences="2"> + <MixedInferredReturnType> <code>RoleInterface</code> <code>array</code> </MixedInferredReturnType> - <MixedPropertyTypeCoercion occurrences="1"> - <code>$this->roles</code> + <MixedPropertyTypeCoercion> + <code><![CDATA[$this->roles]]></code> </MixedPropertyTypeCoercion> - <MixedReturnStatement occurrences="2"> - <code>$this->roles[$roleId]['instance']</code> - <code>$this->roles[$roleId]['parents']</code> + <MixedReturnStatement> + <code><![CDATA[$this->roles[$roleId]['instance']]]></code> + <code><![CDATA[$this->roles[$roleId]['parents']]]></code> </MixedReturnStatement> - <PossiblyUndefinedVariable occurrences="1"> + <PossiblyUndefinedVariable> <code>$roleParentId</code> </PossiblyUndefinedVariable> - <RedundantCastGivenDocblockType occurrences="2"> + <RedundantCastGivenDocblockType> <code>(string) $role</code> <code>(string) $role</code> </RedundantCastGivenDocblockType> - <UndefinedInterfaceMethod occurrences="10"> - <code>$this->roles[$childId]</code> - <code>$this->roles[$parentId]</code> - <code>$this->roles[$roleId]</code> - <code>$this->roles[$roleId]</code> - <code>$this->roles[$roleId]</code> - <code>$this->roles[$roleId]</code> - <code>$this->roles[$roleId]</code> - <code>$this->roles[$roleId]</code> - <code>$this->roles[$roleParentId]</code> - <code>$this->roles[$roleParentId]</code> + <UndefinedInterfaceMethod> + <code><![CDATA[$this->roles[$childId]]]></code> + <code><![CDATA[$this->roles[$parentId]]]></code> + <code><![CDATA[$this->roles[$roleId]]]></code> + <code><![CDATA[$this->roles[$roleId]]]></code> + <code><![CDATA[$this->roles[$roleId]]]></code> + <code><![CDATA[$this->roles[$roleId]]]></code> + <code><![CDATA[$this->roles[$roleId]]]></code> + <code><![CDATA[$this->roles[$roleId]]]></code> + <code><![CDATA[$this->roles[$roleParentId]]]></code> + <code><![CDATA[$this->roles[$roleParentId]]]></code> </UndefinedInterfaceMethod> - <UnusedForeachValue occurrences="3"> + <UnusedForeachValue> <code>$child</code> <code>$parent</code> <code>$parent</code> </UnusedForeachValue> </file> <file src="test/AclTest.php"> - <InvalidArgument occurrences="2"> + <InvalidArgument> <code>new stdClass()</code> <code>new stdClass()</code> </InvalidArgument> - <MissingReturnType occurrences="4"> + <MissingReturnType> <code>testAclResourcePermissionsAreInheritedWithMultilevelResourcesAndDenyPolicy</code> <code>testAllowNullPermissionAfterResourcesExistShouldAllowAllPermissionsForRole</code> <code>testRemoveDenyWithNullResourceAppliesToAllResources</code> <code>testSetRuleWorksWithResourceInterface</code> </MissingReturnType> - <MixedAssignment occurrences="2"> + <MixedAssignment> <code>$roleParent</code> <code>$roleParent</code> </MixedAssignment> - <MixedMethodCall occurrences="1"> + <MixedMethodCall> <code>getRoleId</code> </MixedMethodCall> - <TooManyArguments occurrences="1"> - <code>new Resource\GenericResource('profiles', 'gallery')</code> + <TooManyArguments> + <code><![CDATA[new Resource\GenericResource('profiles', 'gallery')]]></code> </TooManyArguments> - <UndefinedClass occurrences="2"> - <code>$assertion->assertReturnValue</code> - <code>$assertion->assertReturnValue</code> + <UndefinedClass> + <code><![CDATA[$assertion->assertReturnValue]]></code> + <code><![CDATA[$assertion->assertReturnValue]]></code> </UndefinedClass> - <UndefinedDocblockClass occurrences="5"> + <UndefinedDocblockClass> <code>$assertion</code> <code>$assertion</code> - <code>$assertion->lastAssertResource</code> - <code>$assertion->lastAssertRole</code> - <code>$assertion->lastAssertRole</code> + <code><![CDATA[$assertion->lastAssertResource]]></code> + <code><![CDATA[$assertion->lastAssertRole]]></code> + <code><![CDATA[$assertion->lastAssertRole]]></code> </UndefinedDocblockClass> - <UnusedForeachValue occurrences="2"> + <UnusedForeachValue> <code>$roleParent</code> <code>$roleParent</code> </UnusedForeachValue> </file> <file src="test/Assertion/AssertionAggregateTest.php"> - <DeprecatedMethod occurrences="6"> + <DeprecatedMethod> <code>setMethods</code> <code>setMethods</code> <code>setMethods</code> @@ -387,25 +367,25 @@ <code>setMethods</code> <code>setMethods</code> </DeprecatedMethod> - <MissingReturnType occurrences="1"> + <MissingReturnType> <code>testClearAssertions</code> </MissingReturnType> - <MixedArgument occurrences="4"> + <MixedArgument> <code>$assertion</code> <code>$assertion</code> <code>$assertion</code> <code>$assertion</code> </MixedArgument> - <MixedArgumentTypeCoercion occurrences="1"> + <MixedArgumentTypeCoercion> <code>$assertions</code> </MixedArgumentTypeCoercion> - <MixedAssignment occurrences="4"> + <MixedAssignment> <code>$assertion</code> <code>$assertion</code> <code>$assertion</code> <code>$assertion</code> </MixedAssignment> - <MixedMethodCall occurrences="48"> + <MixedMethodCall> <code>expects</code> <code>expects</code> <code>expects</code> @@ -455,7 +435,7 @@ <code>with</code> <code>with</code> </MixedMethodCall> - <PossiblyUndefinedVariable occurrences="5"> + <PossiblyUndefinedVariable> <code>$assertions</code> <code>$assertions</code> <code>$assertions</code> @@ -464,7 +444,7 @@ </PossiblyUndefinedVariable> </file> <file src="test/Assertion/CallbackAssertionTest.php"> - <MissingClosureParamType occurrences="9"> + <MissingClosureParamType> <code>$aclArg</code> <code>$aclArg</code> <code>$privilegeArg</code> @@ -475,11 +455,11 @@ <code>$roleArg</code> <code>$value</code> </MissingClosureParamType> - <MissingClosureReturnType occurrences="2"> - <code>static fn($aclArg, $roleArg, $resourceArg, $privilegeArg) => $value</code> - <code>static fn($value) => static fn($aclArg, $roleArg, $resourceArg, $privilegeArg) => $value</code> + <MissingClosureReturnType> + <code><![CDATA[static fn($aclArg, $roleArg, $resourceArg, $privilegeArg) => $value]]></code> + <code><![CDATA[static fn($value) => static fn($aclArg, $roleArg, $resourceArg, $privilegeArg) => $value]]></code> </MissingClosureReturnType> - <UnusedClosureParam occurrences="4"> + <UnusedClosureParam> <code>$aclArg</code> <code>$privilegeArg</code> <code>$resourceArg</code> @@ -487,12 +467,12 @@ </UnusedClosureParam> </file> <file src="test/Assertion/ExpressionAssertionTest.php"> - <MissingReturnType occurrences="1"> + <MissingReturnType> <code>testExpressionsEvaluation</code> </MissingReturnType> </file> <file src="test/TestAsset/StandardUseCase/UserIsBlogPostOwnerAssertion.php"> - <ParamNameMismatch occurrences="2"> + <ParamNameMismatch> <code>$blogPost</code> <code>$user</code> </ParamNameMismatch> diff --git a/src/Assertion/ExpressionAssertion.php b/src/Assertion/ExpressionAssertion.php index 90a4882..165ba98 100644 --- a/src/Assertion/ExpressionAssertion.php +++ b/src/Assertion/ExpressionAssertion.php @@ -13,10 +13,12 @@ use function array_flip; use function array_intersect_key; +use function assert; use function count; use function explode; use function in_array; use function is_array; +use function is_object; use function is_string; use function method_exists; use function preg_match; @@ -234,9 +236,12 @@ private function resolveOperandValue($operand, array $context) } $contextProperty = $operand[self::OPERAND_CONTEXT_PROPERTY]; + assert(is_string($contextProperty)); if (str_contains($contextProperty, '.')) { // property path? - [$objectName, $objectField] = explode('.', $contextProperty, 2); + $parts = explode('.', $contextProperty, 2); + assert(count($parts) >= 2); + [$objectName, $objectField] = $parts; return $this->getObjectFieldValue($context, $objectName, $objectField); } @@ -277,12 +282,12 @@ private function getObjectFieldValue(array $context, $objectName, $field) foreach ($accessors as $accessor) { $accessor .= $fieldAccessor; - if (method_exists($object, $accessor)) { + if (is_object($object) && method_exists($object, $accessor)) { return $object->$accessor(); } } - if (! $this->propertyExists($object, $field)) { + if (! is_object($object) || ! $this->propertyExists($object, $field)) { throw new RuntimeException(sprintf( "'%s' property cannot be resolved on the '%s' object", $field, diff --git a/test/Assertion/AssertionManagerCompatibilityTest.php b/test/Assertion/AssertionManagerCompatibilityTest.php index ecf7e75..83d7d11 100644 --- a/test/Assertion/AssertionManagerCompatibilityTest.php +++ b/test/Assertion/AssertionManagerCompatibilityTest.php @@ -16,7 +16,7 @@ class AssertionManagerCompatibilityTest extends TestCase { use CommonPluginManagerTrait; - protected function getPluginManager(): AssertionManager + protected static function getPluginManager(): AssertionManager { return new AssertionManager(new ServiceManager()); } From e137f4fe5bc6bb5ff3b392e95df90a62339b432f Mon Sep 17 00:00:00 2001 From: George Steel <george@net-glue.co.uk> Date: Mon, 29 May 2023 16:34:34 +0100 Subject: [PATCH 2/3] Update psalm config for future defaults, baselines various "Unused" code issues Signed-off-by: George Steel <george@net-glue.co.uk> --- psalm-baseline.xml | 37 +++++++++++++++++++++++++++++++++++++ psalm.xml.dist | 16 +++------------- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index b9b901e..995f74f 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -167,6 +167,13 @@ <PossiblyUndefinedVariable> <code>$resourceParentId</code> </PossiblyUndefinedVariable> + <PossiblyUnusedMethod> + <code>getChildResources</code> + </PossiblyUnusedMethod> + <PossiblyUnusedReturnValue> + <code>Acl</code> + <code>Acl</code> + </PossiblyUnusedReturnValue> <RedundantCastGivenDocblockType> <code>(string) $resource</code> <code>(string) $resource</code> @@ -213,6 +220,9 @@ <NonInvariantDocblockPropertyType> <code>$instanceOf</code> </NonInvariantDocblockPropertyType> + <PossiblyUnusedMethod> + <code>validatePlugin</code> + </PossiblyUnusedMethod> </file> <file src="src/Assertion/ExpressionAssertion.php"> <InvalidNullableReturnType> @@ -471,10 +481,37 @@ <code>testExpressionsEvaluation</code> </MissingReturnType> </file> + <file src="test/TestAsset/ExpressionUseCase/BlogPost.php"> + <PossiblyUnusedMethod> + <code>getAuthorName</code> + <code>getShortDescription</code> + </PossiblyUnusedMethod> + <PossiblyUnusedProperty> + <code>$content</code> + <code>$title</code> + </PossiblyUnusedProperty> + </file> + <file src="test/TestAsset/ExpressionUseCase/User.php"> + <PossiblyUnusedMethod> + <code>isAdult</code> + </PossiblyUnusedMethod> + </file> + <file src="test/TestAsset/ExtendedAclLaminas2234.php"> + <PossiblyUnusedReturnValue> + <code>bool|void</code> + <code>bool|void</code> + <code>bool|void</code> + </PossiblyUnusedReturnValue> + </file> <file src="test/TestAsset/StandardUseCase/UserIsBlogPostOwnerAssertion.php"> <ParamNameMismatch> <code>$blogPost</code> <code>$user</code> </ParamNameMismatch> + <PossiblyUnusedProperty> + <code>$lastAssertPrivilege</code> + <code>$lastAssertResource</code> + <code>$lastAssertRole</code> + </PossiblyUnusedProperty> </file> </files> diff --git a/psalm.xml.dist b/psalm.xml.dist index 069fdf0..1dcec2d 100644 --- a/psalm.xml.dist +++ b/psalm.xml.dist @@ -5,6 +5,9 @@ xmlns="https://getpsalm.org/schema/config" xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd" errorBaseline="psalm-baseline.xml" + findUnusedPsalmSuppress="true" + findUnusedBaselineEntry="true" + findUnusedCode="true" > <projectFiles> <directory name="src"/> @@ -16,19 +19,6 @@ </ignoreFiles> </projectFiles> - <issueHandlers> - <InternalMethod> - <errorLevel type="suppress"> - <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/> - </errorLevel> - <errorLevel type="suppress"> - <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/> - </errorLevel> - <errorLevel type="suppress"> - <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/> - </errorLevel> - </InternalMethod> - </issueHandlers> <plugins> <pluginClass class="Psalm\PhpUnitPlugin\Plugin"/> </plugins> From 8198a7369fa90e7c1cda28ab12d4c883107c1127 Mon Sep 17 00:00:00 2001 From: George Steel <george@net-glue.co.uk> Date: Mon, 29 May 2023 16:44:35 +0100 Subject: [PATCH 3/3] Upgrade to PHPUnit 10 Signed-off-by: George Steel <george@net-glue.co.uk> --- .gitignore | 1 + composer.json | 2 +- composer.lock | 582 ++++++++------------- phpunit.xml.dist | 22 +- psalm-baseline.xml | 11 +- test/Assertion/AssertionAggregateTest.php | 120 ++--- test/Assertion/AssertionManagerTest.php | 2 +- test/Assertion/ExpressionAssertionTest.php | 5 +- 8 files changed, 288 insertions(+), 457 deletions(-) diff --git a/.gitignore b/.gitignore index 47faf4d..bc94a3a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /phpunit.xml /vendor/ .phpcs-cache +.phpunit.cache diff --git a/composer.json b/composer.json index c9be203..7f64d8b 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,7 @@ "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-servicemanager": "^3.21", "phpbench/phpbench": "^1.2.10", - "phpunit/phpunit": "^9.6.8", + "phpunit/phpunit": "^10.1.3", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.12" }, diff --git a/composer.lock b/composer.lock index 4fda33d..0ef7ad6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1f8e12ec02a66e71f3fa9efd5878a1f0", + "content-hash": "7b41c84c6b90141698f19ecca4c0c312", "packages": [], "packages-dev": [ { @@ -652,76 +652,6 @@ }, "time": "2023-02-02T22:02:53+00:00" }, - { - "name": "doctrine/instantiator", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^11", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-12-30T00:23:10+00:00" - }, { "name": "doctrine/lexer", "version": "3.0.0", @@ -1847,16 +1777,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.26", + "version": "10.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" + "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/db1497ec8dd382e82c962f7abbe0320e4882ee4e", + "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e", "shasum": "" }, "require": { @@ -1864,18 +1794,18 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.15", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -1884,7 +1814,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -1912,7 +1842,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.2" }, "funding": [ { @@ -1920,32 +1851,32 @@ "type": "github" } ], - "time": "2023-03-06T12:58:08+00:00" + "time": "2023-05-22T09:04:27+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "5647d65443818959172645e7ed999217360654b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", + "reference": "5647d65443818959172645e7ed999217360654b6", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -1972,7 +1903,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" }, "funding": [ { @@ -1980,28 +1912,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-05-07T09:13:23+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -2009,7 +1941,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -2035,7 +1967,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -2043,32 +1975,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -2094,7 +2026,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" }, "funding": [ { @@ -2102,32 +2034,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-02-03T06:56:46+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -2153,7 +2085,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -2161,24 +2093,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.8", + "version": "10.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e" + "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/17d621b3aff84d0c8b62539e269e87d8d5baa76e", - "reference": "17d621b3aff84d0c8b62539e269e87d8d5baa76e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2379ebafc1737e71cdc84f402acb6b7f04198b9d", + "reference": "2379ebafc1737e71cdc84f402acb6b7f04198b9d", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -2188,27 +2119,26 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.0", + "sebastian/global-state": "^6.0", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -2216,7 +2146,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -2248,7 +2178,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.8" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.1.3" }, "funding": [ { @@ -2264,7 +2194,7 @@ "type": "tidelift" } ], - "time": "2023-05-11T05:14:45+00:00" + "time": "2023-05-11T05:16:22+00:00" }, { "name": "psalm/plugin-phpunit", @@ -2475,28 +2405,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -2519,7 +2449,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" }, "funding": [ { @@ -2527,32 +2457,32 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2023-02-03T06:58:15+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -2575,7 +2505,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -2583,32 +2513,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -2630,7 +2560,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -2638,34 +2568,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", + "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2704,7 +2636,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" }, "funding": [ { @@ -2712,33 +2644,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-02-03T07:07:16+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.10", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -2761,7 +2693,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" }, "funding": [ { @@ -2769,33 +2701,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-02-03T06:59:47+00:00" }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", + "phpunit/phpunit": "^10.0", "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2827,7 +2759,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" }, "funding": [ { @@ -2835,27 +2768,27 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2023-05-01T07:48:21+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -2863,7 +2796,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -2882,7 +2815,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -2890,7 +2823,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -2898,34 +2832,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -2967,7 +2901,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" }, "funding": [ { @@ -2975,38 +2909,35 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2023-02-03T07:06:49+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "aab257c712de87b90194febd52e4d184551c2d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", + "reference": "aab257c712de87b90194febd52e4d184551c2d44", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -3031,7 +2962,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" }, "funding": [ { @@ -3039,33 +2970,33 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-02-03T07:07:38+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", + "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.10", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -3088,7 +3019,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" }, "funding": [ { @@ -3096,34 +3027,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-02-03T07:08:02+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3145,7 +3076,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -3153,32 +3084,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -3200,7 +3131,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -3208,32 +3139,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3263,7 +3194,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -3271,87 +3202,32 @@ "type": "github" } ], - "time": "2023-02-03T06:07:39+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { "name": "sebastian/type", - "version": "3.2.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3374,7 +3250,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -3382,29 +3258,29 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { "name": "sebastian/version", - "version": "3.0.2", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3427,7 +3303,7 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -3435,7 +3311,7 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "seld/jsonlint", diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 3c36a79..bf4ae31 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -2,15 +2,25 @@ <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" bootstrap="vendor/autoload.php" - colors="true"> - <coverage processUncoveredFiles="true"> - <include> - <directory suffix=".php">./src</directory> - </include> - </coverage> + colors="true" + cacheDirectory=".phpunit.cache" + displayDetailsOnTestsThatTriggerWarnings="true" + displayDetailsOnTestsThatTriggerNotices="true" + displayDetailsOnTestsThatTriggerErrors="true" + displayDetailsOnTestsThatTriggerDeprecations="true" + displayDetailsOnSkippedTests="true" + failOnNotice="true" + failOnDeprecation="true" + failOnWarning="true" +> <testsuites> <testsuite name="laminas-permissions-acl Test Suite"> <directory>./test</directory> </testsuite> </testsuites> + <source> + <include> + <directory suffix=".php">./src</directory> + </include> + </source> </phpunit> diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 995f74f..d5f9962 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -369,14 +369,6 @@ </UnusedForeachValue> </file> <file src="test/Assertion/AssertionAggregateTest.php"> - <DeprecatedMethod> - <code>setMethods</code> - <code>setMethods</code> - <code>setMethods</code> - <code>setMethods</code> - <code>setMethods</code> - <code>setMethods</code> - </DeprecatedMethod> <MissingReturnType> <code>testClearAssertions</code> </MissingReturnType> @@ -480,6 +472,9 @@ <MissingReturnType> <code>testExpressionsEvaluation</code> </MissingReturnType> + <PossiblyUnusedMethod> + <code>getExpressions</code> + </PossiblyUnusedMethod> </file> <file src="test/TestAsset/ExpressionUseCase/BlogPost.php"> <PossiblyUnusedMethod> diff --git a/test/Assertion/AssertionAggregateTest.php b/test/Assertion/AssertionAggregateTest.php index 44ba20c..16502ed 100644 --- a/test/Assertion/AssertionAggregateTest.php +++ b/test/Assertion/AssertionAggregateTest.php @@ -27,7 +27,7 @@ protected function setUp(): void public function testAddAssertion(): AssertionAggregate { - $assertion = $this->getMockForAbstractClass(AssertionInterface::class); + $assertion = $this->createMock(AssertionInterface::class); $this->assertionAggregate->addAssertion($assertion); $this->assertEquals([$assertion], $this->assertionAggregate->peakAssertions()); @@ -46,8 +46,8 @@ public function testAddAssertion(): AssertionAggregate public function testAddAssertions(): void { - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); $aggregate = $this->assertionAggregate->addAssertions($assertions); @@ -123,18 +123,10 @@ public function testManagerAccessors(): void public function testCallingAssertWillFetchAssertionFromManager(): void { - $acl = $this->getMockBuilder(Acl::class) - ->getMock(); - - $role = $this->getMockBuilder(GenericRole::class) - ->setConstructorArgs(['test.role']) - ->getMock(); - - $resource = $this->getMockBuilder(GenericResource::class) - ->setConstructorArgs(['test.resource']) - ->getMock(); - - $assertion = $this->getMockForAbstractClass(AssertionInterface::class); + $acl = $this->createMock(Acl::class); + $role = $this->createMock(GenericRole::class); + $resource = $this->createMock(GenericResource::class); + $assertion = $this->createMock(AssertionInterface::class); $assertion->expects($this->once()) ->method('assert') ->will($this->returnValue(true)); @@ -185,20 +177,12 @@ public function testAssertThrowsAnExceptionWhenReferingToNonExistentAssertion(): public function testAssertWithModeAll(): void { - $acl = $this->getMockBuilder(Acl::class) - ->getMock(); - - $role = $this->getMockBuilder(GenericRole::class) - ->setConstructorArgs(['test.role']) - ->getMock(); - - $resource = $this->getMockBuilder(GenericResource::class) - ->setConstructorArgs(['test.resource']) - ->getMock(); - - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); + $acl = $this->createMock(Acl::class); + $role = $this->createMock(GenericRole::class); + $resource = $this->createMock(GenericResource::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); $assertions[0]->expects($this->once()) ->method('assert') @@ -222,20 +206,12 @@ public function testAssertWithModeAll(): void public function testAssertWithModeAtLeastOne(): void { - $acl = $this->getMockBuilder(Acl::class) - ->getMock(); - - $role = $this->getMockBuilder(GenericRole::class) - ->setConstructorArgs(['test.role']) - ->getMock(); - - $resource = $this->getMockBuilder(GenericResource::class) - ->setConstructorArgs(['test.resource']) - ->getMock(); - - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); + $acl = $this->createMock(Acl::class); + $role = $this->createMock(GenericRole::class); + $resource = $this->createMock(GenericResource::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); $assertions[0]->expects($this->once()) ->method('assert') @@ -260,22 +236,13 @@ public function testAssertWithModeAtLeastOne(): void public function testDoesNotAssertWithModeAll(): void { - $acl = $this->getMockBuilder(Acl::class) - ->getMock(); - - $role = $this->getMockBuilder(GenericRole::class) - ->setConstructorArgs(['test.role']) - ->setMethods(['assert']) - ->getMock(); - - $resource = $this->getMockBuilder(GenericResource::class) - ->setConstructorArgs(['test.resource']) - ->setMethods(['assert']) - ->getMock(); + $acl = $this->createMock(Acl::class); + $role = $this->createMock(GenericRole::class); + $resource = $this->createMock(GenericResource::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); $assertions[0]->expects($this->once()) ->method('assert') @@ -299,22 +266,12 @@ public function testDoesNotAssertWithModeAll(): void public function testDoesNotAssertWithModeAtLeastOne(): void { - $acl = $this->getMockBuilder(Acl::class) - ->getMock(); - - $role = $this->getMockBuilder(GenericRole::class) - ->setConstructorArgs(['test.role']) - ->setMethods(['assert']) - ->getMock(); - - $resource = $this->getMockBuilder(GenericResource::class) - ->setConstructorArgs(['test.resource']) - ->setMethods(['assert']) - ->getMock(); - - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); - $assertions[] = $this->getMockForAbstractClass(AssertionInterface::class); + $acl = $this->createMock(Acl::class); + $role = $this->createMock(GenericRole::class); + $resource = $this->createMock(GenericResource::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); + $assertions[] = $this->createMock(AssertionInterface::class); $assertions[0]->expects($this->once()) ->method('assert') @@ -339,18 +296,9 @@ public function testDoesNotAssertWithModeAtLeastOne(): void public function testAssertThrowsAnExceptionWhenNoAssertionIsAggregated(): void { - $acl = $this->getMockBuilder(Acl::class) - ->getMock(); - - $role = $this->getMockBuilder(GenericRole::class) - ->setConstructorArgs(['test.role']) - ->setMethods(['assert']) - ->getMock(); - - $resource = $this->getMockBuilder(GenericResource::class) - ->setConstructorArgs(['test.resource']) - ->setMethods(['assert']) - ->getMock(); + $acl = $this->createMock(Acl::class); + $role = $this->createMock(GenericRole::class); + $resource = $this->createMock(GenericResource::class); $this->expectException(RuntimeException::class); diff --git a/test/Assertion/AssertionManagerTest.php b/test/Assertion/AssertionManagerTest.php index 092e1dc..1ac42ec 100644 --- a/test/Assertion/AssertionManagerTest.php +++ b/test/Assertion/AssertionManagerTest.php @@ -21,7 +21,7 @@ protected function setUp(): void public function testValidatePlugin(): void { - $assertion = $this->getMockForAbstractClass(AssertionInterface::class); + $assertion = $this->createMock(AssertionInterface::class); $this->manager->validate($assertion); $this->expectException(InvalidServiceException::class); diff --git a/test/Assertion/ExpressionAssertionTest.php b/test/Assertion/ExpressionAssertionTest.php index 21db46f..a350fb0 100644 --- a/test/Assertion/ExpressionAssertionTest.php +++ b/test/Assertion/ExpressionAssertionTest.php @@ -12,6 +12,7 @@ use Laminas\Permissions\Acl\Role\RoleInterface; use LaminasTest\Permissions\Acl\TestAsset\ExpressionUseCase\BlogPost; use LaminasTest\Permissions\Acl\TestAsset\ExpressionUseCase\User; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use function serialize; @@ -73,9 +74,9 @@ public function testExceptionIsRaisedInCaseOfInvalidExpressionOperator(): void } /** - * @dataProvider getExpressions * @param array<string, mixed> $expression */ + #[DataProvider('getExpressions')] public function testExpressionsEvaluation( array $expression, RoleInterface $role, @@ -99,7 +100,7 @@ public function testExpressionsEvaluation( * assert: bool * }> */ - public function getExpressions(): array + public static function getExpressions(): array { $author3 = new User([ 'username' => 'author3',