diff --git a/composer.json b/composer.json index 7ccd420c..8dd22838 100644 --- a/composer.json +++ b/composer.json @@ -20,8 +20,8 @@ "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "^9.5", - "infection/infection": "^0.26", + "phpunit/phpunit": "^10.5", + "infection/infection": "^0.27", "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", @@ -29,7 +29,7 @@ "marcocesarato/php-conventional-changelog": "^1.12", "vimeo/psalm": "^5.0", "mikey179/vfsstream": "^1.6.10", - "rector/rector": "~0.17.0" + "rector/rector": "^1.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index e410c323..5fee4489 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": "5b0a5c1021fd69730e81eb8d561ed9fa", + "content-hash": "d8ad2085ad373dd8ded5f55b062aab34", "packages": [ { "name": "psr/simple-cache", @@ -318,16 +318,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -369,7 +369,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -385,20 +385,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -448,9 +448,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -466,7 +466,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -571,94 +571,18 @@ }, "time": "2019-12-04T15:06:13+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" - }, - "time": "2023-02-02T22:02:53+00:00" - }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -690,157 +614,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" - }, - "time": "2023-06-03T09:27:29+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^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" - }, - "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/1.5.0" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "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:15:36+00:00" - }, - { - "name": "doctrine/lexer", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.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%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -945,16 +721,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": { @@ -994,7 +770,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": [ { @@ -1002,58 +778,52 @@ "type": "github" } ], - "time": "2022-12-16T22:01:02+00:00" + "time": "2022-12-24T12:35:10+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.22.0", + "version": "v3.49.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" + "reference": "8742f7aa6f72a399688b65e4f58992c2d4681fc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8742f7aa6f72a399688b65e4f58992c2d4681fc2", + "reference": "8742f7aa6f72a399688b65e4f58992c2d4681fc2", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^2", - "doctrine/lexer": "^2 || ^3", + "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -1091,7 +861,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.22.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.49.0" }, "funding": [ { @@ -1099,7 +869,7 @@ "type": "github" } ], - "time": "2023-07-16T23:08:06+00:00" + "time": "2024-02-02T00:41:40+00:00" }, { "name": "infection/abstract-testframework-adapter", @@ -1280,16 +1050,16 @@ }, { "name": "infection/infection", - "version": "0.26.19", + "version": "0.27.9", "source": { "type": "git", "url": "https://github.com/infection/infection.git", - "reference": "bd7351c88f3a797ea8977e68fe6a3f4d4c5f457f" + "reference": "61e6d0645b89104fbd660218d3408219ad7176b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/infection/infection/zipball/bd7351c88f3a797ea8977e68fe6a3f4d4c5f457f", - "reference": "bd7351c88f3a797ea8977e68fe6a3f4d4c5f457f", + "url": "https://api.github.com/repos/infection/infection/zipball/61e6d0645b89104fbd660218d3408219ad7176b5", + "reference": "61e6d0645b89104fbd660218d3408219ad7176b5", "shasum": "" }, "require": { @@ -1300,42 +1070,46 @@ "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", - "fidry/cpu-core-counter": "^0.4.0", + "fidry/cpu-core-counter": "^0.4.0 || ^0.5.0 || ^1.0", "infection/abstract-testframework-adapter": "^0.5.0", "infection/extension-installer": "^0.1.0", "infection/include-interceptor": "^0.2.5", "justinrainbow/json-schema": "^5.2.10", "nikic/php-parser": "^4.15.1", "ondram/ci-detector": "^4.1.0", - "php": "^8.0", + "php": "^8.1", "sanmai/later": "^0.1.1", "sanmai/pipeline": "^5.1 || ^6", "sebastian/diff": "^3.0.2 || ^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/process": "^5.4 || ^6.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", "thecodingmachine/safe": "^2.1.2", "webmozart/assert": "^1.11" }, "conflict": { + "antecedent/patchwork": "<2.1.25", "dg/bypass-finals": "<1.4.1", "phpunit/php-code-coverage": ">9,<9.1.4 || >9.2.17,<9.2.21" }, "require-dev": { - "brianium/paratest": "^6.3", + "brianium/paratest": "^6.11", "ext-simplexml": "*", "fidry/makefile": "^0.2.0", "helmich/phpunit-json-assert": "^3.0", + "phpspec/prophecy": "^1.15", "phpspec/prophecy-phpunit": "^2.0", "phpstan/extension-installer": "^1.1.0", - "phpstan/phpstan": "^1.3.0", + "phpstan/phpstan": "^1.10.15", "phpstan/phpstan-phpunit": "^1.0.0", "phpstan/phpstan-strict-rules": "^1.1.0", "phpstan/phpstan-webmozart-assert": "^1.0.2", - "phpunit/phpunit": "^9.5.5", - "symfony/phpunit-bridge": "^5.4 || ^6.0", - "symfony/yaml": "^5.4 || ^6.0", + "phpunit/phpunit": "^9.6", + "rector/rector": "^0.16.0", + "sidz/phpstan-rules": "^0.4.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "thecodingmachine/phpstan-safe-rule": "^1.2.0" }, "bin": [ @@ -1392,7 +1166,7 @@ ], "support": { "issues": "https://github.com/infection/infection/issues", - "source": "https://github.com/infection/infection/tree/0.26.19" + "source": "https://github.com/infection/infection/tree/0.27.9" }, "funding": [ { @@ -1404,20 +1178,20 @@ "type": "open_collective" } ], - "time": "2023-02-05T21:47:26+00:00" + "time": "2023-12-07T17:42:43+00:00" }, { "name": "justinrainbow/json-schema", - "version": "5.2.12", + "version": "v5.2.13", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, "require": { @@ -1472,9 +1246,9 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" }, - "time": "2022-04-13T08:02:27+00:00" + "time": "2023-09-26T02:20:38+00:00" }, { "name": "marcocesarato/php-conventional-changelog", @@ -1665,16 +1439,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.2.0", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", "shasum": "" }, "require": { @@ -1685,7 +1459,7 @@ "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", "squizlabs/php_codesniffer": "~3.5" }, "type": "library", @@ -1710,22 +1484,22 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" }, - "time": "2023-04-09T17:37:40+00:00" + "time": "2024-01-31T06:18:54+00:00" }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -1766,9 +1540,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "ondram/ci-detector", @@ -2071,16 +1845,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -2123,22 +1897,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2023-05-30T18:13:47+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.1", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", "shasum": "" }, "require": { @@ -2170,22 +1944,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" }, - "time": "2023-08-03T16:32:59+00:00" + "time": "2024-01-04T17:06:16+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.27", + "version": "1.10.57", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "a9f44dcea06f59d1363b100bb29f297b311fa640" + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a9f44dcea06f59d1363b100bb29f297b311fa640", - "reference": "a9f44dcea06f59d1363b100bb29f297b311fa640", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1627b1d03446904aaa77593f370c5201d2ecc34e", + "reference": "1627b1d03446904aaa77593f370c5201d2ecc34e", "shasum": "" }, "require": { @@ -2234,20 +2008,20 @@ "type": "tidelift" } ], - "time": "2023-08-05T09:57:55+00:00" + "time": "2024-01-24T11:51:34+00:00" }, { "name": "phpstan/phpstan-phpunit", - "version": "1.3.13", + "version": "1.3.15", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "d8bdab0218c5eb0964338d24a8511b65e9c94fa5" + "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/d8bdab0218c5eb0964338d24a8511b65e9c94fa5", - "reference": "d8bdab0218c5eb0964338d24a8511b65e9c94fa5", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/70ecacc64fe8090d8d2a33db5a51fe8e88acd93a", + "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a", "shasum": "" }, "require": { @@ -2260,7 +2034,7 @@ "require-dev": { "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-strict-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.5.1", "phpunit/phpunit": "^9.5" }, "type": "phpstan-extension", @@ -2284,27 +2058,27 @@ "description": "PHPUnit extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.13" + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.15" }, - "time": "2023-05-26T11:05:59+00:00" + "time": "2023-10-09T18:58:39+00:00" }, { "name": "phpstan/phpstan-strict-rules", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6" + "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b21c03d4f6f3a446e4311155f4be9d65048218e6", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/7a50e9662ee9f3942e4aaaf3d603653f60282542", + "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.34" }, "require-dev": { "nikic/php-parser": "^4.13.0", @@ -2333,41 +2107,41 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.1" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.2" }, - "time": "2023-03-29T14:47:40+00:00" + "time": "2023-10-30T14:35:06+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.27", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1", - "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "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", + "nikic/php-parser": "^4.18 || ^5.0", + "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", @@ -2376,7 +2150,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -2405,7 +2179,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.27" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -2413,32 +2187,32 @@ "type": "github" } ], - "time": "2023-07-26T13:44:30+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "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/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "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": { @@ -2465,7 +2239,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.1.0" }, "funding": [ { @@ -2473,28 +2248,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+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": "*" @@ -2502,7 +2277,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -2528,7 +2303,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": [ { @@ -2536,32 +2311,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.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "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/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "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": { @@ -2587,7 +2362,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -2595,32 +2371,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+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": { @@ -2646,7 +2422,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": [ { @@ -2654,24 +2430,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.10", + "version": "10.5.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" + "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", - "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c", + "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -2681,27 +2456,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.5", + "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.1", + "sebastian/global-state": "^6.0.1", + "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" @@ -2709,7 +2483,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -2741,7 +2515,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.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.10" }, "funding": [ { @@ -2757,56 +2531,7 @@ "type": "tidelift" } ], - "time": "2023-07-10T04:04:23+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" + "time": "2024-02-04T09:07:51+00:00" }, { "name": "psr/container", @@ -2963,21 +2688,21 @@ }, { "name": "rector/rector", - "version": "0.17.13", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132" + "reference": "362258a1f6369fc88d02d469a5478d220f78b0e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/e2003ba7c5bda06d7bb419cf4be8dae5f8672132", - "reference": "e2003ba7c5bda06d7bb419cf4be8dae5f8672132", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/362258a1f6369fc88d02d469a5478d220f78b0e6", + "reference": "362258a1f6369fc88d02d469a5478d220f78b0e6", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.26" + "phpstan/phpstan": "^1.10.56" }, "conflict": { "rector/rector-doctrine": "*", @@ -3007,7 +2732,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.17.13" + "source": "https://github.com/rectorphp/rector/tree/1.0.0" }, "funding": [ { @@ -3015,35 +2740,41 @@ "type": "github" } ], - "time": "2023-08-14T16:33:29+00:00" + "time": "2024-02-06T13:38:07+00:00" }, { "name": "sanmai/later", - "version": "0.1.2", + "version": "0.1.4", "source": { "type": "git", "url": "https://github.com/sanmai/later.git", - "reference": "9b659fecef2030193fd02402955bc39629d5606f" + "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/later/zipball/9b659fecef2030193fd02402955bc39629d5606f", - "reference": "9b659fecef2030193fd02402955bc39629d5606f", + "url": "https://api.github.com/repos/sanmai/later/zipball/e24c4304a4b1349c2a83151a692cec0c10579f60", + "reference": "e24c4304a4b1349c2a83151a692cec0c10579f60", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.13", - "infection/infection": ">=0.10.5", + "ergebnis/composer-normalize": "^2.8", + "friendsofphp/php-cs-fixer": "^3.35.1", + "infection/infection": ">=0.27.6", "phan/phan": ">=2", "php-coveralls/php-coveralls": "^2.0", - "phpstan/phpstan": ">=0.10", - "phpunit/phpunit": ">=7.4", + "phpstan/phpstan": ">=1.4.5", + "phpunit/phpunit": ">=9.5 <10", "vimeo/psalm": ">=2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, "autoload": { "files": [ "src/functions.php" @@ -3065,7 +2796,7 @@ "description": "Later: deferred wrapper object", "support": { "issues": "https://github.com/sanmai/later/issues", - "source": "https://github.com/sanmai/later/tree/0.1.2" + "source": "https://github.com/sanmai/later/tree/0.1.4" }, "funding": [ { @@ -3073,20 +2804,20 @@ "type": "github" } ], - "time": "2021-01-02T10:26:44+00:00" + "time": "2023-10-24T00:25:28+00:00" }, { "name": "sanmai/pipeline", - "version": "v6.8.1", + "version": "v6.9", "source": { "type": "git", "url": "https://github.com/sanmai/pipeline.git", - "reference": "2e88e466dd49f20c10a15330b3953d4d49c326e3" + "reference": "c48f45c22c3ce4140d071f7658fb151df1cc08ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/pipeline/zipball/2e88e466dd49f20c10a15330b3953d4d49c326e3", - "reference": "2e88e466dd49f20c10a15330b3953d4d49c326e3", + "url": "https://api.github.com/repos/sanmai/pipeline/zipball/c48f45c22c3ce4140d071f7658fb151df1cc08ea", + "reference": "c48f45c22c3ce4140d071f7658fb151df1cc08ea", "shasum": "" }, "require": { @@ -3130,7 +2861,7 @@ "description": "General-purpose collections pipeline", "support": { "issues": "https://github.com/sanmai/pipeline/issues", - "source": "https://github.com/sanmai/pipeline/tree/v6.8.1" + "source": "https://github.com/sanmai/pipeline/tree/v6.9" }, "funding": [ { @@ -3138,32 +2869,32 @@ "type": "github" } ], - "time": "2023-06-15T09:14:47+00:00" + "time": "2023-10-08T11:56:54+00:00" }, { "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": { @@ -3186,7 +2917,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": [ { @@ -3194,32 +2925,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": { @@ -3242,7 +2973,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": [ { @@ -3250,32 +2981,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": { @@ -3297,7 +3028,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": [ { @@ -3305,34 +3036,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.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "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.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3371,7 +3104,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -3379,33 +3113,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "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.2-dev" } }, "autoload": { @@ -3428,7 +3162,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -3436,33 +3171,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "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.1-dev" } }, "autoload": { @@ -3494,7 +3229,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.1.0" }, "funding": [ { @@ -3502,27 +3238,27 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2023-12-22T10:55:06+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": "*" @@ -3530,7 +3266,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -3549,7 +3285,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", @@ -3557,7 +3293,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": [ { @@ -3565,34 +3302,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.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "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.1-dev" } }, "autoload": { @@ -3634,7 +3371,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -3642,38 +3380,35 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.6", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bde739e7565280bda77be70044ac1047bc007e34" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", - "reference": "bde739e7565280bda77be70044ac1047bc007e34", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "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": { @@ -3698,7 +3433,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -3706,33 +3442,33 @@ "type": "github" } ], - "time": "2023-08-02T09:26:13+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "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/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "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": { @@ -3755,7 +3491,8 @@ "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" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -3763,34 +3500,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-21T08:38:20+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": { @@ -3812,7 +3549,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": [ { @@ -3820,32 +3557,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": { @@ -3867,7 +3604,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": [ { @@ -3875,32 +3612,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": { @@ -3930,62 +3667,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" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "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" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -3993,32 +3675,32 @@ "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": { @@ -4041,7 +3723,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": [ { @@ -4049,29 +3731,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": { @@ -4094,7 +3776,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": [ { @@ -4102,20 +3784,20 @@ "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { "name": "spatie/array-to-xml", - "version": "3.2.0", + "version": "3.2.3", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7" + "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f9ab39c808500c347d5a8b6b13310bd5221e39e7", - "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/c95fd4db94ec199f798d4b5b4a81757bd20d88ab", + "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab", "shasum": "" }, "require": { @@ -4153,7 +3835,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.2.0" + "source": "https://github.com/spatie/array-to-xml/tree/3.2.3" }, "funding": [ { @@ -4165,27 +3847,28 @@ "type": "github" } ], - "time": "2023-07-19T18:30:26+00:00" + "time": "2024-02-07T10:39:02+00:00" }, { "name": "symfony/console", - "version": "v6.0.19", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c3ebc83d031b71c39da318ca8b7a07ecc67507ed" + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c3ebc83d031b71c39da318ca8b7a07ecc67507ed", - "reference": "c3ebc83d031b71c39da318ca8b7a07ecc67507ed", + "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", + "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { "symfony/dependency-injection": "<5.4", @@ -4199,18 +3882,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4239,12 +3920,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.0.19" + "source": "https://github.com/symfony/console/tree/v6.4.3" }, "funding": [ { @@ -4260,29 +3941,29 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.0.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "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/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4311,7 +3992,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.4.0" }, "funding": [ { @@ -4327,28 +4008,29 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.0.19", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "2eaf8e63bc5b8cefabd4a800157f0d0c094f677a" + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2eaf8e63bc5b8cefabd4a800157f0d0c094f677a", - "reference": "2eaf8e63bc5b8cefabd4a800157f0d0c094f677a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef", + "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/event-dispatcher-contracts": "^2|^3" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -4356,17 +4038,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4394,7 +4072,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.19" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3" }, "funding": [ { @@ -4410,33 +4088,30 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.0.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7bc61cc2db649b4637d331240c5346dcc7708051" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7bc61cc2db649b4637d331240c5346dcc7708051", - "reference": "7bc61cc2db649b4637d331240c5346dcc7708051", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4473,7 +4148,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -4489,24 +4164,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:55:41+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/filesystem", - "version": "v6.0.19", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3d49eec03fda1f0fc19b7349fbbe55ebc1004214" + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3d49eec03fda1f0fc19b7349fbbe55ebc1004214", - "reference": "3d49eec03fda1f0fc19b7349fbbe55ebc1004214", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", "shasum": "" }, "require": { - "php": ">=8.0.2", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, @@ -4536,7 +4211,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.0.19" + "source": "https://github.com/symfony/filesystem/tree/v6.4.3" }, "funding": [ { @@ -4552,24 +4227,27 @@ "type": "tidelift" } ], - "time": "2023-01-20T17:44:14+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/finder", - "version": "v6.0.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "5cc9cac6586fc0c28cd173780ca696e419fefa11" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/5cc9cac6586fc0c28cd173780ca696e419fefa11", - "reference": "5cc9cac6586fc0c28cd173780ca696e419fefa11", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -4597,7 +4275,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.4.0" }, "funding": [ { @@ -4613,25 +4291,25 @@ "type": "tidelift" } ], - "time": "2023-01-20T17:44:14+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.0.19", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "6a180d1c45e0d9797470ca9eb46215692de00fa3" + "reference": "22301f0e7fdeaacc14318928612dee79be99860e" }, "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/22301f0e7fdeaacc14318928612dee79be99860e", + "reference": "22301f0e7fdeaacc14318928612dee79be99860e", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -4664,7 +4342,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.0.19" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.0" }, "funding": [ { @@ -4680,20 +4358,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2023-08-08T10:16:24+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -4707,9 +4385,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4746,7 +4421,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -4762,20 +4437,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -4786,9 +4461,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4827,7 +4499,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -4843,20 +4515,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -4867,9 +4539,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4911,7 +4580,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -4927,20 +4596,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -4954,9 +4623,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4994,7 +4660,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -5010,20 +4676,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -5031,9 +4697,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5077,7 +4740,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -5093,20 +4756,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { @@ -5114,9 +4777,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -5156,7 +4816,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -5172,24 +4832,24 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v6.0.19", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "2114fd60f26a296cc403a7939ab91478475a33d4" + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/2114fd60f26a296cc403a7939ab91478475a33d4", - "reference": "2114fd60f26a296cc403a7939ab91478475a33d4", + "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3", + "reference": "31642b0818bfcff85930344ef93193f8c607e0a3", "shasum": "" }, "require": { - "php": ">=8.0.2" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -5217,7 +4877,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.4.3" }, "funding": [ { @@ -5233,36 +4893,33 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.0.2", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66", - "reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { - "php": ">=8.0.2", - "psr/container": "^2.0" + "php": ">=8.1", + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -5272,7 +4929,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5299,7 +4959,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.0.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -5315,25 +4975,25 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:58+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/stopwatch", - "version": "v6.0.19", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "011e781839dd1d2eb8119f65ac516a530f60226d" + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/011e781839dd1d2eb8119f65ac516a530f60226d", - "reference": "011e781839dd1d2eb8119f65ac516a530f60226d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/416596166641f1f728b0a64f5b9dd07cceb410c1", + "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1", "shasum": "" }, "require": { - "php": ">=8.0.2", - "symfony/service-contracts": "^1|^2|^3" + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -5361,7 +5021,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.0.19" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.3" }, "funding": [ { @@ -5377,37 +5037,38 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2024-01-23T14:35:58+00:00" }, { "name": "symfony/string", - "version": "v6.0.19", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a" + "reference": "7a14736fb179876575464e4658fce0c304e8c15b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d9e72497367c23e08bf94176d2be45b00a9d232a", - "reference": "d9e72497367c23e08bf94176d2be45b00a9d232a", + "url": "https://api.github.com/repos/symfony/string/zipball/7a14736fb179876575464e4658fce0c304e8c15b", + "reference": "7a14736fb179876575464e4658fce0c304e8c15b", "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", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -5446,7 +5107,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.0.19" + "source": "https://github.com/symfony/string/tree/v6.4.3" }, "funding": [ { @@ -5462,7 +5123,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:36:10+00:00" + "time": "2024-01-25T09:26:29+00:00" }, { "name": "thecodingmachine/safe", @@ -5605,16 +5266,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -5643,7 +5304,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -5651,20 +5312,20 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" }, { "name": "vimeo/psalm", - "version": "5.14.1", + "version": "5.15.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b9d355e0829c397b9b3b47d0c0ed042a8a70284d", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { @@ -5692,6 +5353,9 @@ "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, @@ -5755,9 +5419,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.14.1" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, - "time": "2023-08-01T05:16:55+00:00" + "time": "2023-08-20T23:07:30+00:00" }, { "name": "webmozart/assert", diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 735fe68e..083519e9 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,8 +1,7 @@ + xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" + cacheResultFile="var/cache/phpunit/.phpunit.result.cache"> @@ -19,10 +18,9 @@ tests/Integration - - + - src/ + src/ - + diff --git a/qa/Psalm/Plugin/ArgumentsMapperPsalmPlugin.php b/qa/Psalm/Plugin/ArgumentsMapperPsalmPlugin.php index fc21e816..bc97ab7b 100644 --- a/qa/Psalm/Plugin/ArgumentsMapperPsalmPlugin.php +++ b/qa/Psalm/Plugin/ArgumentsMapperPsalmPlugin.php @@ -58,13 +58,15 @@ public static function getMethodReturnType(MethodReturnTypeProviderEvent $event) return null; } - if (empty($type->params ?? [])) { + $typeParams = $type->params ?? []; + + if ($typeParams === []) { return null; } $params = []; - foreach ($type->params as $param) { + foreach ($typeParams as $param) { $params[$param->name] = $param->type ?? new Union([new TMixed()]); } diff --git a/src/MapperBuilder.php b/src/MapperBuilder.php index 60d48881..ef343abb 100644 --- a/src/MapperBuilder.php +++ b/src/MapperBuilder.php @@ -176,8 +176,8 @@ public function infer(string $name, callable $callback): self * case CASE_D = 'BAR_VALUE_2'; * * /** - * * @param 'FOO'|'BAR' $type - * * @param int<1, 2> $number + * * \@param 'FOO'|'BAR' $type + * * \@param int<1, 2> $number * * / * public static function fromMatrix(string $type, int $number): self * { diff --git a/src/Utility/Reflection/DocParser.php b/src/Utility/Reflection/DocParser.php index bab41b46..dbaf50d9 100644 --- a/src/Utility/Reflection/DocParser.php +++ b/src/Utility/Reflection/DocParser.php @@ -219,7 +219,7 @@ private static function sanitizeDocComment(string|false $doc): ?string $doc = preg_replace('#^\s*/\*\*([^/]+)\*/\s*$#', '$1', $doc); - return preg_replace('/^\s*\*\s*(\S*)/m', '$1', $doc); // @phpstan-ignore-line + return preg_replace('/^\s*\*\s*(\S*)/m', '$1', (string)$doc); } /** diff --git a/tests/Functional/Definition/Repository/Cache/Compiler/TypeCompilerTest.php b/tests/Functional/Definition/Repository/Cache/Compiler/TypeCompilerTest.php index 137b6841..19a3d762 100644 --- a/tests/Functional/Definition/Repository/Cache/Compiler/TypeCompilerTest.php +++ b/tests/Functional/Definition/Repository/Cache/Compiler/TypeCompilerTest.php @@ -44,6 +44,7 @@ use DateTime; use DateTimeInterface; use Error; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -58,9 +59,7 @@ protected function setUp(): void $this->typeCompiler = new TypeCompiler(); } - /** - * @dataProvider type_is_compiled_correctly_data_provider - */ + #[DataProvider('type_is_compiled_correctly_data_provider')] public function test_type_is_compiled_correctly(Type $type): void { $code = $this->typeCompiler->compile($type); @@ -75,7 +74,7 @@ public function test_type_is_compiled_correctly(Type $type): void self::assertSame($type->toString(), $compiledType->toString()); } - public function type_is_compiled_correctly_data_provider(): iterable + public static function type_is_compiled_correctly_data_provider(): iterable { yield [NullType::get()]; yield [BooleanValueType::true()]; diff --git a/tests/Functional/Type/Parser/Lexer/GenericLexerTest.php b/tests/Functional/Type/Parser/Lexer/GenericLexerTest.php index 80ed0580..838b844b 100644 --- a/tests/Functional/Type/Parser/Lexer/GenericLexerTest.php +++ b/tests/Functional/Type/Parser/Lexer/GenericLexerTest.php @@ -24,6 +24,7 @@ use CuyZ\Valinor\Type\ClassType; use CuyZ\Valinor\Type\Types\InterfaceType; use DateTimeInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -39,10 +40,9 @@ protected function setUp(): void } /** - * @dataProvider parse_valid_types_returns_valid_result_data_provider - * * @param class-string $type */ + #[DataProvider('parse_valid_types_returns_valid_result_data_provider')] public function test_parse_valid_types_returns_valid_result(string $raw, string $transformed, string $type): void { $result = $this->parser->parse($raw); @@ -51,55 +51,60 @@ public function test_parse_valid_types_returns_valid_result(string $raw, string self::assertInstanceOf($type, $result); } - public function parse_valid_types_returns_valid_result_data_provider(): array + public static function parse_valid_types_returns_valid_result_data_provider(): iterable { - return [ - 'Class name with no template' => [ - 'raw' => stdClass::class, - 'transformed' => stdClass::class, - 'type' => ClassType::class, - ], - 'Abstract class name with no template' => [ - 'raw' => AbstractObject::class, - 'transformed' => AbstractObject::class, - 'type' => ClassType::class, - ], - 'Interface name with no template' => [ - 'raw' => DateTimeInterface::class, - 'transformed' => DateTimeInterface::class, - 'type' => InterfaceType::class, - ], - 'Class name with generic with one template' => [ - 'raw' => $this->classWithOneTemplate() . '', - 'transformed' => $this->classWithOneTemplate() . '', - 'type' => ClassType::class, - ], - 'Class name with generic with three templates' => [ - 'raw' => $this->classWithThreeTemplates() . '', - 'transformed' => $this->classWithThreeTemplates() . '', - 'type' => ClassType::class, - ], - 'Class name with generic with template of array-key with string' => [ - 'raw' => $this->classWithTemplateOfArrayKey() . '', - 'transformed' => $this->classWithTemplateOfArrayKey() . '', - 'type' => ClassType::class, - ], - 'Class name with generic with template of array-key with integer' => [ - 'raw' => $this->classWithTemplateOfArrayKey() . '', - 'transformed' => $this->classWithTemplateOfArrayKey() . '', - 'type' => ClassType::class, - ], - 'Simple array of class name with no template' => [ - 'raw' => stdClass::class . '[]', - 'transformed' => stdClass::class . '[]', - 'type' => CompositeTraversableType::class, - ], + yield 'Class name with no template' => [ + 'raw' => stdClass::class, + 'transformed' => stdClass::class, + 'type' => ClassType::class, + ]; + + yield 'Abstract class name with no template' => [ + 'raw' => AbstractObject::class, + 'transformed' => AbstractObject::class, + 'type' => ClassType::class, + ]; + + yield 'Interface name with no template' => [ + 'raw' => DateTimeInterface::class, + 'transformed' => DateTimeInterface::class, + 'type' => InterfaceType::class, + ]; + + yield 'Class name with generic with one template' => [ + 'raw' => SomeClassWithOneTemplate::class . '', + 'transformed' => SomeClassWithOneTemplate::class . '', + 'type' => ClassType::class, + ]; + + yield 'Class name with generic with three templates' => [ + 'raw' => SomeClassWithThreeTemplates::class . '', + 'transformed' => SomeClassWithThreeTemplates::class . '', + 'type' => ClassType::class, + ]; + + yield 'Class name with generic with template of array-key with string' => [ + 'raw' => SomeClassWithTemplateOfArrayKey::class . '', + 'transformed' => SomeClassWithTemplateOfArrayKey::class . '', + 'type' => ClassType::class, + ]; + + yield 'Class name with generic with template of array-key with integer' => [ + 'raw' => SomeClassWithTemplateOfArrayKey::class . '', + 'transformed' => SomeClassWithTemplateOfArrayKey::class . '', + 'type' => ClassType::class, + ]; + + yield 'Simple array of class name with no template' => [ + 'raw' => stdClass::class . '[]', + 'transformed' => stdClass::class . '[]', + 'type' => CompositeTraversableType::class, ]; } public function test_missing_generics_throws_exception(): void { - $genericClassName = $this->classWithThreeTemplates(); + $genericClassName = SomeClassWithThreeTemplates::class; $this->expectException(MissingGenerics::class); $this->expectExceptionCode(1618054357); @@ -121,7 +126,7 @@ public function test_missing_generic_closing_bracket_throws_exception(): void public function test_missing_comma_in_generics_throws_exception(): void { - $className = $this->classWithThreeTemplates(); + $className = SomeClassWithThreeTemplates::class; $this->expectException(GenericCommaMissing::class); $this->expectExceptionCode(1615829484); @@ -132,7 +137,7 @@ public function test_missing_comma_in_generics_throws_exception(): void public function test_assigned_generic_not_found_throws_exception(): void { - $className = $this->classWithThreeTemplates(); + $className = SomeClassWithThreeTemplates::class; $this->expectException(AssignedGenericNotFound::class); $this->expectExceptionCode(1604656730); @@ -143,7 +148,7 @@ public function test_assigned_generic_not_found_throws_exception(): void public function test_generic_with_no_template_throws_exception(): void { - $className = $this->classWithOneTemplate(); + $className = SomeClassWithOneTemplate::class; $this->expectException(CannotAssignGeneric::class); $this->expectExceptionCode(1604660485); @@ -249,42 +254,24 @@ public function test_extend_tag_type_error_throws_exception(): void $this->parser->parse($className); } +} - private function classWithOneTemplate(): string - { - $object = - /** - * @template TemplateA - */ - new class () {}; - - return $object::class; - } - - private function classWithThreeTemplates(): string - { - $object = - /** - * @template TemplateA - * @template TemplateB - * @template TemplateC - */ - new class () {}; - - return $object::class; - } +/** + * @template TemplateA + */ +final class SomeClassWithOneTemplate {} - private function classWithTemplateOfArrayKey(): string - { - $object = - /** - * @template TemplateA of array-key - */ - new class () {}; +/** + * @template TemplateA + * @template TemplateB + * @template TemplateC + */ +final class SomeClassWithThreeTemplates {} - return $object::class; - } -} +/** + * @template TemplateA of array-key + */ +final class SomeClassWithTemplateOfArrayKey {} /** * @template T diff --git a/tests/Functional/Type/Parser/Lexer/NativeLexerTest.php b/tests/Functional/Type/Parser/Lexer/NativeLexerTest.php index 51ec505c..9f9e3850 100644 --- a/tests/Functional/Type/Parser/Lexer/NativeLexerTest.php +++ b/tests/Functional/Type/Parser/Lexer/NativeLexerTest.php @@ -77,6 +77,7 @@ use CuyZ\Valinor\Type\Types\UnionType; use DateTime; use DateTimeInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -94,10 +95,9 @@ protected function setUp(): void } /** - * @dataProvider parse_valid_types_returns_valid_result_data_provider - * * @param class-string $type */ + #[DataProvider('parse_valid_types_returns_valid_result_data_provider')] public function test_parse_valid_types_returns_valid_result(string $raw, string $transformed, string $type): void { $result = $this->parser->parse($raw); @@ -106,7 +106,7 @@ public function test_parse_valid_types_returns_valid_result(string $raw, string self::assertInstanceOf($type, $result); } - public function parse_valid_types_returns_valid_result_data_provider(): iterable + public static function parse_valid_types_returns_valid_result_data_provider(): iterable { yield 'Null type' => [ 'raw' => 'null', diff --git a/tests/Integration/Cache/CacheInjectionTest.php b/tests/Integration/Cache/CacheInjectionTest.php index 80342de7..14f30bd3 100644 --- a/tests/Integration/Cache/CacheInjectionTest.php +++ b/tests/Integration/Cache/CacheInjectionTest.php @@ -8,7 +8,7 @@ use CuyZ\Valinor\Cache\FileWatchingCache; use CuyZ\Valinor\Mapper\TreeMapper; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use org\bovigo\vfs\vfsStream; use org\bovigo\vfs\vfsStreamDirectory; @@ -19,7 +19,7 @@ use function file_get_contents; use function str_ends_with; -final class CacheInjectionTest extends IntegrationTest +final class CacheInjectionTest extends IntegrationTestCase { public function test_cache_entries_are_written_once_during_mapping(): void { diff --git a/tests/Integration/Cache/CacheWarmupTest.php b/tests/Integration/Cache/CacheWarmupTest.php index d5ac4ce3..1d0377b6 100644 --- a/tests/Integration/Cache/CacheWarmupTest.php +++ b/tests/Integration/Cache/CacheWarmupTest.php @@ -8,10 +8,10 @@ use CuyZ\Valinor\MapperBuilder; use CuyZ\Valinor\Tests\Fake\Cache\FakeCache; use CuyZ\Valinor\Tests\Fake\Cache\FakeCacheWithWarmup; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use DateTimeInterface; -final class CacheWarmupTest extends IntegrationTest +final class CacheWarmupTest extends IntegrationTestCase { private FakeCache $cache; diff --git a/tests/Integration/IntegrationTest.php b/tests/Integration/IntegrationTestCase.php similarity index 95% rename from tests/Integration/IntegrationTest.php rename to tests/Integration/IntegrationTestCase.php index 59b42d05..ce8ec0bc 100644 --- a/tests/Integration/IntegrationTest.php +++ b/tests/Integration/IntegrationTestCase.php @@ -11,7 +11,7 @@ use function implode; use function iterator_to_array; -abstract class IntegrationTest extends TestCase +abstract class IntegrationTestCase extends TestCase { protected function mappingFail(MappingError $error): never { diff --git a/tests/Integration/Mapping/AnonymousClassMappingTest.php b/tests/Integration/Mapping/AnonymousClassMappingTest.php index 229fdf57..b4d8cafe 100644 --- a/tests/Integration/Mapping/AnonymousClassMappingTest.php +++ b/tests/Integration/Mapping/AnonymousClassMappingTest.php @@ -3,9 +3,9 @@ namespace CuyZ\Valinor\Tests\Integration\Mapping; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class AnonymousClassMappingTest extends IntegrationTest +final class AnonymousClassMappingTest extends IntegrationTestCase { public function test_map_to_string_or_anonymous_class_with_string_works_correctly(): void { diff --git a/tests/Integration/Mapping/ClassInheritanceInferringMappingTest.php b/tests/Integration/Mapping/ClassInheritanceInferringMappingTest.php index cfd68a5a..f113b59c 100644 --- a/tests/Integration/Mapping/ClassInheritanceInferringMappingTest.php +++ b/tests/Integration/Mapping/ClassInheritanceInferringMappingTest.php @@ -6,10 +6,10 @@ use CuyZ\Valinor\Mapper\Tree\Exception\CannotInferFinalClass; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use LogicException; -final class ClassInheritanceInferringMappingTest extends IntegrationTest +final class ClassInheritanceInferringMappingTest extends IntegrationTestCase { public function test_infer_abstract_class_works_as_expected(): void { diff --git a/tests/Integration/Mapping/ClassNameCollisionTestCollision.php b/tests/Integration/Mapping/ClassNameCollisionTestCollision.php index 5b7c1754..66f734ec 100644 --- a/tests/Integration/Mapping/ClassNameCollisionTestCollision.php +++ b/tests/Integration/Mapping/ClassNameCollisionTestCollision.php @@ -4,10 +4,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\Error; -final class ClassNameCollisionTestCollision extends IntegrationTest +final class ClassNameCollisionTestCollision extends IntegrationTestCase { public function test_mapping_to_class_with_same_class_name_as_native_class_works_properly(): void { diff --git a/tests/Integration/Mapping/Closure/ArgumentsMappingTest.php b/tests/Integration/Mapping/Closure/ArgumentsMappingTest.php index 9d8373a4..d7b73e12 100644 --- a/tests/Integration/Mapping/Closure/ArgumentsMappingTest.php +++ b/tests/Integration/Mapping/Closure/ArgumentsMappingTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class ArgumentsMappingTest extends IntegrationTest +final class ArgumentsMappingTest extends IntegrationTestCase { public function test_can_map_to_anonymous_function(): void { diff --git a/tests/Integration/Mapping/ConstructorRegistrationMappingTest.php b/tests/Integration/Mapping/ConstructorRegistrationMappingTest.php index 878251a6..80c47ddc 100644 --- a/tests/Integration/Mapping/ConstructorRegistrationMappingTest.php +++ b/tests/Integration/Mapping/ConstructorRegistrationMappingTest.php @@ -14,7 +14,7 @@ use CuyZ\Valinor\Mapper\Object\Exception\ObjectBuildersCollision; use CuyZ\Valinor\MapperBuilder; use CuyZ\Valinor\Tests\Fake\Mapper\Tree\Message\FakeErrorMessage; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObjectWithGeneric; use DateTime; @@ -22,7 +22,7 @@ use DateTimeInterface; use stdClass; -final class ConstructorRegistrationMappingTest extends IntegrationTest +final class ConstructorRegistrationMappingTest extends IntegrationTestCase { public function test_registered_anonymous_function_constructor_is_used(): void { @@ -667,7 +667,6 @@ public function test_registered_constructor_throwing_exception_fails_mapping_wit { try { (new MapperBuilder()) - // @phpstan-ignore-next-line ->registerConstructor(fn (): stdClass => throw new FakeErrorMessage('some error message', 1656076090)) ->mapper() ->map(stdClass::class, []); @@ -774,7 +773,7 @@ final class SomeClassWithStaticConstructorForOtherClass public static function from(string $value): SimpleObject { $object = new SimpleObject(); - $object->value= $value; + $object->value = $value; return $object; } diff --git a/tests/Integration/Mapping/EnumConstructorRegistrationMappingTest.php b/tests/Integration/Mapping/EnumConstructorRegistrationMappingTest.php index 67706143..59f79d59 100644 --- a/tests/Integration/Mapping/EnumConstructorRegistrationMappingTest.php +++ b/tests/Integration/Mapping/EnumConstructorRegistrationMappingTest.php @@ -5,9 +5,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; use CuyZ\Valinor\Tests\Fixture\Enum\BackedStringEnum; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -class EnumConstructorRegistrationMappingTest extends IntegrationTest +class EnumConstructorRegistrationMappingTest extends IntegrationTestCase { public function test_constructor_with_no_argument_is_called_when_no_value_is_given(): void { diff --git a/tests/Integration/Mapping/ExceptionFilteringTest.php b/tests/Integration/Mapping/ExceptionFilteringTest.php index 2b787a49..06185c4c 100644 --- a/tests/Integration/Mapping/ExceptionFilteringTest.php +++ b/tests/Integration/Mapping/ExceptionFilteringTest.php @@ -8,11 +8,11 @@ use CuyZ\Valinor\Mapper\Tree\Message\ErrorMessage; use CuyZ\Valinor\MapperBuilder; use CuyZ\Valinor\Tests\Fake\Mapper\Tree\Message\FakeErrorMessage; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use DomainException; use Throwable; -final class ExceptionFilteringTest extends IntegrationTest +final class ExceptionFilteringTest extends IntegrationTestCase { public function test_userland_exception_not_filtered_is_not_caught(): void { diff --git a/tests/Integration/Mapping/InterfaceInferringMappingTest.php b/tests/Integration/Mapping/InterfaceInferringMappingTest.php index f2f91a0d..9c06453b 100644 --- a/tests/Integration/Mapping/InterfaceInferringMappingTest.php +++ b/tests/Integration/Mapping/InterfaceInferringMappingTest.php @@ -21,13 +21,13 @@ use CuyZ\Valinor\Tests\Fixture\Object\InterfaceWithDifferentNamespaces\InterfaceAInferer; use CuyZ\Valinor\Tests\Fixture\Object\InterfaceWithDifferentNamespaces\InterfaceB; use CuyZ\Valinor\Tests\Fixture\Object\InterfaceWithDifferentNamespaces\InterfaceBInferer; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use DateTime; use DateTimeInterface; use DomainException; use stdClass; -final class InterfaceInferringMappingTest extends IntegrationTest +final class InterfaceInferringMappingTest extends IntegrationTestCase { public function test_override_date_time_interface_inferring_overrides_correctly(): void { diff --git a/tests/Integration/Mapping/MappingErrorTest.php b/tests/Integration/Mapping/MappingErrorTest.php index ae511458..623897be 100644 --- a/tests/Integration/Mapping/MappingErrorTest.php +++ b/tests/Integration/Mapping/MappingErrorTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class MappingErrorTest extends IntegrationTest +final class MappingErrorTest extends IntegrationTestCase { public function test_single_tree_mapper_error_details_are_reported_in_exception_message(): void { diff --git a/tests/Integration/Mapping/Message/MessageFormatterTest.php b/tests/Integration/Mapping/Message/MessageFormatterTest.php index a93e55e2..f9c9341a 100644 --- a/tests/Integration/Mapping/Message/MessageFormatterTest.php +++ b/tests/Integration/Mapping/Message/MessageFormatterTest.php @@ -10,9 +10,9 @@ use CuyZ\Valinor\Mapper\Tree\Message\Formatter\MessageMapFormatter; use CuyZ\Valinor\Mapper\Tree\Message\Formatter\TranslationMessageFormatter; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class MessageFormatterTest extends IntegrationTest +final class MessageFormatterTest extends IntegrationTestCase { public function test_message_is_formatted_correctly(): void { diff --git a/tests/Integration/Mapping/Namespace/NamespacedInterfaceInferringTest.php b/tests/Integration/Mapping/Namespace/NamespacedInterfaceInferringTest.php index d8331942..03e8b15a 100644 --- a/tests/Integration/Mapping/Namespace/NamespacedInterfaceInferringTest.php +++ b/tests/Integration/Mapping/Namespace/NamespacedInterfaceInferringTest.php @@ -4,10 +4,10 @@ namespace CuyZ\Valinor\Tests\Integration\Mapping\Namespace; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use SimpleNamespace\ImplementationOne; -final class NamespacedInterfaceInferringTest extends IntegrationTest +final class NamespacedInterfaceInferringTest extends IntegrationTestCase { // @see https://github.com/CuyZ/Valinor/issues/394#issuecomment-1746722996 public function test_interface_inferred_from_same_namespace_as_file_runs_correctly(): void diff --git a/tests/Integration/Mapping/Namespace/RegisteredStaticConstructorWithReturnTypeInDocBlockTest.php b/tests/Integration/Mapping/Namespace/RegisteredStaticConstructorWithReturnTypeInDocBlockTest.php index b7aba095..ee221dfd 100644 --- a/tests/Integration/Mapping/Namespace/RegisteredStaticConstructorWithReturnTypeInDocBlockTest.php +++ b/tests/Integration/Mapping/Namespace/RegisteredStaticConstructorWithReturnTypeInDocBlockTest.php @@ -5,9 +5,9 @@ namespace CuyZ\Valinor\Tests\Integration\Mapping\Namespace; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class RegisteredStaticConstructorWithReturnTypeInDocBlockTest extends IntegrationTest +final class RegisteredStaticConstructorWithReturnTypeInDocBlockTest extends IntegrationTestCase { // @see https://github.com/CuyZ/Valinor/issues/461 public function test_registered_static_constructor_with_return_type_in_doc_block_works_properly(): void diff --git a/tests/Integration/Mapping/Object/ArrayValuesMappingTest.php b/tests/Integration/Mapping/Object/ArrayValuesMappingTest.php index cbd1cf94..6220030d 100644 --- a/tests/Integration/Mapping/Object/ArrayValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/ArrayValuesMappingTest.php @@ -6,11 +6,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject as SimpleObjectAlias; -final class ArrayValuesMappingTest extends IntegrationTest +final class ArrayValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/ConstantValuesMappingTest.php b/tests/Integration/Mapping/Object/ConstantValuesMappingTest.php index e868fbae..50db27b1 100644 --- a/tests/Integration/Mapping/Object/ConstantValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/ConstantValuesMappingTest.php @@ -8,9 +8,9 @@ use CuyZ\Valinor\MapperBuilder; use CuyZ\Valinor\Tests\Fixture\Enum\BackedIntegerEnum; use CuyZ\Valinor\Tests\Fixture\Object\ObjectWithConstants; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class ConstantValuesMappingTest extends IntegrationTest +final class ConstantValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/DateTimeMappingTest.php b/tests/Integration/Mapping/Object/DateTimeMappingTest.php index cb3bac5a..609d7682 100644 --- a/tests/Integration/Mapping/Object/DateTimeMappingTest.php +++ b/tests/Integration/Mapping/Object/DateTimeMappingTest.php @@ -6,10 +6,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use DateTimeInterface; -final class DateTimeMappingTest extends IntegrationTest +final class DateTimeMappingTest extends IntegrationTestCase { public function test_default_datetime_constructor_cannot_be_used(): void { diff --git a/tests/Integration/Mapping/Object/DateTimeZoneMappingTest.php b/tests/Integration/Mapping/Object/DateTimeZoneMappingTest.php index 725219b3..8ab2a455 100644 --- a/tests/Integration/Mapping/Object/DateTimeZoneMappingTest.php +++ b/tests/Integration/Mapping/Object/DateTimeZoneMappingTest.php @@ -6,10 +6,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use DateTimeZone; -final class DateTimeZoneMappingTest extends IntegrationTest +final class DateTimeZoneMappingTest extends IntegrationTestCase { public function test_can_map_to_timezone_with_default_constructor(): void { diff --git a/tests/Integration/Mapping/Object/EnumValuesMappingTest.php b/tests/Integration/Mapping/Object/EnumValuesMappingTest.php index be6eb644..b16d52e1 100644 --- a/tests/Integration/Mapping/Object/EnumValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/EnumValuesMappingTest.php @@ -10,9 +10,9 @@ use CuyZ\Valinor\Tests\Fixture\Enum\BackedStringEnum; use CuyZ\Valinor\Tests\Fixture\Enum\PureEnum; use CuyZ\Valinor\Tests\Fixture\Object\StringableObject; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class EnumValuesMappingTest extends IntegrationTest +final class EnumValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/ExtendedDateIntervalMappingTest.php b/tests/Integration/Mapping/Object/ExtendedDateIntervalMappingTest.php index 63625778..2d2b4044 100644 --- a/tests/Integration/Mapping/Object/ExtendedDateIntervalMappingTest.php +++ b/tests/Integration/Mapping/Object/ExtendedDateIntervalMappingTest.php @@ -6,10 +6,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\DateInterval; -final class ExtendedDateIntervalMappingTest extends IntegrationTest +final class ExtendedDateIntervalMappingTest extends IntegrationTestCase { public function test_extended_date_interval_is_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/GenericInheritanceTest.php b/tests/Integration/Mapping/Object/GenericInheritanceTest.php index 481949ee..10a92ca1 100644 --- a/tests/Integration/Mapping/Object/GenericInheritanceTest.php +++ b/tests/Integration/Mapping/Object/GenericInheritanceTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class GenericInheritanceTest extends IntegrationTest +final class GenericInheritanceTest extends IntegrationTestCase { public function test_generic_types_are_inherited_properly(): void { diff --git a/tests/Integration/Mapping/Object/GenericValuesMappingTest.php b/tests/Integration/Mapping/Object/GenericValuesMappingTest.php index 1d5d102b..0e7110b0 100644 --- a/tests/Integration/Mapping/Object/GenericValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/GenericValuesMappingTest.php @@ -6,11 +6,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject as SimpleObjectAlias; -final class GenericValuesMappingTest extends IntegrationTest +final class GenericValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/IterableValuesMappingTest.php b/tests/Integration/Mapping/Object/IterableValuesMappingTest.php index 01873594..82467f6a 100644 --- a/tests/Integration/Mapping/Object/IterableValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/IterableValuesMappingTest.php @@ -6,11 +6,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject as SimpleObjectAlias; -final class IterableValuesMappingTest extends IntegrationTest +final class IterableValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/ListValuesMappingTest.php b/tests/Integration/Mapping/Object/ListValuesMappingTest.php index b0d23f05..5b6d2322 100644 --- a/tests/Integration/Mapping/Object/ListValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/ListValuesMappingTest.php @@ -6,11 +6,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject as SimpleObjectAlias; -final class ListValuesMappingTest extends IntegrationTest +final class ListValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/LocalTypeAliasMappingTest.php b/tests/Integration/Mapping/Object/LocalTypeAliasMappingTest.php index af3b6bc8..128e8a8e 100644 --- a/tests/Integration/Mapping/Object/LocalTypeAliasMappingTest.php +++ b/tests/Integration/Mapping/Object/LocalTypeAliasMappingTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class LocalTypeAliasMappingTest extends IntegrationTest +final class LocalTypeAliasMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/NullableMappingTest.php b/tests/Integration/Mapping/Object/NullableMappingTest.php index 49507ab4..fbc2f94f 100644 --- a/tests/Integration/Mapping/Object/NullableMappingTest.php +++ b/tests/Integration/Mapping/Object/NullableMappingTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class NullableMappingTest extends IntegrationTest +final class NullableMappingTest extends IntegrationTestCase { public function test_nullable_properties_default_value_are_handled_properly(): void { diff --git a/tests/Integration/Mapping/Object/ObjectValuesMappingTest.php b/tests/Integration/Mapping/Object/ObjectValuesMappingTest.php index 8883df81..4ae056ea 100644 --- a/tests/Integration/Mapping/Object/ObjectValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/ObjectValuesMappingTest.php @@ -6,11 +6,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use stdClass; -final class ObjectValuesMappingTest extends IntegrationTest +final class ObjectValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/ScalarValuesMappingTest.php b/tests/Integration/Mapping/Object/ScalarValuesMappingTest.php index 610963cd..aa793a5d 100644 --- a/tests/Integration/Mapping/Object/ScalarValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/ScalarValuesMappingTest.php @@ -6,7 +6,7 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use DateTime; use DateTimeImmutable; @@ -14,7 +14,7 @@ use stdClass; use stdClass as ObjectAlias; -final class ScalarValuesMappingTest extends IntegrationTest +final class ScalarValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/ShapedArrayValuesMappingTest.php b/tests/Integration/Mapping/Object/ShapedArrayValuesMappingTest.php index 72756b58..8a0b369a 100644 --- a/tests/Integration/Mapping/Object/ShapedArrayValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/ShapedArrayValuesMappingTest.php @@ -6,11 +6,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use stdClass; -final class ShapedArrayValuesMappingTest extends IntegrationTest +final class ShapedArrayValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Object/SimpleNamespacedObjectMappingTest.php b/tests/Integration/Mapping/Object/SimpleNamespacedObjectMappingTest.php index dcc526e1..b515b21e 100644 --- a/tests/Integration/Mapping/Object/SimpleNamespacedObjectMappingTest.php +++ b/tests/Integration/Mapping/Object/SimpleNamespacedObjectMappingTest.php @@ -6,10 +6,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use SimpleNamespace\SimpleNamespacedObject; -final class SimpleNamespacedObjectMappingTest extends IntegrationTest +final class SimpleNamespacedObjectMappingTest extends IntegrationTestCase { public function test_simple_namespaced_object_can_be_mapped(): void { diff --git a/tests/Integration/Mapping/Object/UnionOfObjectsMappingTest.php b/tests/Integration/Mapping/Object/UnionOfObjectsMappingTest.php index 24815dbf..1fdfafd6 100644 --- a/tests/Integration/Mapping/Object/UnionOfObjectsMappingTest.php +++ b/tests/Integration/Mapping/Object/UnionOfObjectsMappingTest.php @@ -6,9 +6,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; +use PHPUnit\Framework\Attributes\DataProvider; -final class UnionOfObjectsMappingTest extends IntegrationTest +final class UnionOfObjectsMappingTest extends IntegrationTestCase { public function test_objects_sharing_one_property_are_resolved_correctly(): void { @@ -51,12 +52,11 @@ public function test_mapping_to_union_of_null_and_objects_can_infer_object(): vo } /** - * - * @dataProvider mapping_error_when_cannot_resolve_union_data_provider * * @param class-string $className * @param mixed[] $source */ + #[DataProvider('mapping_error_when_cannot_resolve_union_data_provider')] public function test_mapping_error_when_cannot_resolve_union(string $className, array $source): void { try { @@ -70,7 +70,7 @@ public function test_mapping_error_when_cannot_resolve_union(string $className, } } - public function mapping_error_when_cannot_resolve_union_data_provider(): iterable + public static function mapping_error_when_cannot_resolve_union_data_provider(): iterable { yield [ 'className' => UnionOfFooAndBar::class, diff --git a/tests/Integration/Mapping/Object/UnionValuesMappingTest.php b/tests/Integration/Mapping/Object/UnionValuesMappingTest.php index e9a7f970..c0d87922 100644 --- a/tests/Integration/Mapping/Object/UnionValuesMappingTest.php +++ b/tests/Integration/Mapping/Object/UnionValuesMappingTest.php @@ -7,11 +7,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; use CuyZ\Valinor\Tests\Fixture\Object\ObjectWithConstants; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use DateTimeImmutable; use DateTimeInterface; -final class UnionValuesMappingTest extends IntegrationTest +final class UnionValuesMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Other/ArrayMappingTest.php b/tests/Integration/Mapping/Other/ArrayMappingTest.php index e4659c1e..e6d68910 100644 --- a/tests/Integration/Mapping/Other/ArrayMappingTest.php +++ b/tests/Integration/Mapping/Other/ArrayMappingTest.php @@ -6,10 +6,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use stdClass; -final class ArrayMappingTest extends IntegrationTest +final class ArrayMappingTest extends IntegrationTestCase { public function test_map_to_array_of_scalars_works_properly(): void { diff --git a/tests/Integration/Mapping/Other/FlexibleCastingMappingTest.php b/tests/Integration/Mapping/Other/FlexibleCastingMappingTest.php index b8304256..154bec99 100644 --- a/tests/Integration/Mapping/Other/FlexibleCastingMappingTest.php +++ b/tests/Integration/Mapping/Other/FlexibleCastingMappingTest.php @@ -10,10 +10,10 @@ use CuyZ\Valinor\Tests\Fixture\Enum\BackedIntegerEnum; use CuyZ\Valinor\Tests\Fixture\Enum\BackedStringEnum; use CuyZ\Valinor\Tests\Fixture\Object\StringableObject; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use stdClass; -final class FlexibleCastingMappingTest extends IntegrationTest +final class FlexibleCastingMappingTest extends IntegrationTestCase { private TreeMapper $mapper; diff --git a/tests/Integration/Mapping/Other/PermissiveTypesMappingTest.php b/tests/Integration/Mapping/Other/PermissiveTypesMappingTest.php index 339cdb15..40c893f0 100644 --- a/tests/Integration/Mapping/Other/PermissiveTypesMappingTest.php +++ b/tests/Integration/Mapping/Other/PermissiveTypesMappingTest.php @@ -7,11 +7,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\Mapper\TreeMapper; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use DateTime; use stdClass; -final class PermissiveTypesMappingTest extends IntegrationTest +final class PermissiveTypesMappingTest extends IntegrationTestCase { private TreeMapper $mapper; diff --git a/tests/Integration/Mapping/Other/ShapedArrayMappingTest.php b/tests/Integration/Mapping/Other/ShapedArrayMappingTest.php index f253ccc9..9ca10d8c 100644 --- a/tests/Integration/Mapping/Other/ShapedArrayMappingTest.php +++ b/tests/Integration/Mapping/Other/ShapedArrayMappingTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class ShapedArrayMappingTest extends IntegrationTest +final class ShapedArrayMappingTest extends IntegrationTestCase { public function test_values_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/Other/StrictMappingTest.php b/tests/Integration/Mapping/Other/StrictMappingTest.php index 2c54a268..3da8d3d8 100644 --- a/tests/Integration/Mapping/Other/StrictMappingTest.php +++ b/tests/Integration/Mapping/Other/StrictMappingTest.php @@ -10,11 +10,11 @@ use CuyZ\Valinor\Tests\Fixture\Enum\BackedIntegerEnum; use CuyZ\Valinor\Tests\Fixture\Enum\BackedStringEnum; use CuyZ\Valinor\Tests\Fixture\Enum\PureEnum; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Utility\PermissiveTypeFound; use stdClass; -final class StrictMappingTest extends IntegrationTest +final class StrictMappingTest extends IntegrationTestCase { public function test_missing_value_throws_exception(): void { diff --git a/tests/Integration/Mapping/Other/SuperfluousKeysMappingTest.php b/tests/Integration/Mapping/Other/SuperfluousKeysMappingTest.php index e3824de9..26762ccf 100644 --- a/tests/Integration/Mapping/Other/SuperfluousKeysMappingTest.php +++ b/tests/Integration/Mapping/Other/SuperfluousKeysMappingTest.php @@ -7,9 +7,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\Mapper\TreeMapper; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class SuperfluousKeysMappingTest extends IntegrationTest +final class SuperfluousKeysMappingTest extends IntegrationTestCase { private TreeMapper $mapper; diff --git a/tests/Integration/Mapping/ReadonlyMappingTest.php b/tests/Integration/Mapping/ReadonlyMappingTest.php index 14124976..4ae79893 100644 --- a/tests/Integration/Mapping/ReadonlyMappingTest.php +++ b/tests/Integration/Mapping/ReadonlyMappingTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class ReadonlyMappingTest extends IntegrationTest +final class ReadonlyMappingTest extends IntegrationTestCase { public function test_single_property_and_constructor_parameter_are_mapped_properly(): void { diff --git a/tests/Integration/Mapping/SingleNodeMappingTest.php b/tests/Integration/Mapping/SingleNodeMappingTest.php index 1084b03a..697f0013 100644 --- a/tests/Integration/Mapping/SingleNodeMappingTest.php +++ b/tests/Integration/Mapping/SingleNodeMappingTest.php @@ -6,16 +6,16 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; +use PHPUnit\Framework\Attributes\DataProvider; -final class SingleNodeMappingTest extends IntegrationTest +final class SingleNodeMappingTest extends IntegrationTestCase { /** - * @dataProvider single_property_and_constructor_parameter_data_provider - * * @param class-string $className */ + #[DataProvider('single_property_and_constructor_parameter_data_provider')] public function test_single_property_and_constructor_parameter_are_mapped_properly(string $className, mixed $value): void { try { @@ -28,10 +28,9 @@ public function test_single_property_and_constructor_parameter_are_mapped_proper } /** - * @dataProvider single_property_and_constructor_parameter_with_default_value_data_provider - * * @param class-string $className */ + #[DataProvider('single_property_and_constructor_parameter_with_default_value_data_provider')] public function test_single_property_and_constructor_parameter_with_default_value_are_mapped_properly(string $className): void { try { @@ -44,10 +43,9 @@ public function test_single_property_and_constructor_parameter_with_default_valu } /** - * @dataProvider single_property_and_constructor_parameter_data_provider - * * @param class-string $className */ + #[DataProvider('single_property_and_constructor_parameter_data_provider')] public function test_single_property_and_constructor_parameter_can_be_mapped_with_array_with_property_name(string $className, mixed $value): void { try { @@ -81,7 +79,7 @@ public function test_single_argument_invalid_value_with_key_not_present_in_sourc } } - public function single_property_and_constructor_parameter_data_provider(): iterable + public static function single_property_and_constructor_parameter_data_provider(): iterable { yield 'Single scalar property' => [ SingleScalarProperty::class, 'foo', @@ -115,7 +113,7 @@ public function single_property_and_constructor_parameter_data_provider(): itera ]; } - public function single_property_and_constructor_parameter_with_default_value_data_provider(): iterable + public static function single_property_and_constructor_parameter_with_default_value_data_provider(): iterable { yield ['array{foo: ' . SingleScalarPropertyWithDefaultValue::class . '}']; yield ['array{foo: ' . SingleConstructorParameterWithDefaultValue::class . '}']; diff --git a/tests/Integration/Mapping/Source/JsonSourceMappingTest.php b/tests/Integration/Mapping/Source/JsonSourceMappingTest.php index 3986da7c..86a1e20d 100644 --- a/tests/Integration/Mapping/Source/JsonSourceMappingTest.php +++ b/tests/Integration/Mapping/Source/JsonSourceMappingTest.php @@ -7,9 +7,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\Mapper\Source\JsonSource; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class JsonSourceMappingTest extends IntegrationTest +final class JsonSourceMappingTest extends IntegrationTestCase { public function test_json_source_is_mapped_correctly(): void { diff --git a/tests/Integration/Mapping/Source/Modifier/CamelCaseKeysMappingTest.php b/tests/Integration/Mapping/Source/Modifier/CamelCaseKeysMappingTest.php index 85afd572..cd745e9e 100644 --- a/tests/Integration/Mapping/Source/Modifier/CamelCaseKeysMappingTest.php +++ b/tests/Integration/Mapping/Source/Modifier/CamelCaseKeysMappingTest.php @@ -7,16 +7,16 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\Mapper\Source\Modifier\CamelCaseKeys; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\ObjectWithSubProperties; +use PHPUnit\Framework\Attributes\DataProvider; -final class CamelCaseKeysMappingTest extends IntegrationTest +final class CamelCaseKeysMappingTest extends IntegrationTestCase { /** - * @dataProvider sources_are_mapped_properly_data_provider - * * @param iterable $source */ + #[DataProvider('sources_are_mapped_properly_data_provider')] public function test_sources_are_mapped_properly(iterable $source): void { try { @@ -31,7 +31,7 @@ public function test_sources_are_mapped_properly(iterable $source): void self::assertSame('bar2', $object->someOtherValue->someOtherNestedValue); } - public function sources_are_mapped_properly_data_provider(): iterable + public static function sources_are_mapped_properly_data_provider(): iterable { yield 'underscore' => [ new CamelCaseKeys([ diff --git a/tests/Integration/Mapping/Source/Modifier/PathMappingTest.php b/tests/Integration/Mapping/Source/Modifier/PathMappingTest.php index 77051c30..e6c2b3aa 100644 --- a/tests/Integration/Mapping/Source/Modifier/PathMappingTest.php +++ b/tests/Integration/Mapping/Source/Modifier/PathMappingTest.php @@ -7,10 +7,10 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\Mapper\Source\Modifier\PathMapping; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\Country; -final class PathMappingTest extends IntegrationTest +final class PathMappingTest extends IntegrationTestCase { public function test_path_with_sub_paths_are_mapped(): void { diff --git a/tests/Integration/Mapping/Source/SourceTest.php b/tests/Integration/Mapping/Source/SourceTest.php index 01cbafe0..80e464ee 100644 --- a/tests/Integration/Mapping/Source/SourceTest.php +++ b/tests/Integration/Mapping/Source/SourceTest.php @@ -7,18 +7,18 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\Mapper\Source\Source; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\ObjectWithSubProperties; use IteratorAggregate; +use PHPUnit\Framework\Attributes\DataProvider; use Traversable; -final class SourceTest extends IntegrationTest +final class SourceTest extends IntegrationTestCase { /** - * @dataProvider sources_are_mapped_properly_data_provider - * * @param iterable $source */ + #[DataProvider('sources_are_mapped_properly_data_provider')] public function test_sources_are_mapped_properly(iterable $source): void { try { @@ -33,7 +33,7 @@ public function test_sources_are_mapped_properly(iterable $source): void self::assertSame('bar2', $object->someOtherValue->someOtherNestedValue); } - public function sources_are_mapped_properly_data_provider(): iterable + public static function sources_are_mapped_properly_data_provider(): iterable { yield 'Iterable class' => [ Source::iterable(new class () implements IteratorAggregate { diff --git a/tests/Integration/Mapping/Source/YamlSourceMappingTest.php b/tests/Integration/Mapping/Source/YamlSourceMappingTest.php index af741e5f..c54b1f09 100644 --- a/tests/Integration/Mapping/Source/YamlSourceMappingTest.php +++ b/tests/Integration/Mapping/Source/YamlSourceMappingTest.php @@ -7,12 +7,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\Mapper\Source\YamlSource; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; -/** - * @requires extension yaml - */ -final class YamlSourceMappingTest extends IntegrationTest +#[RequiresPhpExtension('yaml')] +final class YamlSourceMappingTest extends IntegrationTestCase { public function test_yaml_source_is_mapped_correctly(): void { diff --git a/tests/Integration/Mapping/UnionMappingTest.php b/tests/Integration/Mapping/UnionMappingTest.php index b850dea9..c9472d61 100644 --- a/tests/Integration/Mapping/UnionMappingTest.php +++ b/tests/Integration/Mapping/UnionMappingTest.php @@ -6,11 +6,11 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\City; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; -final class UnionMappingTest extends IntegrationTest +final class UnionMappingTest extends IntegrationTestCase { public function test_union_with_int_or_object(): void { diff --git a/tests/Integration/Mapping/ValueAlteringMappingTest.php b/tests/Integration/Mapping/ValueAlteringMappingTest.php index 9ce3cce8..aa194976 100644 --- a/tests/Integration/Mapping/ValueAlteringMappingTest.php +++ b/tests/Integration/Mapping/ValueAlteringMappingTest.php @@ -6,13 +6,13 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use CuyZ\Valinor\Tests\Integration\Mapping\Fixture\SimpleObject; use function strtolower; use function strtoupper; -final class ValueAlteringMappingTest extends IntegrationTest +final class ValueAlteringMappingTest extends IntegrationTestCase { public function test_alter_string_alters_value(): void { diff --git a/tests/Integration/Mapping/VariadicParameterMappingTest.php b/tests/Integration/Mapping/VariadicParameterMappingTest.php index 05e3b57c..33647170 100644 --- a/tests/Integration/Mapping/VariadicParameterMappingTest.php +++ b/tests/Integration/Mapping/VariadicParameterMappingTest.php @@ -6,9 +6,9 @@ use CuyZ\Valinor\Mapper\MappingError; use CuyZ\Valinor\MapperBuilder; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; -final class VariadicParameterMappingTest extends IntegrationTest +final class VariadicParameterMappingTest extends IntegrationTestCase { public function test_only_variadic_parameters_are_mapped_properly(): void { diff --git a/tests/Integration/Normalizer/NormalizerTest.php b/tests/Integration/Normalizer/NormalizerTest.php index d59bcc4c..081b8be8 100644 --- a/tests/Integration/Normalizer/NormalizerTest.php +++ b/tests/Integration/Normalizer/NormalizerTest.php @@ -21,6 +21,7 @@ use DateTimeInterface; use DateTimeZone; use IteratorAggregate; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use RuntimeException; use stdClass; @@ -31,11 +32,10 @@ final class NormalizerTest extends TestCase { /** - * @dataProvider normalize_basic_values_yields_expected_output_data_provider - * * @param array> $transformers * @param list $transformerAttributes */ + #[DataProvider('normalize_basic_values_yields_expected_output_data_provider')] public function test_normalize_basic_values_yields_expected_output( mixed $input, mixed $expectedArray, @@ -62,7 +62,7 @@ public function test_normalize_basic_values_yields_expected_output( self::assertSame($expectedJson, $jsonResult); } - public function normalize_basic_values_yields_expected_output_data_provider(): iterable + public static function normalize_basic_values_yields_expected_output_data_provider(): iterable { yield 'null' => [ 'input' => null, diff --git a/tests/Integration/Normalizer/StreamNormalizerTest.php b/tests/Integration/Normalizer/StreamNormalizerTest.php index 97629dbf..db94dbf6 100644 --- a/tests/Integration/Normalizer/StreamNormalizerTest.php +++ b/tests/Integration/Normalizer/StreamNormalizerTest.php @@ -6,12 +6,12 @@ use CuyZ\Valinor\MapperBuilder; use CuyZ\Valinor\Normalizer\Format; -use CuyZ\Valinor\Tests\Integration\IntegrationTest; +use CuyZ\Valinor\Tests\Integration\IntegrationTestCase; use function fopen; use function rewind; -final class StreamNormalizerTest extends IntegrationTest +final class StreamNormalizerTest extends IntegrationTestCase { public function test_json_normalizer_can_normalize_into_stream(): void { diff --git a/tests/Traits/TestIsSingleton.php b/tests/Traits/TestIsSingleton.php index 8b770533..b80cec9b 100644 --- a/tests/Traits/TestIsSingleton.php +++ b/tests/Traits/TestIsSingleton.php @@ -14,8 +14,7 @@ */ trait TestIsSingleton { - /** @test */ - public function singleton_instance_can_be_fetched(): void + public function test_singleton_instance_can_be_fetched(): void { $class = substr(str_replace('Tests\\Unit\\', '', $this::class), 0, -4); diff --git a/tests/Unit/Cache/Compiled/MixedValueCacheCompilerTest.php b/tests/Unit/Cache/Compiled/MixedValueCacheCompilerTest.php index 609f4084..8aaf669f 100644 --- a/tests/Unit/Cache/Compiled/MixedValueCacheCompilerTest.php +++ b/tests/Unit/Cache/Compiled/MixedValueCacheCompilerTest.php @@ -5,6 +5,7 @@ namespace CuyZ\Valinor\Tests\Unit\Cache\Compiled; use CuyZ\Valinor\Cache\Compiled\MixedValueCacheCompiler; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -19,9 +20,7 @@ protected function setUp(): void $this->compiler = new MixedValueCacheCompiler(); } - /** - * @dataProvider values_are_compiled_correctly_data_provider - */ + #[DataProvider('values_are_compiled_correctly_data_provider')] public function test_values_are_compiled_correctly(mixed $value): void { $compiledValue = eval('return ' . $this->compiler->compile($value) . ';'); @@ -29,7 +28,7 @@ public function test_values_are_compiled_correctly(mixed $value): void self::assertEquals($value, $compiledValue); } - public function values_are_compiled_correctly_data_provider(): iterable + public static function values_are_compiled_correctly_data_provider(): iterable { yield 'Float' => [1337.42]; yield 'Int' => [404]; diff --git a/tests/Unit/Mapper/Source/FileSourceTest.php b/tests/Unit/Mapper/Source/FileSourceTest.php index 8c9a3e59..44de40e4 100644 --- a/tests/Unit/Mapper/Source/FileSourceTest.php +++ b/tests/Unit/Mapper/Source/FileSourceTest.php @@ -9,6 +9,7 @@ use CuyZ\Valinor\Mapper\Source\FileSource; use org\bovigo\vfs\vfsStream; use org\bovigo\vfs\vfsStreamDirectory; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use SplFileObject; @@ -26,9 +27,7 @@ protected function setUp(): void $this->files = vfsStream::setup(); } - /** - * @dataProvider file_is_handled_properly_data_provider - */ + #[DataProvider('file_is_handled_properly_data_provider')] public function test_file_is_handled_properly(string $filename, string $content): void { $file = (vfsStream::newFile($filename))->withContent($content)->at($this->files); @@ -39,7 +38,7 @@ public function test_file_is_handled_properly(string $filename, string $content) self::assertSame($file->url(), $source->sourceName()); } - public function file_is_handled_properly_data_provider(): iterable + public static function file_is_handled_properly_data_provider(): iterable { yield ['test-json.json', '{"foo": "bar"}']; yield ['test-json.JSON', '{"foo": "bar"}']; diff --git a/tests/Unit/Mapper/Source/Modifier/MappingTest.php b/tests/Unit/Mapper/Source/Modifier/MappingTest.php index f059a8df..62fe0d72 100644 --- a/tests/Unit/Mapper/Source/Modifier/MappingTest.php +++ b/tests/Unit/Mapper/Source/Modifier/MappingTest.php @@ -5,15 +5,15 @@ namespace CuyZ\Valinor\Tests\Unit\Mapper\Source\Modifier; use CuyZ\Valinor\Mapper\Source\Modifier\Mapping; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; final class MappingTest extends TestCase { /** - * @dataProvider mappingsDataProvider - * * @param array $keys */ + #[DataProvider('mappings_data_provider')] public function test_matches_string_key_at_sub_level( array $keys, string $to, @@ -31,7 +31,7 @@ public function test_matches_string_key_at_sub_level( /** * @return array */ - public function mappingsDataProvider(): array + public static function mappings_data_provider(): array { return [ [ diff --git a/tests/Unit/Mapper/Source/YamlSourceTest.php b/tests/Unit/Mapper/Source/YamlSourceTest.php index 0b15268e..5b8cdc70 100644 --- a/tests/Unit/Mapper/Source/YamlSourceTest.php +++ b/tests/Unit/Mapper/Source/YamlSourceTest.php @@ -7,13 +7,12 @@ use CuyZ\Valinor\Mapper\Source\Exception\InvalidYaml; use CuyZ\Valinor\Mapper\Source\Exception\SourceNotIterable; use CuyZ\Valinor\Mapper\Source\YamlSource; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; use PHPUnit\Framework\TestCase; use function iterator_to_array; -/** - * @requires extension yaml - */ +#[RequiresPhpExtension('yaml')] final class YamlSourceTest extends TestCase { public function test_valid_yaml_is_parsed_correctly(): void diff --git a/tests/Unit/Mapper/Tree/Message/NodeMessageTest.php b/tests/Unit/Mapper/Tree/Message/NodeMessageTest.php index 984f867a..0ce1daef 100644 --- a/tests/Unit/Mapper/Tree/Message/NodeMessageTest.php +++ b/tests/Unit/Mapper/Tree/Message/NodeMessageTest.php @@ -10,6 +10,7 @@ use CuyZ\Valinor\Tests\Fake\Mapper\Tree\Message\FakeErrorMessage; use CuyZ\Valinor\Tests\Fake\Mapper\Tree\Message\FakeMessage; use CuyZ\Valinor\Tests\Fake\Mapper\Tree\Message\FakeNodeMessage; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; use PHPUnit\Framework\TestCase; final class NodeMessageTest extends TestCase @@ -102,9 +103,7 @@ public function test_custom_locale_returns_clone(): void self::assertNotSame($messageA, $messageB); } - /** - * @requires extension intl - */ + #[RequiresPhpExtension('intl')] public function test_custom_locale_is_used(): void { $originalMessage = (new FakeMessage('un message: {value, spellout}'))->withParameters(['value' => '42']); diff --git a/tests/Unit/Type/Parser/Lexer/NativeLexerTest.php b/tests/Unit/Type/Parser/Lexer/NativeLexerTest.php index 3d723017..fd3fb5c7 100644 --- a/tests/Unit/Type/Parser/Lexer/NativeLexerTest.php +++ b/tests/Unit/Type/Parser/Lexer/NativeLexerTest.php @@ -29,6 +29,7 @@ use CuyZ\Valinor\Type\Parser\Lexer\Token\Token; use CuyZ\Valinor\Type\Parser\Lexer\Token\UnionToken; use CuyZ\Valinor\Type\Parser\Lexer\Token\UnknownSymbolToken; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -44,10 +45,9 @@ protected function setUp(): void } /** - * @dataProvider tokenized_type_is_correct_data_provider - * * @param class-string $tokenClassName */ + #[DataProvider('tokenized_type_is_correct_data_provider')] public function test_tokenized_type_is_correct(string $symbol, string $tokenClassName): void { $token = $this->lexer->tokenize($symbol); @@ -56,7 +56,7 @@ public function test_tokenized_type_is_correct(string $symbol, string $tokenClas self::assertSame($symbol, $token->symbol()); } - public function tokenized_type_is_correct_data_provider(): iterable + public static function tokenized_type_is_correct_data_provider(): iterable { yield 'null' => [ 'symbol' => 'null', diff --git a/tests/Unit/Type/Types/Factory/ValueTypeFactoryTest.php b/tests/Unit/Type/Types/Factory/ValueTypeFactoryTest.php index 7e0d18bf..7769ada5 100644 --- a/tests/Unit/Type/Types/Factory/ValueTypeFactoryTest.php +++ b/tests/Unit/Type/Types/Factory/ValueTypeFactoryTest.php @@ -8,13 +8,12 @@ use CuyZ\Valinor\Type\Types\Factory\CannotBuildTypeFromValue; use CuyZ\Valinor\Type\Types\Factory\ValueTypeFactory; use DateTime; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; final class ValueTypeFactoryTest extends TestCase { - /** - * @dataProvider type_from_value_returns_expected_type_data_provider - */ + #[DataProvider('type_from_value_returns_expected_type_data_provider')] public function test_type_from_value_returns_expected_type(mixed $value, string $expectedType): void { $type = ValueTypeFactory::from($value); @@ -22,7 +21,7 @@ public function test_type_from_value_returns_expected_type(mixed $value, string self::assertSame($expectedType, $type->toString()); } - public function type_from_value_returns_expected_type_data_provider(): iterable + public static function type_from_value_returns_expected_type_data_provider(): iterable { yield 'true' => [ 'value' => true, diff --git a/tests/Unit/Type/Types/IntegerRangeTypeTest.php b/tests/Unit/Type/Types/IntegerRangeTypeTest.php index 9096fdb3..9ba9a508 100644 --- a/tests/Unit/Type/Types/IntegerRangeTypeTest.php +++ b/tests/Unit/Type/Types/IntegerRangeTypeTest.php @@ -14,6 +14,7 @@ use CuyZ\Valinor\Type\Types\NegativeIntegerType; use CuyZ\Valinor\Type\Types\PositiveIntegerType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -85,15 +86,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->type->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, int $expected): void { self::assertSame($expected, $this->type->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Integer from float' => [ diff --git a/tests/Unit/Type/Types/IntegerValueTypeTest.php b/tests/Unit/Type/Types/IntegerValueTypeTest.php index f170c912..cdd81d9a 100644 --- a/tests/Unit/Type/Types/IntegerValueTypeTest.php +++ b/tests/Unit/Type/Types/IntegerValueTypeTest.php @@ -12,6 +12,7 @@ use CuyZ\Valinor\Type\Types\NegativeIntegerType; use CuyZ\Valinor\Type\Types\PositiveIntegerType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -65,15 +66,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->type->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, int $expected): void { self::assertSame($expected, $this->type->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Integer from float' => [ diff --git a/tests/Unit/Type/Types/NativeBooleanTypeTest.php b/tests/Unit/Type/Types/NativeBooleanTypeTest.php index 7cac1684..d73d1ee8 100644 --- a/tests/Unit/Type/Types/NativeBooleanTypeTest.php +++ b/tests/Unit/Type/Types/NativeBooleanTypeTest.php @@ -10,6 +10,7 @@ use CuyZ\Valinor\Type\Types\MixedType; use CuyZ\Valinor\Type\Types\NativeBooleanType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -57,9 +58,7 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->booleanType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, bool $expected): void { $result = $this->booleanType->cast($value); @@ -67,7 +66,7 @@ public function test_cast_value_returns_correct_result(mixed $value, bool $expec self::assertSame($expected, $result); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'True from integer-string' => [ diff --git a/tests/Unit/Type/Types/NativeFloatTypeTest.php b/tests/Unit/Type/Types/NativeFloatTypeTest.php index 6668f9d8..8a59298a 100644 --- a/tests/Unit/Type/Types/NativeFloatTypeTest.php +++ b/tests/Unit/Type/Types/NativeFloatTypeTest.php @@ -10,6 +10,7 @@ use CuyZ\Valinor\Type\Types\MixedType; use CuyZ\Valinor\Type\Types\NativeFloatType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -57,15 +58,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->floatType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, float $expected): void { self::assertSame($expected, $this->floatType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Float from integer' => [ diff --git a/tests/Unit/Type/Types/NativeIntegerTypeTest.php b/tests/Unit/Type/Types/NativeIntegerTypeTest.php index 868c909e..f3d12759 100644 --- a/tests/Unit/Type/Types/NativeIntegerTypeTest.php +++ b/tests/Unit/Type/Types/NativeIntegerTypeTest.php @@ -10,6 +10,7 @@ use CuyZ\Valinor\Type\Types\MixedType; use CuyZ\Valinor\Type\Types\NativeIntegerType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -64,15 +65,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->integerType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, int $expected): void { self::assertSame($expected, $this->integerType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Negative integer from float' => [ diff --git a/tests/Unit/Type/Types/NativeStringTypeTest.php b/tests/Unit/Type/Types/NativeStringTypeTest.php index ff0a2afe..bb876904 100644 --- a/tests/Unit/Type/Types/NativeStringTypeTest.php +++ b/tests/Unit/Type/Types/NativeStringTypeTest.php @@ -11,6 +11,7 @@ use CuyZ\Valinor\Type\Types\MixedType; use CuyZ\Valinor\Type\Types\NativeStringType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -58,15 +59,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->stringType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, string $expected): void { self::assertSame($expected, $this->stringType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'String from float' => [ diff --git a/tests/Unit/Type/Types/NegativeIntegerTypeTest.php b/tests/Unit/Type/Types/NegativeIntegerTypeTest.php index a797dff6..ef42727e 100644 --- a/tests/Unit/Type/Types/NegativeIntegerTypeTest.php +++ b/tests/Unit/Type/Types/NegativeIntegerTypeTest.php @@ -12,6 +12,7 @@ use CuyZ\Valinor\Type\Types\NegativeIntegerType; use CuyZ\Valinor\Type\Types\PositiveIntegerType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -63,15 +64,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->negativeIntegerType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, int $expected): void { self::assertSame($expected, $this->negativeIntegerType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Integer from float' => [ diff --git a/tests/Unit/Type/Types/NonEmptyStringTypeTest.php b/tests/Unit/Type/Types/NonEmptyStringTypeTest.php index 5f2fc2a9..56962983 100644 --- a/tests/Unit/Type/Types/NonEmptyStringTypeTest.php +++ b/tests/Unit/Type/Types/NonEmptyStringTypeTest.php @@ -12,6 +12,7 @@ use CuyZ\Valinor\Type\Types\NativeStringType; use CuyZ\Valinor\Type\Types\NonEmptyStringType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -61,15 +62,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->nonEmptyStringType->canCast(new StringableObject(''))); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, string $expected): void { self::assertSame($expected, $this->nonEmptyStringType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'String from float' => [ diff --git a/tests/Unit/Type/Types/NonNegativeIntegerTypeTest.php b/tests/Unit/Type/Types/NonNegativeIntegerTypeTest.php index b5258222..eca0edb9 100644 --- a/tests/Unit/Type/Types/NonNegativeIntegerTypeTest.php +++ b/tests/Unit/Type/Types/NonNegativeIntegerTypeTest.php @@ -12,6 +12,7 @@ use CuyZ\Valinor\Type\Types\NonNegativeIntegerType; use CuyZ\Valinor\Type\Types\PositiveIntegerType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -65,15 +66,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->nonNegativeIntegerType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, int $expected): void { self::assertSame($expected, $this->nonNegativeIntegerType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Integer from float' => [ diff --git a/tests/Unit/Type/Types/NonPositiveIntegerTypeTest.php b/tests/Unit/Type/Types/NonPositiveIntegerTypeTest.php index 494cc518..7c0b499d 100644 --- a/tests/Unit/Type/Types/NonPositiveIntegerTypeTest.php +++ b/tests/Unit/Type/Types/NonPositiveIntegerTypeTest.php @@ -12,6 +12,7 @@ use CuyZ\Valinor\Type\Types\NonPositiveIntegerType; use CuyZ\Valinor\Type\Types\PositiveIntegerType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -65,15 +66,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->nonPositiveIntegerType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, int $expected): void { self::assertSame($expected, $this->nonPositiveIntegerType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Integer from float' => [ diff --git a/tests/Unit/Type/Types/NumericStringTypeTest.php b/tests/Unit/Type/Types/NumericStringTypeTest.php index d15e567f..3d6fb273 100644 --- a/tests/Unit/Type/Types/NumericStringTypeTest.php +++ b/tests/Unit/Type/Types/NumericStringTypeTest.php @@ -13,6 +13,7 @@ use CuyZ\Valinor\Type\Types\NonEmptyStringType; use CuyZ\Valinor\Type\Types\NumericStringType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -62,15 +63,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->numericStringType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, string $expected): void { self::assertSame($expected, $this->numericStringType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'String from float' => [ diff --git a/tests/Unit/Type/Types/PositiveIntegerTypeTest.php b/tests/Unit/Type/Types/PositiveIntegerTypeTest.php index 64e74a73..72c5368c 100644 --- a/tests/Unit/Type/Types/PositiveIntegerTypeTest.php +++ b/tests/Unit/Type/Types/PositiveIntegerTypeTest.php @@ -12,6 +12,7 @@ use CuyZ\Valinor\Type\Types\NegativeIntegerType; use CuyZ\Valinor\Type\Types\PositiveIntegerType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -63,15 +64,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->positiveIntegerType->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(mixed $value, int $expected): void { self::assertSame($expected, $this->positiveIntegerType->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'Integer from float' => [ diff --git a/tests/Unit/Type/Types/StringValueTypeTest.php b/tests/Unit/Type/Types/StringValueTypeTest.php index ef748daf..76bd1007 100644 --- a/tests/Unit/Type/Types/StringValueTypeTest.php +++ b/tests/Unit/Type/Types/StringValueTypeTest.php @@ -10,6 +10,7 @@ use CuyZ\Valinor\Type\Types\MixedType; use CuyZ\Valinor\Type\Types\StringValueType; use CuyZ\Valinor\Type\Types\UnionType; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; @@ -67,15 +68,13 @@ public function test_cannot_cast_other_types(): void self::assertFalse($this->type->canCast(new stdClass())); } - /** - * @dataProvider cast_value_returns_correct_result_data_provider - */ + #[DataProvider('cast_value_returns_correct_result_data_provider')] public function test_cast_value_returns_correct_result(StringValueType $type, mixed $value, string $expected): void { self::assertSame($expected, $type->cast($value)); } - public function cast_value_returns_correct_result_data_provider(): array + public static function cast_value_returns_correct_result_data_provider(): array { return [ 'String from float' => [ diff --git a/tests/Unit/Utility/Reflection/DocParserTest.php b/tests/Unit/Utility/Reflection/DocParserTest.php index 9d5e29a9..7862e634 100644 --- a/tests/Unit/Utility/Reflection/DocParserTest.php +++ b/tests/Unit/Utility/Reflection/DocParserTest.php @@ -7,6 +7,7 @@ use CuyZ\Valinor\Tests\Fixture\Object\ObjectWithConstants; use CuyZ\Valinor\Type\Parser\Exception\Template\DuplicatedTemplateName; use CuyZ\Valinor\Utility\Reflection\DocParser; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; use ReflectionFunction; @@ -18,8 +19,8 @@ final class DocParserTest extends TestCase { /** * @param non-empty-string $expectedType - * @dataProvider callables_with_docblock_typed_return_type */ + #[DataProvider('callables_with_docblock_typed_return_type')] public function test_docblock_return_type_is_fetched_correctly( callable $dockblockTypedCallable, string $expectedType @@ -32,7 +33,7 @@ public function test_docblock_return_type_is_fetched_correctly( /** * @return iterable */ - public function callables_with_docblock_typed_return_type(): iterable + public static function callables_with_docblock_typed_return_type(): iterable { yield 'phpdoc' => [ /** @return int */ @@ -144,8 +145,8 @@ public function test_docblock_return_type_with_no_docblock_returns_null(): void /** * @param non-empty-string $expectedType - * @dataProvider objects_with_docblock_typed_properties */ + #[DataProvider('objects_with_docblock_typed_properties')] public function test_docblock_var_type_is_fetched_correctly( ReflectionParameter|ReflectionProperty $reflection, string $expectedType @@ -160,7 +161,7 @@ public function test_docblock_var_type_is_fetched_correctly( /** * @return iterable */ - public function objects_with_docblock_typed_properties(): iterable + public static function objects_with_docblock_typed_properties(): iterable { yield 'phpdoc @var' => [ new ReflectionProperty(new class () { diff --git a/tests/Unit/Utility/Reflection/PhpParserTest.php b/tests/Unit/Utility/Reflection/PhpParserTest.php index b76e66be..b73deeb7 100644 --- a/tests/Unit/Utility/Reflection/PhpParserTest.php +++ b/tests/Unit/Utility/Reflection/PhpParserTest.php @@ -11,6 +11,7 @@ use CuyZ\Valinor\Tests\Unit\Utility\Reflection\Fixtures\SubDir\Foo; use CuyZ\Valinor\Utility\Reflection\PhpParser; use Generator; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use ReflectionClass; use ReflectionFunction; @@ -24,12 +25,12 @@ final class PhpParserTest extends TestCase { /** - * @dataProvider useStatementsDataProvider * @template T of object * * @param ReflectionClass|ReflectionFunction|ReflectionMethod $reflection * @param array $expectedMap */ + #[DataProvider('use_statements_data_provider')] public function test_parse_use_statements(\ReflectionClass|\ReflectionFunction|\ReflectionMethod $reflection, array $expectedMap): void { $actualMap = PhpParser::parseUseStatements($reflection); @@ -37,7 +38,7 @@ public function test_parse_use_statements(\ReflectionClass|\ReflectionFunction|\ self::assertSame($expectedMap, $actualMap); } - public function useStatementsDataProvider(): Generator + public static function use_statements_data_provider(): Generator { yield 'no use statements' => [ new ReflectionClass(\stdClass::class), diff --git a/tests/Unit/Utility/Reflection/ReflectionTest.php b/tests/Unit/Utility/Reflection/ReflectionTest.php index e3fed8c0..4755902f 100644 --- a/tests/Unit/Utility/Reflection/ReflectionTest.php +++ b/tests/Unit/Utility/Reflection/ReflectionTest.php @@ -10,6 +10,7 @@ use CuyZ\Valinor\Tests\Fixture\Object\ObjectWithPropertyWithNativePhp82StandaloneTypes; use CuyZ\Valinor\Utility\Reflection\Reflection; use Iterator; +use PHPUnit\Framework\Attributes\RequiresPhp; use PHPUnit\Framework\TestCase; use ReflectionClass; use ReflectionFunction; @@ -135,9 +136,7 @@ public function test_intersection_type_is_handled(): void self::assertSame('Countable&Iterator', Reflection::flattenType($type)); } - /** - * @requires PHP >= 8.2 - */ + #[RequiresPhp('8.2')] public function test_disjunctive_normal_form_type_is_handled(): void { $class = ObjectWithPropertyWithNativeDisjunctiveNormalFormType::class; @@ -148,9 +147,7 @@ public function test_disjunctive_normal_form_type_is_handled(): void self::assertSame('Countable&Iterator|Countable&DateTime', Reflection::flattenType($type)); } - /** - * @requires PHP >= 8.2 - */ + #[RequiresPhp('8.2')] public function test_native_null_type_is_handled(): void { $class = ObjectWithPropertyWithNativePhp82StandaloneTypes::class; @@ -161,9 +158,7 @@ public function test_native_null_type_is_handled(): void self::assertSame('null', Reflection::flattenType($type)); } - /** - * @requires PHP >= 8.2 - */ + #[RequiresPhp('8.2')] public function test_native_true_type_is_handled(): void { $class = ObjectWithPropertyWithNativePhp82StandaloneTypes::class; @@ -174,9 +169,7 @@ public function test_native_true_type_is_handled(): void self::assertSame('true', Reflection::flattenType($type)); } - /** - * @requires PHP >= 8.2 - */ + #[RequiresPhp('8.2')] public function test_native_false_type_is_handled(): void { $class = ObjectWithPropertyWithNativePhp82StandaloneTypes::class; diff --git a/tests/Unit/Utility/String/StringCutterTest.php b/tests/Unit/Utility/String/StringCutterTest.php index 992c4328..26586c2e 100644 --- a/tests/Unit/Utility/String/StringCutterTest.php +++ b/tests/Unit/Utility/String/StringCutterTest.php @@ -5,13 +5,12 @@ namespace CuyZ\Valinor\Tests\Unit\Utility\String; use CuyZ\Valinor\Utility\String\StringCutter; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; final class StringCutterTest extends TestCase { - /** - * @dataProvider mb_strcut_polyfill_data_provider - */ + #[DataProvider('mb_strcut_polyfill_data_provider')] public function test_mb_strcut_polyfill(string $base, int $length, string $expected): void { $cut = StringCutter::cutPolyfill($base, $length); @@ -19,7 +18,7 @@ public function test_mb_strcut_polyfill(string $base, int $length, string $expec self::assertSame($expected, $cut); } - public function mb_strcut_polyfill_data_provider(): iterable + public static function mb_strcut_polyfill_data_provider(): iterable { yield '1 byte' => [ 'base' => 'foobar', diff --git a/tests/Unit/Utility/String/StringFormatterTest.php b/tests/Unit/Utility/String/StringFormatterTest.php index 29c3ed2a..a5feecd3 100644 --- a/tests/Unit/Utility/String/StringFormatterTest.php +++ b/tests/Unit/Utility/String/StringFormatterTest.php @@ -7,13 +7,12 @@ use CuyZ\Valinor\Tests\Fake\Mapper\Tree\Message\FakeMessage; use CuyZ\Valinor\Utility\String\StringFormatter; use CuyZ\Valinor\Utility\String\StringFormatterError; +use PHPUnit\Framework\Attributes\RequiresPhpExtension; use PHPUnit\Framework\TestCase; final class StringFormatterTest extends TestCase { - /** - * @requires extension intl - */ + #[RequiresPhpExtension('intl')] public function test_wrong_intl_format_throws_exception(): void { $this->expectException(StringFormatterError::class); @@ -23,9 +22,7 @@ public function test_wrong_intl_format_throws_exception(): void StringFormatter::format('en', 'some {wrong.format}', []); } - /** - * @requires extension intl - */ + #[RequiresPhpExtension('intl')] public function test_wrong_intl_format_throws_exception_with_intl_exception(): void { $oldIni = ini_get('intl.use_exceptions'); diff --git a/tests/Unit/Utility/ValueDumperTest.php b/tests/Unit/Utility/ValueDumperTest.php index 78851c11..c2e61d3e 100644 --- a/tests/Unit/Utility/ValueDumperTest.php +++ b/tests/Unit/Utility/ValueDumperTest.php @@ -9,20 +9,19 @@ use CuyZ\Valinor\Tests\Fixture\Enum\PureEnum; use CuyZ\Valinor\Utility\ValueDumper; use DateTimeImmutable; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use stdClass; final class ValueDumperTest extends TestCase { - /** - * @dataProvider dump_value_returns_correct_signature_data_provider - */ + #[DataProvider('dump_value_returns_correct_signature_data_provider')] public function test_dump_value_returns_correct_signature(mixed $value, string $expected): void { self::assertSame($expected, ValueDumper::dump($value)); } - public function dump_value_returns_correct_signature_data_provider(): array + public static function dump_value_returns_correct_signature_data_provider(): array { return [ 'null' => [null, 'null'],