From 0f325d62c83b5130b97c2c20813ed2755a08e3db Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 10:59:15 +0100 Subject: [PATCH 01/15] Remove psalm (will replace with phpstan) Also bump required PHP version to 8.3 --- .github/CONTRIBUTING.md | 4 - .github/workflows/ci.yml | 5 +- composer.json | 10 +- composer.lock | 2697 ++++++++++----------------------- features/file-uploads.feature | 2 +- psalm.xml | 55 - 6 files changed, 781 insertions(+), 1992 deletions(-) delete mode 100644 psalm.xml diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index d2fdde6..be989fb 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -15,10 +15,6 @@ After this has been started you can execute the test suites by running: ./vendor/bin/behat --strict ./vendor/bin/phpunit -Psalm is used for static code analysis: - - vendor/bin/psalm - ## Documentation The extension uses [Sphinx](http://www.sphinx-doc.org/en/stable/) for documentation, and all end-user documentation resides in the `docs` directory. To generate the current documentation after checking out your fork simply run the `docs` composer script: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd3f2d2..b0ae8ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php: ['8.1', '8.2'] + php: ['8.3'] name: Validate and test on PHP ${{ matrix.php }} steps: - uses: actions/checkout@v4 @@ -50,9 +50,6 @@ jobs: - name: Run integration tests run: vendor/bin/behat --strict - - name: Run static code analysis - run: vendor/bin/psalm - - name: Check coding standard run: php-cs-fixer fix --dry-run --diff diff --git a/composer.json b/composer.json index 3c61edb..2c48f77 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "issues": "https://github.com/imbo/behat-api-extension/issues" }, "require": { - "php": ">=8.1", + "php": ">=8.3", "ext-json": "*", "beberlei/assert": "^3.3", "behat/behat": "^3.8", @@ -27,15 +27,12 @@ "guzzlehttp/guzzle": "^7.3" }, "require-dev": { - "alexeyshockov/guzzle-psalm-plugin": "^1.0", "imbo/imbo-coding-standard": "^2.0", "phpunit/phpunit": "^10.0", - "psalm/plugin-phpunit": "^0.18.4", "slim/psr7": "^1.3", "slim/slim": "^4.7", - "symfony/process": "^6.2", - "tuupola/slim-basic-auth": "^3.3", - "vimeo/psalm": "^5.8" + "symfony/process": "^7.2", + "tuupola/slim-basic-auth": "^3.3" }, "autoload": { "psr-4": { @@ -61,7 +58,6 @@ "phpunit": "vendor/bin/phpunit", "phpunit:coverage": "vendor/bin/phpunit --coverage-html build/coverage", "behat": "vendor/bin/behat --strict", - "sa": "vendor/bin/psalm", "cs": "php-cs-fixer fix --dry-run --diff", "dev": "php -S localhost:8080 -t ./features/bootstrap > server.log 2>&1", "docs": "cd docs; make html" diff --git a/composer.lock b/composer.lock index 00a8dd7..e1ebca0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0d2b18a594a526046de6524f7b6b1bb4", + "content-hash": "7d287946ca6e4721bcbbc5568f39f63c", "packages": [ { "name": "beberlei/assert", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/beberlei/assert.git", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655" + "reference": "b5fd8eacd8915a1b627b8bfc027803f1939734dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655", + "url": "https://api.github.com/repos/beberlei/assert/zipball/b5fd8eacd8915a1b627b8bfc027803f1939734dd", + "reference": "b5fd8eacd8915a1b627b8bfc027803f1939734dd", "shasum": "" }, "require": { @@ -25,7 +25,7 @@ "ext-json": "*", "ext-mbstring": "*", "ext-simplexml": "*", - "php": "^7.0 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "*", @@ -69,43 +69,46 @@ ], "support": { "issues": "https://github.com/beberlei/assert/issues", - "source": "https://github.com/beberlei/assert/tree/v3.3.2" + "source": "https://github.com/beberlei/assert/tree/v3.3.3" }, - "time": "2021-12-16T21:41:27+00:00" + "time": "2024-07-15T13:18:35+00:00" }, { "name": "behat/behat", - "version": "v3.13.0", + "version": "v3.17.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "9dd7cdb309e464ddeab095cd1a5151c2dccba4ab" + "reference": "3eb5ebae08db4e44ca6a458ba0f449dda753c465" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/9dd7cdb309e464ddeab095cd1a5151c2dccba4ab", - "reference": "9dd7cdb309e464ddeab095cd1a5151c2dccba4ab", + "url": "https://api.github.com/repos/Behat/Behat/zipball/3eb5ebae08db4e44ca6a458ba0f449dda753c465", + "reference": "3eb5ebae08db4e44ca6a458ba0f449dda753c465", "shasum": "" }, "require": { - "behat/gherkin": "^4.9.0", - "behat/transliterator": "^1.2", + "behat/gherkin": "^4.10.0", + "behat/transliterator": "^1.5", + "composer-runtime-api": "^2.2", + "composer/xdebug-handler": "^3.0", "ext-mbstring": "*", - "php": "^7.2 || ^8.0", + "php": "8.1.* || 8.2.* || 8.3.* || 8.4.* ", "psr/container": "^1.0 || ^2.0", - "symfony/config": "^4.4 || ^5.0 || ^6.0", - "symfony/console": "^4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0", - "symfony/translation": "^4.4 || ^5.0 || ^6.0", - "symfony/yaml": "^4.4 || ^5.0 || ^6.0" + "symfony/config": "^5.4 || ^6.4 || ^7.0", + "symfony/console": "^5.4 || ^6.4 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.4 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", + "symfony/translation": "^5.4 || ^6.4 || ^7.0", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0" }, "require-dev": { "herrera-io/box": "~1.6.1", - "phpspec/prophecy": "^1.15", - "phpunit/phpunit": "^8.5 || ^9.0", - "symfony/process": "^4.4 || ^5.0 || ^6.0", - "vimeo/psalm": "^4.8" + "phpunit/phpunit": "^9.6", + "sebastian/diff": "^4.0", + "symfony/polyfill-php84": "^1.31", + "symfony/process": "^5.4 || ^6.4 || ^7.0", + "vimeo/psalm": "^5.0" }, "suggest": { "ext-dom": "Needed to output test results in JUnit format." @@ -124,7 +127,9 @@ "Behat\\Hook\\": "src/Behat/Hook/", "Behat\\Step\\": "src/Behat/Step/", "Behat\\Behat\\": "src/Behat/Behat/", - "Behat\\Testwork\\": "src/Behat/Testwork/" + "Behat\\Config\\": "src/Behat/Config/", + "Behat\\Testwork\\": "src/Behat/Testwork/", + "Behat\\Transformation\\": "src/Behat/Transformation/" } }, "notification-url": "https://packagist.org/downloads/", @@ -139,7 +144,7 @@ } ], "description": "Scenario-oriented BDD framework for PHP", - "homepage": "http://behat.org/", + "homepage": "https://behat.org/", "keywords": [ "Agile", "BDD", @@ -156,31 +161,31 @@ ], "support": { "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.13.0" + "source": "https://github.com/Behat/Behat/tree/v3.17.0" }, - "time": "2023-04-18T15:40:53+00:00" + "time": "2024-12-18T10:27:06+00:00" }, { "name": "behat/gherkin", - "version": "v4.9.0", + "version": "v4.11.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" + "reference": "32821a17b12620951e755b5d49328a6421a5b5b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/32821a17b12620951e755b5d49328a6421a5b5b5", + "reference": "32821a17b12620951e755b5d49328a6421a5b5b5", "shasum": "" }, "require": { - "php": "~7.2|~8.0" + "php": "8.1.* || 8.2.* || 8.3.* || 8.4.*" }, "require-dev": { - "cucumber/cucumber": "dev-gherkin-22.0.0", - "phpunit/phpunit": "~8|~9", - "symfony/yaml": "~3|~4|~5" + "cucumber/cucumber": "dev-gherkin-24.1.0", + "phpunit/phpunit": "^9.6", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -219,9 +224,9 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" + "source": "https://github.com/Behat/Gherkin/tree/v4.11.0" }, - "time": "2021-10-12T13:05:09+00:00" + "time": "2024-12-06T10:07:25+00:00" }, { "name": "behat/transliterator", @@ -272,28 +277,173 @@ }, "time": "2022-03-30T09:27:43+00:00" }, + { + "name": "composer/pcre", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, + "require-dev": { + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" + }, + "type": "library", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-11-12T16:29:46+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-05-06T16:37:16+00:00" + }, { "name": "firebase/php-jwt", - "version": "v6.8.0", + "version": "v6.10.2", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "48b0210c51718d682e53210c24d25c5a10a2299b" + "reference": "30c19ed0f3264cb660ea496895cfb6ef7ee3653b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/48b0210c51718d682e53210c24d25c5a10a2299b", - "reference": "48b0210c51718d682e53210c24d25c5a10a2299b", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/30c19ed0f3264cb660ea496895cfb6ef7ee3653b", + "reference": "30c19ed0f3264cb660ea496895cfb6ef7ee3653b", "shasum": "" }, "require": { - "php": "^7.4||^8.0" + "php": "^8.0" }, "require-dev": { - "guzzlehttp/guzzle": "^6.5||^7.4", + "guzzlehttp/guzzle": "^7.4", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "psr/cache": "^1.0||^2.0", + "psr/cache": "^2.0||^3.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0" }, @@ -331,28 +481,28 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.8.0" + "source": "https://github.com/firebase/php-jwt/tree/v6.10.2" }, - "time": "2023-06-20T16:45:35+00:00" + "time": "2024-11-24T11:22:49+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "version": "7.9.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -361,11 +511,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "guzzle/client-integration-tests": "3.0.2", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -443,7 +593,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" }, "funding": [ { @@ -459,28 +609,28 @@ "type": "tidelift" } ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2024-07-24T11:22:20+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.0", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6" + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/3a494dc7dc1d7d12e511890177ae2d0e6c107da6", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "type": "library", "extra": { @@ -526,7 +676,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.0" + "source": "https://github.com/guzzle/promises/tree/2.0.4" }, "funding": [ { @@ -542,20 +692,20 @@ "type": "tidelift" } ], - "time": "2023-05-21T13:50:22+00:00" + "time": "2024-10-17T10:06:22+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.5.0", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { @@ -569,9 +719,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -642,7 +792,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -658,7 +808,7 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "psr/container", @@ -765,16 +915,16 @@ }, { "name": "psr/http-client", - "version": "1.0.2", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { @@ -811,26 +961,26 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" + "source": "https://github.com/php-fig/http-client" }, - "time": "2023-04-10T20:12:12+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", + "php": ">=7.1", "psr/http-message": "^1.0 || ^2.0" }, "type": "library", @@ -854,7 +1004,7 @@ "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -866,22 +1016,22 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + "source": "https://github.com/php-fig/http-factory" }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", - "version": "1.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { @@ -890,7 +1040,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -905,7 +1055,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -919,9 +1069,59 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2023-04-04T09:50:52+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -969,34 +1169,34 @@ }, { "name": "symfony/config", - "version": "v6.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae" + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/a5e00dec161b08c946a2c16eed02adbeedf827ae", - "reference": "a5e00dec161b08c946a2c16eed02adbeedf827ae", + "url": "https://api.github.com/repos/symfony/config/zipball/bcd3c4adf0144dee5011bb35454728c38adec055", + "reference": "bcd3c4adf0144dee5011bb35454728c38adec055", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^5.4|^6.0", + "symfony/filesystem": "^7.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<5.4", + "symfony/finder": "<6.4", "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/messenger": "^5.4|^6.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1024,7 +1224,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v6.3.0" + "source": "https://github.com/symfony/config/tree/v7.2.0" }, "funding": [ { @@ -1040,47 +1240,50 @@ "type": "tidelift" } ], - "time": "2023-04-25T10:46:17+00:00" + "time": "2024-11-04T11:36:24+00:00" }, { "name": "symfony/console", - "version": "v6.3.0", + "version": "v7.2.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "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" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1114,7 +1317,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.0" + "source": "https://github.com/symfony/console/tree/v7.2.1" }, "funding": [ { @@ -1130,44 +1333,43 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2024-12-11T03:49:26+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.3.1", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "7abf242af21f196b65f20ab00ff251fdf3889b8d" + "reference": "a475747af1a1c98272a5471abc35f3da81197c5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7abf242af21f196b65f20ab00ff251fdf3889b8d", - "reference": "7abf242af21f196b65f20ab00ff251fdf3889b8d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a475747af1a1c98272a5471abc35f3da81197c5d", + "reference": "a475747af1a1c98272a5471abc35f3da81197c5d", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.2.10" + "symfony/service-contracts": "^3.5", + "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<6.1", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.3", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/finder": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "psr/container-implementation": "1.1|2.0", "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^6.1", - "symfony/expression-language": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "symfony/config": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1195,7 +1397,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.3.1" + "source": "https://github.com/symfony/dependency-injection/tree/v7.2.0" }, "funding": [ { @@ -1211,20 +1413,20 @@ "type": "tidelift" } ], - "time": "2023-06-24T11:51:27+00:00" + "time": "2024-11-25T15:45:00+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -1232,12 +1434,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -1262,7 +1464,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.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -1278,28 +1480,28 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa" + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", - "reference": "3af8ac1a3f98f6dbc55e10ae59c9e44bfc38dfaa", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4", + "symfony/dependency-injection": "<6.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -1308,13 +1510,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/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1342,7 +1544,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.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" }, "funding": [ { @@ -1358,20 +1560,20 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -1380,12 +1582,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -1418,7 +1620,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -1434,27 +1636,30 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", - "version": "v6.3.1", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, + "require-dev": { + "symfony/process": "^6.4|^7.0" + }, "type": "library", "autoload": { "psr-4": { @@ -1481,7 +1686,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -1497,24 +1702,24 @@ "type": "tidelift" } ], - "time": "2023-06-01T08:30:39+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "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/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -1524,12 +1729,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1563,7 +1765,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -1579,36 +1781,33 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "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/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1644,7 +1843,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.31.0" }, "funding": [ { @@ -1660,36 +1859,33 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "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/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1728,7 +1924,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.31.0" }, "funding": [ { @@ -1744,24 +1940,24 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "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/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -1771,12 +1967,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -1811,7 +2004,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -1827,37 +2020,38 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.3.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -1893,7 +2087,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -1909,24 +2103,24 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v6.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", @@ -1936,11 +2130,12 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -1979,7 +2174,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.0" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -1995,54 +2190,55 @@ "type": "tidelift" } ], - "time": "2023-03-21T21:06:29+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/translation", - "version": "v6.3.0", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f" + "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f72b2cba8f79dd9d536f534f76874b58ad37876f", - "reference": "f72b2cba8f79dd9d536f534f76874b58ad37876f", + "url": "https://api.github.com/repos/symfony/translation/zipball/e2674a30132b7cc4d74540d6c2573aa363f05923", + "reference": "e2674a30132b7cc4d74540d6c2573aa363f05923", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", + "symfony/http-kernel": "<6.4", "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", + "symfony/routing": "^6.4|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0" + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2073,7 +2269,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.0" + "source": "https://github.com/symfony/translation/tree/v7.2.2" }, "funding": [ { @@ -2089,20 +2285,20 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:46:45+00:00" + "time": "2024-12-07T08:18:10+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.3.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", - "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { @@ -2110,12 +2306,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" } }, "autoload": { @@ -2151,7 +2347,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -2167,27 +2363,29 @@ "type": "tidelift" } ], - "time": "2023-05-30T17:17:10+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "db5416d04269f2827d8c54331ba4cfa42620d350" + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/db5416d04269f2827d8c54331ba4cfa42620d350", - "reference": "db5416d04269f2827d8c54331ba4cfa42620d350", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1a6a89f95a46af0f142874c9d650a6358d13070d", + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -2225,7 +2423,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.0" + "source": "https://github.com/symfony/var-exporter/tree/v7.2.0" }, "funding": [ { @@ -2241,31 +2439,32 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:48:44+00:00" + "time": "2024-10-18T07:58:17+00:00" }, { "name": "symfony/yaml", - "version": "v6.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927" + "reference": "099581e99f557e9f16b43c5916c26380b54abb22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a9a8337aa641ef2aa39c3e028f9107ec391e5927", - "reference": "a9a8337aa641ef2aa39c3e028f9107ec391e5927", + "url": "https://api.github.com/repos/symfony/yaml/zipball/099581e99f557e9f16b43c5916c26380b54abb22", + "reference": "099581e99f557e9f16b43c5916c26380b54abb22", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -2296,7 +2495,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.0" + "source": "https://github.com/symfony/yaml/tree/v7.2.0" }, "funding": [ { @@ -2312,38 +2511,39 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:28:14+00:00" + "time": "2024-10-23T06:56:12+00:00" } ], "packages-dev": [ { - "name": "alexeyshockov/guzzle-psalm-plugin", - "version": "v1.0.0", + "name": "fig/http-message-util", + "version": "1.1.5", "source": { "type": "git", - "url": "https://github.com/alexeyshockov/guzzle-psalm-plugin.git", - "reference": "12859ba44fc8d5daafd6c7c563eb364ad16dcd4a" + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alexeyshockov/guzzle-psalm-plugin/zipball/12859ba44fc8d5daafd6c7c563eb364ad16dcd4a", - "reference": "12859ba44fc8d5daafd6c7c563eb364ad16dcd4a", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", "shasum": "" }, "require": { - "vimeo/psalm": "^5" + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" }, - "type": "psalm-plugin", + "type": "library", "extra": { - "psalm": { - "pluginClass": "AlexS\\Guzzle\\PsalmPlugin" + "branch-alias": { + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "AlexS\\Guzzle\\": [ - "." - ] + "Fig\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2352,779 +2552,28 @@ ], "authors": [ { - "name": "Alexey Shokov", - "email": "alexey@shockov.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Guzzle type information for Psalm", + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], "support": { - "issues": "https://github.com/alexeyshockov/guzzle-psalm-plugin/issues", - "source": "https://github.com/alexeyshockov/guzzle-psalm-plugin/tree/v1.0.0" + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" }, - "time": "2022-12-28T14:57:33+00:00" + "time": "2020-11-24T22:02:12+00:00" }, { - "name": "amphp/amp", - "version": "v2.6.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php", - "lib/Internal/functions.php" - ], - "psr-4": { - "Amp\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "https://amphp.org/amp", - "keywords": [ - "async", - "asynchronous", - "awaitable", - "concurrency", - "event", - "event-loop", - "future", - "non-blocking", - "promise" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-02-20T17:52:18+00:00" - }, - { - "name": "amphp/byte-stream", - "version": "v1.8.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Amp\\ByteStream\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", - "keywords": [ - "amp", - "amphp", - "async", - "io", - "non-blocking", - "stream" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-03-30T17:13:30+00:00" - }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-01-17T14:14:24+00:00" - }, - { - "name": "composer/pcre", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-11-17T09:50:14+00:00" - }, - { - "name": "composer/semver", - "version": "3.3.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-04-01T19:23:25+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" - }, - "time": "2019-12-04T15:06:13+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" - }, - "time": "2023-06-03T09:27:29+00:00" - }, - { - "name": "felixfbecker/advanced-json-rpc", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "shasum": "" - }, - "require": { - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "php": "^7.1 || ^8.0", - "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "AdvancedJsonRpc\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "A more advanced JSONRPC implementation", - "support": { - "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", - "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" - }, - "time": "2021-06-11T22:34:44+00:00" - }, - { - "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpstan/phpstan": "*", - "squizlabs/php_codesniffer": "^3.1", - "vimeo/psalm": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "LanguageServerProtocol\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "PHP classes for the Language Server Protocol", - "keywords": [ - "language", - "microsoft", - "php", - "server" - ], - "support": { - "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" - }, - "time": "2022-03-02T22:36:06+00:00" - }, - { - "name": "fidry/cpu-core-counter", - "version": "0.5.1", - "source": { - "type": "git", - "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "fidry/makefile": "^0.2.0", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^9.5.26 || ^8.5.31", - "theofidry/php-cs-fixer-config": "^1.0", - "webmozarts/strict-phpunit": "^7.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" - } - ], - "description": "Tiny utility to get the number of CPU cores.", - "keywords": [ - "CPU", - "core" - ], - "support": { - "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" - }, - "funding": [ - { - "url": "https://github.com/theofidry", - "type": "github" - } - ], - "time": "2022-12-24T12:35:10+00:00" - }, - { - "name": "fig/http-message-util", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "suggest": { - "psr/http-message": "The package containing the PSR-7 interfaces" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" - }, - "time": "2020-11-24T22:02:12+00:00" - }, - { - "name": "imbo/imbo-coding-standard", - "version": "v2.1.1", + "name": "imbo/imbo-coding-standard", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/imbo/imbo-coding-standard.git", @@ -3176,16 +2625,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", "shasum": "" }, "require": { @@ -3193,11 +2642,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -3223,7 +2673,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" }, "funding": [ { @@ -3231,58 +2681,7 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" - }, - { - "name": "netresearch/jsonmapper", - "version": "v4.2.0", - "source": { - "type": "git", - "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", - "squizlabs/php_codesniffer": "~3.5" - }, - "type": "library", - "autoload": { - "psr-0": { - "JsonMapper": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "cweiske@cweiske.de", - "homepage": "http://github.com/cweiske/jsonmapper/", - "role": "Developer" - } - ], - "description": "Map nested JSON structures onto PHP classes", - "support": { - "email": "cweiske@cweiske.de", - "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" - }, - "time": "2023-04-09T17:37:40+00:00" + "time": "2024-11-08T17:47:46+00:00" }, { "name": "nikic/fast-route", @@ -3336,25 +2735,27 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "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/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -3362,7 +2763,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3386,26 +2787,27 @@ ], "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/v5.4.0" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -3446,9 +2848,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -3491,259 +2899,44 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.7.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" - }, - "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "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" - }, - "time": "2023-05-30T18:13:47+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.22.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/65c39594fbd8c67abfc68bb323f86447bab79cc0", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" + "role": "Developer" + } ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", + "description": "Library for handling version information and constraints", "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.1" + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2023-06-29T20:46:06+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.2", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/db1497ec8dd382e82c962f7abbe0320e4882ee4e", - "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.19.1 || ^5.1.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" + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { "phpunit/phpunit": "^10.1" @@ -3755,7 +2948,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -3784,7 +2977,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/10.1.2" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -3792,20 +2985,20 @@ "type": "github" } ], - "time": "2023-05-22T09:04:27+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -3845,7 +3038,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -3853,7 +3046,7 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -3920,16 +3113,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -3967,7 +3160,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -3975,7 +3169,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -4038,16 +3232,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.2.3", + "version": "10.5.40", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "35c8cac1734ede2ae354a6644f7088356ff5b08e" + "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/35c8cac1734ede2ae354a6644f7088356ff5b08e", - "reference": "35c8cac1734ede2ae354a6644f7088356ff5b08e", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e6ddda95af52f69c1e0c7b4f977cccb58048798c", + "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c", "shasum": "" }, "require": { @@ -4057,26 +3251,26 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -4087,7 +3281,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.2-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -4119,7 +3313,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.40" }, "funding": [ { @@ -4135,67 +3329,7 @@ "type": "tidelift" } ], - "time": "2023-06-30T06:17:38+00:00" - }, - { - "name": "psalm/plugin-phpunit", - "version": "0.18.4", - "source": { - "type": "git", - "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc", - "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc", - "shasum": "" - }, - "require": { - "composer/package-versions-deprecated": "^1.10", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "ext-simplexml": "*", - "php": "^7.1 || ^8.0", - "vimeo/psalm": "dev-master || dev-4.x || ^4.7.1 || ^5@beta || ^5.0" - }, - "conflict": { - "phpunit/phpunit": "<7.5" - }, - "require-dev": { - "codeception/codeception": "^4.0.3", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", - "squizlabs/php_codesniffer": "^3.3.1", - "weirdan/codeception-psalm-module": "^0.11.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" - }, - "type": "psalm-plugin", - "extra": { - "psalm": { - "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" - } - }, - "autoload": { - "psr-4": { - "Psalm\\PhpUnitPlugin\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Brown", - "email": "github@muglug.com" - } - ], - "description": "Psalm plugin for PHPUnit", - "support": { - "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.4" - }, - "time": "2022-12-03T07:47:07+00:00" + "time": "2024-12-21T05:49:06+00:00" }, { "name": "psr/http-server-handler", @@ -4310,68 +3444,18 @@ }, "time": "2023-04-11T06:14:47+00:00" }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, { "name": "sebastian/cli-parser", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { @@ -4406,7 +3490,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -4414,7 +3499,7 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", @@ -4529,16 +3614,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { @@ -4549,7 +3634,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -4593,7 +3678,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -4601,24 +3687,24 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -4627,7 +3713,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -4650,7 +3736,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -4658,20 +3745,20 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "5.0.3", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", - "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { @@ -4679,12 +3766,12 @@ }, "require-dev": { "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -4717,7 +3804,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -4725,20 +3812,20 @@ "type": "github" } ], - "time": "2023-05-01T07:48:21+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { @@ -4753,7 +3840,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -4781,7 +3868,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -4789,20 +3876,20 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { @@ -4816,7 +3903,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -4858,7 +3945,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -4866,20 +3954,20 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.0", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "aab257c712de87b90194febd52e4d184551c2d44" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", - "reference": "aab257c712de87b90194febd52e4d184551c2d44", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { @@ -4913,13 +4001,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -4927,24 +4016,24 @@ "type": "github" } ], - "time": "2023-02-03T07:07:38+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -4976,7 +4065,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/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -4984,7 +4074,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -5272,40 +4362,40 @@ }, { "name": "slim/psr7", - "version": "1.6.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/slimphp/Slim-Psr7.git", - "reference": "72d2b2bac94ab4575d369f605dbfafbe168d3163" + "reference": "753e9646def5ff4db1a06e5cf4ef539bfd30f467" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/72d2b2bac94ab4575d369f605dbfafbe168d3163", - "reference": "72d2b2bac94ab4575d369f605dbfafbe168d3163", + "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/753e9646def5ff4db1a06e5cf4ef539bfd30f467", + "reference": "753e9646def5ff4db1a06e5cf4ef539bfd30f467", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.5", - "php": "^7.4 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "php": "^8.0", + "psr/http-factory": "^1.1", + "psr/http-message": "^1.0 || ^2.0", "ralouphie/getallheaders": "^3.0", - "symfony/polyfill-php80": "^1.26" + "symfony/polyfill-php80": "^1.29" }, "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "psr/http-factory-implementation": "^1.0", + "psr/http-message-implementation": "^1.0 || ^2.0" }, "require-dev": { - "adriansuter/php-autoload-override": "^1.3", + "adriansuter/php-autoload-override": "^1.4", "ext-json": "*", - "http-interop/http-factory-tests": "^0.9.0", - "php-http/psr7-integration-tests": "1.1", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.8", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.7" + "http-interop/http-factory-tests": "^1.1.0", + "php-http/psr7-integration-tests": "1.3.0", + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.2", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^9.6", + "squizlabs/php_codesniffer": "^3.10" }, "type": "library", "autoload": { @@ -5348,22 +4438,22 @@ ], "support": { "issues": "https://github.com/slimphp/Slim-Psr7/issues", - "source": "https://github.com/slimphp/Slim-Psr7/tree/1.6.1" + "source": "https://github.com/slimphp/Slim-Psr7/tree/1.7.0" }, - "time": "2023-04-17T16:02:20+00:00" + "time": "2024-06-08T14:48:17+00:00" }, { "name": "slim/slim", - "version": "4.11.0", + "version": "4.14.0", "source": { "type": "git", "url": "https://github.com/slimphp/Slim.git", - "reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7" + "reference": "5943393b88716eb9e82c4161caa956af63423913" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim/zipball/b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7", - "reference": "b0f4ca393ea037be9ac7292ba7d0a34d18bac0c7", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/5943393b88716eb9e82c4161caa956af63423913", + "reference": "5943393b88716eb9e82c4161caa956af63423913", "shasum": "" }, "require": { @@ -5371,28 +4461,29 @@ "nikic/fast-route": "^1.3", "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-factory": "^1.1", + "psr/http-message": "^1.1 || ^2.0", "psr/http-server-handler": "^1.0", "psr/http-server-middleware": "^1.0", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "require-dev": { - "adriansuter/php-autoload-override": "^1.3", + "adriansuter/php-autoload-override": "^1.4", "ext-simplexml": "*", - "guzzlehttp/psr7": "^2.4", - "httpsoft/http-message": "^1.0", - "httpsoft/http-server-request": "^1.0", - "laminas/laminas-diactoros": "^2.17", - "nyholm/psr7": "^1.5", - "nyholm/psr7-server": "^1.0", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.8", - "phpunit/phpunit": "^9.5", - "slim/http": "^1.2", - "slim/psr7": "^1.5", - "squizlabs/php_codesniffer": "^3.7" + "guzzlehttp/psr7": "^2.6", + "httpsoft/http-message": "^1.1", + "httpsoft/http-server-request": "^1.1", + "laminas/laminas-diactoros": "^2.17 || ^3", + "nyholm/psr7": "^1.8", + "nyholm/psr7-server": "^1.1", + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.1", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^9.6", + "slim/http": "^1.3", + "slim/psr7": "^1.6", + "squizlabs/php_codesniffer": "^3.10", + "vimeo/psalm": "^5.24" }, "suggest": { "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", @@ -5465,96 +4556,30 @@ "type": "tidelift" } ], - "time": "2022-11-06T16:33:39+00:00" - }, - { - "name": "spatie/array-to-xml", - "version": "3.1.6", - "source": { - "type": "git", - "url": "https://github.com/spatie/array-to-xml.git", - "reference": "e210b98957987c755372465be105d32113f339a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/e210b98957987c755372465be105d32113f339a4", - "reference": "e210b98957987c755372465be105d32113f339a4", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": "^8.0" - }, - "require-dev": { - "mockery/mockery": "^1.2", - "pestphp/pest": "^1.21", - "spatie/pest-plugin-snapshots": "^1.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\ArrayToXml\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://freek.dev", - "role": "Developer" - } - ], - "description": "Convert an array to xml", - "homepage": "https://github.com/spatie/array-to-xml", - "keywords": [ - "array", - "convert", - "xml" - ], - "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.1.6" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2023-05-11T14:04:07+00:00" + "time": "2024-06-13T08:54:48+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "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/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5595,7 +4620,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -5611,24 +4636,24 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v6.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "url": "https://api.github.com/repos/symfony/process/zipball/d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", + "reference": "d34b22ba9390ec19d2dd966c40aa9e8462f27a7e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -5656,7 +4681,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.0" + "source": "https://github.com/symfony/process/tree/v7.2.0" }, "funding": [ { @@ -5672,20 +4697,20 @@ "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2024-11-06T14:24:19+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -5714,7 +4739,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.3" }, "funding": [ { @@ -5722,7 +4747,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" }, { "name": "tuupola/callable-handler", @@ -5855,33 +4880,33 @@ }, { "name": "tuupola/slim-basic-auth", - "version": "3.3.1", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/tuupola/slim-basic-auth.git", - "reference": "18e49c18f5648b05bb6169d166ccb6f797f0fbc4" + "reference": "4f3061cd1632a28aa7342495011b3467fe0fe1d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tuupola/slim-basic-auth/zipball/18e49c18f5648b05bb6169d166ccb6f797f0fbc4", - "reference": "18e49c18f5648b05bb6169d166ccb6f797f0fbc4", + "url": "https://api.github.com/repos/tuupola/slim-basic-auth/zipball/4f3061cd1632a28aa7342495011b3467fe0fe1d1", + "reference": "4f3061cd1632a28aa7342495011b3467fe0fe1d1", "shasum": "" }, "require": { - "php": "^7.1|^8.0", - "psr/http-message": "^1.0.1", + "php": "^7.2|^8.0", + "psr/http-message": "^1.0.1|^2.0", "psr/http-server-middleware": "^1.0", "tuupola/callable-handler": "^0.3.0|^0.4.0|^1.0", "tuupola/http-factory": "^0.4.0|^1.0.2" }, "require-dev": { "equip/dispatch": "^2.0", - "overtrue/phplint": "^2.0.2", - "phpstan/phpstan": "^0.12.43", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "squizlabs/php_codesniffer": "^3.3.2", - "symfony/process": "^3.3", - "zendframework/zend-diactoros": "^1.3|^2.0" + "laminas/laminas-diactoros": "^1.3|^2.0|^3.0", + "overtrue/phplint": "^3.0|^4.0|^5.0|^6.0", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^8.5.30|^9.0", + "rector/rector": "^0.14.5", + "symplify/easy-coding-standard": "^11.1" }, "type": "library", "autoload": { @@ -5910,179 +4935,9 @@ ], "support": { "issues": "https://github.com/tuupola/slim-basic-auth/issues", - "source": "https://github.com/tuupola/slim-basic-auth/tree/3.3.1" - }, - "funding": [ - { - "url": "https://github.com/tuupola", - "type": "github" - } - ], - "time": "2020-10-28T15:22:12+00:00" - }, - { - "name": "vimeo/psalm", - "version": "5.13.1", - "source": { - "type": "git", - "url": "https://github.com/vimeo/psalm.git", - "reference": "086b94371304750d1c673315321a55d15fc59015" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/086b94371304750d1c673315321a55d15fc59015", - "reference": "086b94371304750d1c673315321a55d15fc59015", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.4.2", - "amphp/byte-stream": "^1.5", - "composer-runtime-api": "^2", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^2.0 || ^3.0", - "dnoegel/php-xdg-base-dir": "^0.1.1", - "ext-ctype": "*", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.1", - "felixfbecker/language-server-protocol": "^1.5.2", - "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.14", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", - "sebastian/diff": "^4.0 || ^5.0", - "spatie/array-to-xml": "^2.17.0 || ^3.0", - "symfony/console": "^4.1.6 || ^5.0 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0" - }, - "provide": { - "psalm/psalm": "self.version" - }, - "require-dev": { - "amphp/phpunit-util": "^2.0", - "bamarni/composer-bin-plugin": "^1.4", - "brianium/paratest": "^6.9", - "ext-curl": "*", - "mockery/mockery": "^1.5", - "nunomaduro/mock-final-classes": "^1.1", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpdoc-parser": "^1.6", - "phpunit/phpunit": "^9.6", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.6", - "symfony/process": "^4.4 || ^5.0 || ^6.0" - }, - "suggest": { - "ext-curl": "In order to send data to shepherd", - "ext-igbinary": "^2.0.5 is required, used to serialize caching data" - }, - "bin": [ - "psalm", - "psalm-language-server", - "psalm-plugin", - "psalm-refactor", - "psalter" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev", - "dev-4.x": "4.x-dev", - "dev-3.x": "3.x-dev", - "dev-2.x": "2.x-dev", - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psalm\\": "src/Psalm/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Brown" - } - ], - "description": "A static analysis tool for finding errors in PHP applications", - "keywords": [ - "code", - "inspection", - "php", - "static analysis" - ], - "support": { - "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.13.1" - }, - "time": "2023-06-27T16:39:49+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/tuupola/slim-basic-auth/tree/3.4.0" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2024-10-01T09:13:06+00:00" } ], "aliases": [], @@ -6091,9 +4946,9 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=8.1", + "php": ">=8.3", "ext-json": "*" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/features/file-uploads.feature b/features/file-uploads.feature index 812af76..dcca18a 100644 --- a/features/file-uploads.feature +++ b/features/file-uploads.feature @@ -39,7 +39,7 @@ Feature: Test file uploading }, "file2": { "name": "attach-files.feature", - "type": "", + "type": "application/octet-stream", "tmp_name": "@regExp(/.*/)", "error": 0, "size": "@regExp(/[0-9]+/)" diff --git a/psalm.xml b/psalm.xml deleted file mode 100644 index e0c1471..0000000 --- a/psalm.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 6888397c370b86f8a6cb0b87ba13f3c3b5e2fda4 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 11:04:14 +0100 Subject: [PATCH 02/15] Test on PHP 8.4 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0ae8ac..e7999c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - php: ['8.3'] + php: ['8.3', '8.4'] name: Validate and test on PHP ${{ matrix.php }} steps: - uses: actions/checkout@v4 From 9c9eb67ff41f573728a6bbff4092c3a54b0770eb Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 11:08:56 +0100 Subject: [PATCH 03/15] Silence php-cs-fixer issue --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7999c1..c24f9ff 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,6 +52,8 @@ jobs: - name: Check coding standard run: php-cs-fixer fix --dry-run --diff + env: + PHP_CS_FIXER_IGNORE_ENV: 1 - uses: actions/upload-artifact@v4 if: always() From 8b11c6e7f26921172fc619cd380adbc459811955 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 11:17:22 +0100 Subject: [PATCH 04/15] Bump phpunit and fix issues Will fix all deprecation issues at a later stage --- composer.json | 2 +- composer.lock | 505 ++++++++++-------- .../Matcher/ArrayLengthTest.php | 12 +- .../Matcher/ArrayMaxLengthTest.php | 4 +- .../Matcher/ArrayMinLengthTest.php | 4 +- tests/Context/ApiContextTest.php | 4 - 6 files changed, 294 insertions(+), 237 deletions(-) diff --git a/composer.json b/composer.json index 2c48f77..de5d8fe 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ }, "require-dev": { "imbo/imbo-coding-standard": "^2.0", - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^11.5", "slim/psr7": "^1.3", "slim/slim": "^4.7", "symfony/process": "^7.2", diff --git a/composer.lock b/composer.lock index e1ebca0..01a9b44 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": "7d287946ca6e4721bcbbc5568f39f63c", + "content-hash": "b1f6de0c793f8a8d721d76a83bcf8ca9", "packages": [ { "name": "beberlei/assert", @@ -2911,35 +2911,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.16", + "version": "11.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" + "reference": "418c59fd080954f8c4aa5631d9502ecda2387118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/418c59fd080954f8c4aa5631d9502ecda2387118", + "reference": "418c59fd080954f8c4aa5631d9502ecda2387118", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", + "nikic/php-parser": "^5.3.1", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-text-template": "^4.0.1", + "sebastian/code-unit-reverse-lookup": "^4.0.1", + "sebastian/complexity": "^4.0.1", + "sebastian/environment": "^7.2.0", + "sebastian/lines-of-code": "^3.0.1", + "sebastian/version": "^5.0.2", "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^10.1" + "phpunit/phpunit": "^11.5.0" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -2948,7 +2948,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1.x-dev" + "dev-main": "11.0.x-dev" } }, "autoload": { @@ -2977,7 +2977,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/10.1.16" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.8" }, "funding": [ { @@ -2985,32 +2985,32 @@ "type": "github" } ], - "time": "2024-08-22T04:31:57+00:00" + "time": "2024-12-11T12:34:27+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.1.0", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/118cfaaa8bc5aef3287bf315b6060b1174754af6", + "reference": "118cfaaa8bc5aef3287bf315b6060b1174754af6", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3038,7 +3038,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.0" }, "funding": [ { @@ -3046,28 +3046,28 @@ "type": "github" } ], - "time": "2023-08-31T06:24:48+00:00" + "time": "2024-08-27T05:02:59+00:00" }, { "name": "phpunit/php-invoker", - "version": "4.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-pcntl": "*" @@ -3075,7 +3075,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -3101,7 +3101,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.1" }, "funding": [ { @@ -3109,32 +3110,32 @@ "type": "github" } ], - "time": "2023-02-03T06:56:09+00:00" + "time": "2024-07-03T05:07:44+00:00" }, { "name": "phpunit/php-text-template", - "version": "3.0.1", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3161,7 +3162,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.1" }, "funding": [ { @@ -3169,32 +3170,32 @@ "type": "github" } ], - "time": "2023-08-31T14:07:24+00:00" + "time": "2024-07-03T05:08:43+00:00" }, { "name": "phpunit/php-timer", - "version": "6.0.0", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -3220,7 +3221,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.1" }, "funding": [ { @@ -3228,20 +3230,20 @@ "type": "github" } ], - "time": "2023-02-03T06:57:52+00:00" + "time": "2024-07-03T05:09:35+00:00" }, { "name": "phpunit/phpunit", - "version": "10.5.40", + "version": "11.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c" + "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e6ddda95af52f69c1e0c7b4f977cccb58048798c", - "reference": "e6ddda95af52f69c1e0c7b4f977cccb58048798c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/153d0531b9f7e883c5053160cad6dd5ac28140b3", + "reference": "153d0531b9f7e883c5053160cad6dd5ac28140b3", "shasum": "" }, "require": { @@ -3254,23 +3256,23 @@ "myclabs/deep-copy": "^1.12.1", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", - "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", - "sebastian/diff": "^5.1.1", - "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0.8", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-invoker": "^5.0.1", + "phpunit/php-text-template": "^4.0.1", + "phpunit/php-timer": "^7.0.1", + "sebastian/cli-parser": "^3.0.2", + "sebastian/code-unit": "^3.0.2", + "sebastian/comparator": "^6.2.1", + "sebastian/diff": "^6.0.2", + "sebastian/environment": "^7.2.0", + "sebastian/exporter": "^6.3.0", + "sebastian/global-state": "^7.0.2", + "sebastian/object-enumerator": "^6.0.1", + "sebastian/type": "^5.1.0", + "sebastian/version": "^5.0.2", + "staabm/side-effects-detector": "^1.0.5" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -3281,7 +3283,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.5-dev" + "dev-main": "11.5-dev" } }, "autoload": { @@ -3313,7 +3315,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.40" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.2" }, "funding": [ { @@ -3329,7 +3331,7 @@ "type": "tidelift" } ], - "time": "2024-12-21T05:49:06+00:00" + "time": "2024-12-21T05:51:08+00:00" }, { "name": "psr/http-server-handler", @@ -3446,28 +3448,28 @@ }, { "name": "sebastian/cli-parser", - "version": "2.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -3491,7 +3493,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.2" }, "funding": [ { @@ -3499,32 +3501,32 @@ "type": "github" } ], - "time": "2024-03-02T07:12:49+00:00" + "time": "2024-07-03T04:41:36+00:00" }, { "name": "sebastian/code-unit", - "version": "2.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", + "reference": "ee88b0cdbe74cf8dd3b54940ff17643c0d6543ca", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -3547,7 +3549,8 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.2" }, "funding": [ { @@ -3555,32 +3558,32 @@ "type": "github" } ], - "time": "2023-02-03T06:58:43+00:00" + "time": "2024-12-12T09:59:06+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3602,7 +3605,8 @@ "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/3.0.0" + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.1" }, "funding": [ { @@ -3610,36 +3614,36 @@ "type": "github" } ], - "time": "2023-02-03T06:59:15+00:00" + "time": "2024-07-03T04:45:54+00:00" }, { "name": "sebastian/comparator", - "version": "5.0.3", + "version": "6.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" + "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739", + "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^10.5" + "phpunit/phpunit": "^11.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.2-dev" } }, "autoload": { @@ -3679,7 +3683,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1" }, "funding": [ { @@ -3687,33 +3691,33 @@ "type": "github" } ], - "time": "2024-10-18T14:56:07+00:00" + "time": "2024-10-31T05:30:08+00:00" }, { "name": "sebastian/complexity", - "version": "3.2.0", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -3737,7 +3741,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.1" }, "funding": [ { @@ -3745,33 +3749,33 @@ "type": "github" } ], - "time": "2023-12-21T08:37:17+00:00" + "time": "2024-07-03T04:49:50+00:00" }, { "name": "sebastian/diff", - "version": "5.1.1", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -3804,7 +3808,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.2" }, "funding": [ { @@ -3812,27 +3816,27 @@ "type": "github" } ], - "time": "2024-03-02T07:15:17+00:00" + "time": "2024-07-03T04:53:05+00:00" }, { "name": "sebastian/environment", - "version": "6.1.0", + "version": "7.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-posix": "*" @@ -3840,7 +3844,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.1-dev" + "dev-main": "7.2-dev" } }, "autoload": { @@ -3868,7 +3872,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" }, "funding": [ { @@ -3876,34 +3880,34 @@ "type": "github" } ], - "time": "2024-03-23T08:47:14+00:00" + "time": "2024-07-03T04:54:44+00:00" }, { "name": "sebastian/exporter", - "version": "5.1.2", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/3473f61172093b2da7de1fb5782e1f24cc036dc3", + "reference": "3473f61172093b2da7de1fb5782e1f24cc036dc3", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -3946,7 +3950,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.0" }, "funding": [ { @@ -3954,35 +3958,35 @@ "type": "github" } ], - "time": "2024-03-02T07:17:12+00:00" + "time": "2024-12-05T09:17:50+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.2", + "version": "7.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -4008,7 +4012,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.2" }, "funding": [ { @@ -4016,33 +4020,33 @@ "type": "github" } ], - "time": "2024-03-02T07:19:19+00:00" + "time": "2024-07-03T04:57:36+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.2", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -4066,7 +4070,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.1" }, "funding": [ { @@ -4074,34 +4078,34 @@ "type": "github" } ], - "time": "2023-12-21T08:38:20+00:00" + "time": "2024-07-03T04:58:38+00:00" }, { "name": "sebastian/object-enumerator", - "version": "5.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -4123,7 +4127,8 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.1" }, "funding": [ { @@ -4131,32 +4136,32 @@ "type": "github" } ], - "time": "2023-02-03T07:08:32+00:00" + "time": "2024-07-03T05:00:13+00:00" }, { "name": "sebastian/object-reflector", - "version": "3.0.0", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -4178,7 +4183,8 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.1" }, "funding": [ { @@ -4186,32 +4192,32 @@ "type": "github" } ], - "time": "2023-02-03T07:06:18+00:00" + "time": "2024-07-03T05:01:32+00:00" }, { "name": "sebastian/recursion-context", - "version": "5.0.0", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/694d156164372abbd149a4b85ccda2e4670c0e16", + "reference": "694d156164372abbd149a4b85ccda2e4670c0e16", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -4241,7 +4247,8 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.2" }, "funding": [ { @@ -4249,32 +4256,32 @@ "type": "github" } ], - "time": "2023-02-03T07:05:40+00:00" + "time": "2024-07-03T05:10:34+00:00" }, { "name": "sebastian/type", - "version": "4.0.0", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/461b9c5da241511a2a0e8f240814fb23ce5c0aac", + "reference": "461b9c5da241511a2a0e8f240814fb23ce5c0aac", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^11.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -4297,7 +4304,8 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.1.0" }, "funding": [ { @@ -4305,29 +4313,29 @@ "type": "github" } ], - "time": "2023-02-03T07:10:45+00:00" + "time": "2024-09-17T13:12:04+00:00" }, { "name": "sebastian/version", - "version": "4.0.1", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -4350,7 +4358,8 @@ "homepage": "https://github.com/sebastianbergmann/version", "support": { "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.2" }, "funding": [ { @@ -4358,7 +4367,7 @@ "type": "github" } ], - "time": "2023-02-07T11:34:05+00:00" + "time": "2024-10-09T05:16:32+00:00" }, { "name": "slim/psr7", @@ -4558,6 +4567,58 @@ ], "time": "2024-06-13T08:54:48+00:00" }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+00:00" + }, { "name": "symfony/polyfill-php80", "version": "v1.31.0", diff --git a/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php b/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php index 9aa11c6..7a5c992 100644 --- a/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php +++ b/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php @@ -44,12 +44,12 @@ public static function getValuesThatFail(): array { return [ [ - 'array' => [1, 2], + 'list' => [1, 2], 'maxLength' => 1, 'message' => 'Expected array to have exactly 1 entries, actual length: 2.', ], [ - 'array' => [], + 'list' => [], 'maxLength' => 2, 'message' => 'Expected array to have exactly 2 entries, actual length: 0.', ], @@ -60,12 +60,12 @@ public static function getValuesThatFail(): array * @dataProvider getArraysAndLengths * @covers ::__invoke */ - public function testCanMatchLengthOfArrays(array $array, int $length): void + public function testCanMatchLengthOfArrays(array $list, int $length): void { $matcher = $this->matcher; $this->assertTrue( - $matcher($array, $length), + $matcher($list, $length), 'Matcher is supposed to return true.', ); } @@ -85,11 +85,11 @@ public function testThrowsExceptionWhenMatchingLengthAgainstAnythingOtherThanAnA * @dataProvider getValuesThatFail * @covers ::__invoke */ - public function testThrowsExceptionWhenLengthIsNotCorrect(array $array, int $length, string $message): void + public function testThrowsExceptionWhenLengthIsNotCorrect(array $list, int $maxLength, string $message): void { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage($message); $matcher = $this->matcher; - $matcher($array, $length); + $matcher($list, $maxLength); } } diff --git a/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php b/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php index 02bbced..18e30c4 100644 --- a/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php +++ b/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php @@ -60,11 +60,11 @@ public static function getValuesThatFail(): array * @dataProvider getArraysAndLengths * @covers ::__invoke */ - public function testCanMatchMaxLengthOfArrays(array $array, int $length): void + public function testCanMatchMaxLengthOfArrays(array $list, int $length): void { $matcher = $this->matcher; $this->assertTrue( - $matcher($array, $length), + $matcher($list, $length), 'Matcher is supposed to return true.', ); } diff --git a/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php b/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php index 77824a1..2862916 100644 --- a/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php +++ b/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php @@ -60,11 +60,11 @@ public static function getValuesThatFail(): array * @dataProvider getArraysAndMinLengths * @covers ::__invoke */ - public function testCanMatchMinLengthOfArrays(array $array, int $min): void + public function testCanMatchMinLengthOfArrays(array $list, int $min): void { $matcher = $this->matcher; $this->assertTrue( - $matcher($array, $min), + $matcher($list, $min), 'Matcher is supposed to return true.', ); } diff --git a/tests/Context/ApiContextTest.php b/tests/Context/ApiContextTest.php index a7d94e2..33630a8 100644 --- a/tests/Context/ApiContextTest.php +++ b/tests/Context/ApiContextTest.php @@ -99,19 +99,15 @@ public static function getResponseCodes(): array return [ [ 'code' => 200, - 'others' => [300, 400, 500], ], [ 'code' => 300, - 'others' => [200, 400, 500], ], [ 'code' => 400, - 'others' => [200, 300, 500], ], [ 'code' => 500, - 'others' => [200, 300, 400], ], ]; } From 26d342d3810773d8a7767c9194be4f180096c8d6 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 12:21:17 +0100 Subject: [PATCH 05/15] Replace docblocks with attributes where applicable --- composer.json | 1 - .../Matcher/ArrayLengthTest.php | 19 +- .../Matcher/ArrayMaxLengthTest.php | 19 +- .../Matcher/ArrayMinLengthTest.php | 19 +- .../Matcher/GreaterThanTest.php | 22 +- .../Matcher/JWTTest.php | 22 +- .../Matcher/LessThanTest.php | 22 +- .../Matcher/RegExpTest.php | 14 +- .../Matcher/VariableTypeTest.php | 20 +- tests/ArrayContainsComparatorTest.php | 103 +---- tests/Context/ApiContextTest.php | 427 +----------------- .../ApiClientAwareInitializerTest.php | 9 +- ...ContainsComparatorAwareInitializerTest.php | 11 +- .../ArrayContainsComparatorExceptionTest.php | 11 +- .../BehatApiExtensionTest.php | 12 +- 15 files changed, 75 insertions(+), 656 deletions(-) diff --git a/composer.json b/composer.json index de5d8fe..c3f2de6 100644 --- a/composer.json +++ b/composer.json @@ -48,7 +48,6 @@ "ci": [ "@phpunit", "@behat", - "@sa", "@cs" ], "test": [ diff --git a/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php b/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php index 7a5c992..72b30b4 100644 --- a/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php +++ b/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php @@ -2,11 +2,11 @@ namespace Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\ArrayLength - */ +#[CoversClass(ArrayLength::class)] class ArrayLengthTest extends TestCase { private ArrayLength $matcher; @@ -56,10 +56,7 @@ public static function getValuesThatFail(): array ]; } - /** - * @dataProvider getArraysAndLengths - * @covers ::__invoke - */ + #[DataProvider('getArraysAndLengths')] public function testCanMatchLengthOfArrays(array $list, int $length): void { $matcher = $this->matcher; @@ -70,9 +67,6 @@ public function testCanMatchLengthOfArrays(array $list, int $length): void ); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionWhenMatchingLengthAgainstAnythingOtherThanAnArray(): void { $this->expectException(InvalidArgumentException::class); @@ -81,10 +75,7 @@ public function testThrowsExceptionWhenMatchingLengthAgainstAnythingOtherThanAnA $matcher(['foo' => 'bar'], 123); } - /** - * @dataProvider getValuesThatFail - * @covers ::__invoke - */ + #[DataProvider('getValuesThatFail')] public function testThrowsExceptionWhenLengthIsNotCorrect(array $list, int $maxLength, string $message): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php b/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php index 18e30c4..8066c63 100644 --- a/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php +++ b/tests/ArrayContainsComparator/Matcher/ArrayMaxLengthTest.php @@ -2,11 +2,11 @@ namespace Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\ArrayMaxLength - */ +#[CoversClass(ArrayMaxLength::class)] class ArrayMaxLengthTest extends TestCase { private ArrayMaxLength $matcher; @@ -56,10 +56,7 @@ public static function getValuesThatFail(): array ]; } - /** - * @dataProvider getArraysAndLengths - * @covers ::__invoke - */ + #[DataProvider('getArraysAndLengths')] public function testCanMatchMaxLengthOfArrays(array $list, int $length): void { $matcher = $this->matcher; @@ -69,9 +66,6 @@ public function testCanMatchMaxLengthOfArrays(array $list, int $length): void ); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionWhenMatchingAgainstAnythingOtherThanAnArray(): void { $this->expectException(InvalidArgumentException::class); @@ -80,10 +74,7 @@ public function testThrowsExceptionWhenMatchingAgainstAnythingOtherThanAnArray() $matcher(['foo' => 'bar'], 123); } - /** - * @dataProvider getValuesThatFail - * @covers ::__invoke - */ + #[DataProvider('getValuesThatFail')] public function testThrowsExceptionWhenLengthIsTooShort(array $array, int $maxLength, string $message): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php b/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php index 2862916..eb7c64e 100644 --- a/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php +++ b/tests/ArrayContainsComparator/Matcher/ArrayMinLengthTest.php @@ -2,11 +2,11 @@ namespace Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\ArrayMinLength - */ +#[CoversClass(ArrayMinLength::class)] class ArrayMinLengthTest extends TestCase { private ArrayMinLength $matcher; @@ -56,10 +56,7 @@ public static function getValuesThatFail(): array ]; } - /** - * @dataProvider getArraysAndMinLengths - * @covers ::__invoke - */ + #[DataProvider('getArraysAndMinLengths')] public function testCanMatchMinLengthOfArrays(array $list, int $min): void { $matcher = $this->matcher; @@ -69,9 +66,6 @@ public function testCanMatchMinLengthOfArrays(array $list, int $min): void ); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionWhenMatchingAgainstAnythingOtherThanAnArray(): void { $this->expectException(InvalidArgumentException::class); @@ -80,10 +74,7 @@ public function testThrowsExceptionWhenMatchingAgainstAnythingOtherThanAnArray() $matcher(['foo' => 'bar'], 123); } - /** - * @dataProvider getValuesThatFail - * @covers ::__invoke - */ + #[DataProvider('getValuesThatFail')] public function testThrowsExceptionWhenLengthIsTooLong(array $array, int $minLength, string $message): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/ArrayContainsComparator/Matcher/GreaterThanTest.php b/tests/ArrayContainsComparator/Matcher/GreaterThanTest.php index a41a657..bdf7098 100644 --- a/tests/ArrayContainsComparator/Matcher/GreaterThanTest.php +++ b/tests/ArrayContainsComparator/Matcher/GreaterThanTest.php @@ -2,11 +2,11 @@ namespace Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\GreaterThan - */ +#[CoversClass(GreaterThan::class)] class GreaterThanTest extends TestCase { private GreaterThan $matcher; @@ -66,10 +66,7 @@ public static function getFailingValues(): array ]; } - /** - * @dataProvider getValuesForMatching - * @covers ::__invoke - */ + #[DataProvider('getValuesForMatching')] public function testCanCompareValuesOfType(int|float|string $number, int|float|string $min): void { $matcher = $this->matcher; @@ -79,9 +76,6 @@ public function testCanCompareValuesOfType(int|float|string $number, int|float|s ); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionIfNumberIsNotNumeric(): void { $matcher = $this->matcher; @@ -90,9 +84,6 @@ public function testThrowsExceptionIfNumberIsNotNumeric(): void $matcher('foo', 123); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionIfMinimumNumberIsNotNumeric(): void { $matcher = $this->matcher; @@ -101,10 +92,7 @@ public function testThrowsExceptionIfMinimumNumberIsNotNumeric(): void $matcher(123, 'foo'); } - /** - * @dataProvider getFailingValues - * @covers ::__invoke - */ + #[DataProvider('getFailingValues')] public function testThrowsExceptionWhenComparisonFails(int|string|float $number, int|string|float $min, string $errorMessage): void { $matcher = $this->matcher; diff --git a/tests/ArrayContainsComparator/Matcher/JWTTest.php b/tests/ArrayContainsComparator/Matcher/JWTTest.php index 5280567..2227e7d 100644 --- a/tests/ArrayContainsComparator/Matcher/JWTTest.php +++ b/tests/ArrayContainsComparator/Matcher/JWTTest.php @@ -4,11 +4,11 @@ use Imbo\BehatApiExtension\ArrayContainsComparator; use Imbo\BehatApiExtension\Exception\ArrayContainsComparatorException; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\JWT - */ +#[CoversClass(JWT::class)] class JWTTest extends TestCase { private JWT $matcher; @@ -45,9 +45,6 @@ public static function getJwt(): array ]; } - /** - * @covers ::__invoke - */ public function testThrowsExceptionWhenMatchingAgainstJwtThatDoesNotExist(): void { $matcher = $this->matcher; @@ -56,10 +53,6 @@ public function testThrowsExceptionWhenMatchingAgainstJwtThatDoesNotExist(): voi $matcher('some jwt', 'some name'); } - /** - * @covers ::addToken - * @covers ::__invoke - */ public function testThrowsExceptionWhenJwtDoesNotMatch(): void { $matcher = $this->matcher->addToken('some name', ['some' => 'data'], 'secret'); @@ -71,10 +64,7 @@ public function testThrowsExceptionWhenJwtDoesNotMatch(): void ); } - /** - * @covers ::__invoke - * @dataProvider getJwt - */ + #[DataProvider('getJwt')] public function testCanMatchJwt(string $jwt, string $name, array $payload, string $secret): void { $matcher = $this->matcher->addToken($name, $payload, $secret); @@ -84,10 +74,6 @@ public function testCanMatchJwt(string $jwt, string $name, array $payload, strin )); } - /** - * @covers ::__construct - * @covers ::__invoke - */ public function testThrowsExceptionWhenComparatorDoesNotReturnSuccess(): void { $comparator = $this->createConfiguredMock(ArrayContainsComparator::class, [ diff --git a/tests/ArrayContainsComparator/Matcher/LessThanTest.php b/tests/ArrayContainsComparator/Matcher/LessThanTest.php index c8db33e..68e4098 100644 --- a/tests/ArrayContainsComparator/Matcher/LessThanTest.php +++ b/tests/ArrayContainsComparator/Matcher/LessThanTest.php @@ -2,11 +2,11 @@ namespace Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\LessThan - */ +#[CoversClass(LessThan::class)] class LessThanTest extends TestCase { private LessThan $matcher; @@ -66,10 +66,7 @@ public static function getFailingValues(): array ]; } - /** - * @dataProvider getValuesForMatching - * @covers ::__invoke - */ + #[DataProvider('getValuesForMatching')] public function testCanCompareValuesOfType(int|string $number, int|string|float $max): void { $matcher = $this->matcher; @@ -79,9 +76,6 @@ public function testCanCompareValuesOfType(int|string $number, int|string|float ); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionIfNumberIsNotNumeric(): void { $matcher = $this->matcher; @@ -90,9 +84,6 @@ public function testThrowsExceptionIfNumberIsNotNumeric(): void $matcher('foo', 123); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionIfMaximumNumberIsNotNumeric(): void { $matcher = $this->matcher; @@ -101,10 +92,7 @@ public function testThrowsExceptionIfMaximumNumberIsNotNumeric(): void $matcher(123, 'foo'); } - /** - * @dataProvider getFailingValues - * @covers ::__invoke - */ + #[DataProvider('getFailingValues')] public function testThrowsExceptionWhenComparisonFails(int|float|string $number, int|float|string $max, string $errorMessage): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/ArrayContainsComparator/Matcher/RegExpTest.php b/tests/ArrayContainsComparator/Matcher/RegExpTest.php index b5b57ba..e5e4ec3 100644 --- a/tests/ArrayContainsComparator/Matcher/RegExpTest.php +++ b/tests/ArrayContainsComparator/Matcher/RegExpTest.php @@ -2,11 +2,11 @@ namespace Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\RegExp - */ +#[CoversClass(RegExp::class)] class RegExpTest extends TestCase { private RegExp $matcher; @@ -37,19 +37,13 @@ public static function getSubjectsAndPatterns(): array ]; } - /** - * @dataProvider getSubjectsAndPatterns - * @covers ::__invoke - */ + #[DataProvider('getSubjectsAndPatterns')] public function testCanMatchRegularExpressionPatternsAgainst(float|int|string $subject, string $pattern): void { $matcher = $this->matcher; $this->assertTrue($matcher($subject, $pattern)); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionIfPatternDoesNotMatchSubject(): void { $matcher = $this->matcher; diff --git a/tests/ArrayContainsComparator/Matcher/VariableTypeTest.php b/tests/ArrayContainsComparator/Matcher/VariableTypeTest.php index 4f5d11c..c39c4c2 100644 --- a/tests/ArrayContainsComparator/Matcher/VariableTypeTest.php +++ b/tests/ArrayContainsComparator/Matcher/VariableTypeTest.php @@ -2,11 +2,11 @@ namespace Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator\Matcher\VariableType - */ +#[CoversClass(VariableType::class)] class VariableTypeTest extends TestCase { private VariableType $matcher; @@ -158,11 +158,7 @@ public static function getInvalidMatches(): array ]; } - /** - * @dataProvider getValuesAndTypes - * @covers ::__invoke - * @covers ::normalizeTypes - */ + #[DataProvider('getValuesAndTypes')] public function testCanMatchValuesOfType(mixed $value, string $type): void { $matcher = $this->matcher; @@ -172,9 +168,6 @@ public function testCanMatchValuesOfType(mixed $value, string $type): void ); } - /** - * @covers ::__invoke - */ public function testThrowsExceptionWhenGivenInvalidType(): void { $matcher = $this->matcher; @@ -183,10 +176,7 @@ public function testThrowsExceptionWhenGivenInvalidType(): void $matcher('foo', 'resource'); } - /** - * @dataProvider getInvalidMatches - * @covers ::__invoke - */ + #[DataProvider('getInvalidMatches')] public function testThrowsExceptionWhenTypeOfValueDoesNotMatchExpectedType(mixed $value, string $type, string $message): void { $matcher = $this->matcher; diff --git a/tests/ArrayContainsComparatorTest.php b/tests/ArrayContainsComparatorTest.php index bcac929..25a299d 100644 --- a/tests/ArrayContainsComparatorTest.php +++ b/tests/ArrayContainsComparatorTest.php @@ -4,11 +4,11 @@ use Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use Imbo\BehatApiExtension\Exception\ArrayContainsComparatorException; use InvalidArgumentException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\ArrayContainsComparator - */ +#[CoversClass(ArrayContainsComparator::class)] class ArrayContainsComparatorTest extends TestCase { private ArrayContainsComparator $comparator; @@ -509,9 +509,6 @@ public static function getCustomFunctionsAndDataThatWillFail(): array ]; } - /** - * @covers ::compare - */ public function testThrowsExceptionWhenMatchingANumericallyIndexedArrayAgainstAnAssociativeArray(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -539,14 +536,7 @@ public function testThrowsExceptionWhenMatchingANumericallyIndexedArrayAgainstAn $this->comparator->compare([1, 2, 3], ['foo' => 'bar']); } - /** - * @dataProvider getDataForInArrayCheck - * @covers ::compare - * @covers ::inArray - * @covers ::compareValues - * @covers ::arrayIsList - * @covers ::arrayIsObject - */ + #[DataProvider('getDataForInArrayCheck')] public function testCanRecursivelyDoInArrayChecksWith(array $needle, array $haystack): void { $this->assertTrue( @@ -555,10 +545,6 @@ public function testCanRecursivelyDoInArrayChecksWith(array $needle, array $hays ); } - /** - * @covers ::compare - * @covers ::inArray - */ public function testThrowsExceptionWhenNeedleValueIsAListAndHaystackDoesNotContainAnyLists(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -584,10 +570,6 @@ public function testThrowsExceptionWhenNeedleValueIsAListAndHaystackDoesNotConta $this->comparator->compare([[1]], [1]); } - /** - * @covers ::compare - * @covers ::inArray - */ public function testThrowsExceptionWhenNeedleValueIsAnObjectAndHaystackDoesNotContainAnyObjects(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -621,10 +603,6 @@ public function testThrowsExceptionWhenNeedleValueIsAnObjectAndHaystackDoesNotCo ]); } - /** - * @covers ::compare - * @covers ::inArray - */ public function testThrowsExceptionWhenHaystackListIsMissingValuesFromNeedleList(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -668,10 +646,6 @@ public function testThrowsExceptionWhenHaystackListIsMissingValuesFromNeedleList ]); } - /** - * @covers ::compare - * @covers ::inArray - */ public function testThrowsExceptionWhenHaystackObjectIsMissingValuesFromNeedleObject(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -735,13 +709,7 @@ public function testThrowsExceptionWhenHaystackObjectIsMissingValuesFromNeedleOb ]); } - /** - * @dataProvider getDataForCompareCheck - * @covers ::compare - * @covers ::compareValues - * @covers ::arrayIsList - * @covers ::arrayIsObject - */ + #[DataProvider('getDataForCompareCheck')] public function testCanRecursivelyCompareAssociativeArraysWith(array $needle, array $haystack): void { $this->assertTrue( @@ -750,9 +718,6 @@ public function testCanRecursivelyCompareAssociativeArraysWith(array $needle, ar ); } - /** - * @covers ::compare - */ public function testThrowsExceptionWhenComparingObjectsAndKeyIsMissingFromHaystack(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -785,9 +750,6 @@ public function testThrowsExceptionWhenComparingObjectsAndKeyIsMissingFromHaysta ], ]); } - /** - * @covers ::compare - */ public function testThrowsExceptionWhenRegularStringKeyValueDoesNotMatch(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -817,10 +779,6 @@ public function testThrowsExceptionWhenRegularStringKeyValueDoesNotMatch(): void ]); } - /** - * @covers ::compare - * @covers ::compareValues - */ public function testCanRecursivelyMatchKeysInObjects(): void { $this->assertTrue( @@ -849,9 +807,6 @@ public function testCanRecursivelyMatchKeysInObjects(): void ); } - /** - * @covers ::compare - */ public function testThrowsExceptionWhenRegularStringKeyValueInDeepObjectDoesNotMatch(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -893,11 +848,7 @@ public function testThrowsExceptionWhenRegularStringKeyValueInDeepObjectDoesNotM ]); } - /** - * @dataProvider getDataForSpecificKeyInListChecks - * @covers ::compare - * @covers ::compareValues - */ + #[DataProvider('getDataForSpecificKeyInListChecks')] public function testCanCompareSpecificIndexesInAListWith(array $needle, array $haystack): void { $this->assertTrue( @@ -906,9 +857,6 @@ public function testCanCompareSpecificIndexesInAListWith(array $needle, array $h ); } - /** - * @covers ::compare - */ public function testThrowsExceptionWhenTargetingAListIndexWithAKeyThatDoesNotExist(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -938,10 +886,7 @@ public function testThrowsExceptionWhenTargetingAListIndexWithAKeyThatDoesNotExi ]); } - /** - * @dataProvider getDataForSpecificKeyInListChecksWithInvalidData - * @covers ::compare - */ + #[DataProvider('getDataForSpecificKeyInListChecksWithInvalidData')] public function testThrowsExceptionWhenTargetingAListIndexWithAKeyThatContains(array $needle, array $haystack, string $exceptionMessage): void { $this->expectException(ArrayContainsComparatorException::class); @@ -949,9 +894,6 @@ public function testThrowsExceptionWhenTargetingAListIndexWithAKeyThatContains(a $this->comparator->compare($needle, $haystack); } - /** - * @covers ::compare - */ public function testThrowsExceptionWhenTargetingAListIndexThatDoesNotExist(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -987,9 +929,6 @@ public function testThrowsExceptionWhenTargetingAListIndexThatDoesNotExist(): vo ]); } - /** - * @covers ::compare - */ public function testThrowsExceptionOnValueMismatchWhenTargetingSpecificIndexInList(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -1015,12 +954,7 @@ public function testThrowsExceptionOnValueMismatchWhenTargetingSpecificIndexInLi ]); } - /** - * @dataProvider getCustomFunctionsAndData - * @covers ::addFunction - * @covers ::compare - * @covers ::compareValues - */ + #[DataProvider('getCustomFunctionsAndData')] public function testCanUseCustomFunctionMatcher(string $function, callable $callback, array $needle, array $haystack): void { $this->assertTrue( @@ -1031,10 +965,6 @@ public function testCanUseCustomFunctionMatcher(string $function, callable $call ); } - /** - * @covers ::compare - * @covers ::compareValues - */ public function testPerformsARegularStringComparisonWhenSpecifiedCustomFunctionMatcherDoesNotExist(): void { $this->expectException(ArrayContainsComparatorException::class); @@ -1063,12 +993,7 @@ public function testPerformsARegularStringComparisonWhenSpecifiedCustomFunctionM ); } - /** - * @dataProvider getCustomFunctionsAndDataThatWillFail - * @covers ::addFunction - * @covers ::compare - * @covers ::compareValues - */ + #[DataProvider('getCustomFunctionsAndDataThatWillFail')] public function testThrowsExceptionWhenCustomFunctionMatcherFails(string $function, callable $callback, array $needle, array $haystack, string $errorMessage): void { $this->expectException(ArrayContainsComparatorException::class); @@ -1081,10 +1006,6 @@ public function testThrowsExceptionWhenCustomFunctionMatcherFails(string $functi ); } - /** - * @covers ::compare - * @covers ::inArray - */ public function testSupportsInArrayCheckWhenListsAreInADeepStructure(): void { $needle = [ @@ -1140,9 +1061,6 @@ public function testSupportsInArrayCheckWhenListsAreInADeepStructure(): void $this->assertTrue($this->comparator->compare($needle, $haystack)); } - /** - * @covers ::getMatcherFunction - */ public function testCanReturnRegisteredMatcherFunction(): void { $f = fn (): bool => true; @@ -1154,9 +1072,6 @@ public function testCanReturnRegisteredMatcherFunction(): void ); } - /** - * @covers ::getMatcherFunction - */ public function testThrowsExceptionWhenGettingFunctionThatDoesNotExist(): void { $this->expectException(InvalidArgumentException::class); diff --git a/tests/Context/ApiContextTest.php b/tests/Context/ApiContextTest.php index 33630a8..f067e61 100644 --- a/tests/Context/ApiContextTest.php +++ b/tests/Context/ApiContextTest.php @@ -15,6 +15,8 @@ use Imbo\BehatApiExtension\Exception\AssertionFailedException; use InvalidArgumentException; use OutOfRangeException; +use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use RuntimeException; @@ -46,9 +48,7 @@ function is_readable(string $path): bool return \is_readable($path); } -/** - * @coversDefaultClass Imbo\BehatApiExtension\Context\ApiContext - */ +#[CoversClass(ApiContext::class)] class ApiContextTest extends TestCase { private ApiContext $context; @@ -383,9 +383,6 @@ public static function getHttpMethodsForFormParametersTest(): array ]; } - /** - * @covers ::setRequestHeader - */ public function testCanSetRequestHeaders(): void { $this->mockHandler->append(new Response(200)); @@ -405,9 +402,6 @@ public function testCanSetRequestHeaders(): void $this->assertSame('bar', $request->getHeaderLine('bar')); } - /** - * @covers ::addRequestHeader - */ public function testCanAddRequestHeaders(): void { $this->mockHandler->append(new Response(200)); @@ -427,9 +421,6 @@ public function testCanAddRequestHeaders(): void $this->assertSame('foo, bar', $request->getHeaderLine('bar')); } - /** - * @covers ::setBasicAuth - */ public function testSupportBasicHttpAuthentication(): void { $this->mockHandler->append(new Response(200)); @@ -446,9 +437,6 @@ public function testSupportBasicHttpAuthentication(): void $this->assertSame('Basic dXNlcjpwYXNz', $request->getHeaderLine('authorization')); } - /** - * @covers ::oauthWithPasswordGrantInScope - */ public function testSupportOAuthWithPasswordGrant(): void { $this->mockHandler->append(new Response(200, [], '{"access_token": "some_access_token"}')); @@ -490,9 +478,6 @@ public function testSupportOAuthWithPasswordGrant(): void $this->assertSame('Bearer some_access_token', $request->getHeaderLine('authorization')); } - /** - * @covers ::oauthWithPasswordGrantInScope - */ public function testThrowsExceptionWhenOauthAccessTokenRequestFails(): void { $this->mockHandler->append(new Response(401, [], '{"error": "some_error"}')); @@ -502,9 +487,6 @@ public function testThrowsExceptionWhenOauthAccessTokenRequestFails(): void $this->context->oauthWithPasswordGrantInScope('/path', 'username', 'password', 'scope', 'client_id', 'client_secret'); } - /** - * @covers ::oauthWithPasswordGrantInScope - */ public function testThrowsExceptionWhenOauthAccessTokenIsMissingFromResponse(): void { $this->mockHandler->append(new Response(200, [], '{"foo": "bar"}')); @@ -514,10 +496,6 @@ public function testThrowsExceptionWhenOauthAccessTokenIsMissingFromResponse(): $this->context->oauthWithPasswordGrantInScope('/path', 'username', 'password', 'scope', 'client_id', 'client_secret'); } - /** - * @covers ::addMultipartFileToRequest - * @covers ::addMultipartPart - */ public function testCanAddMultipleMultipartFilesToTheRequest(): void { $this->mockHandler->append(new Response(200)); @@ -551,10 +529,6 @@ public function testCanAddMultipleMultipartFilesToTheRequest(): void } } - /** - * @covers ::setRequestMultipartFormParams - * @covers ::addMultipartPart - */ public function testCanAddMultipartFormDataParametersToTheRequest(): void { $this->mockHandler->append(new Response(200)); @@ -578,10 +552,6 @@ public function testCanAddMultipartFormDataParametersToTheRequest(): void $this->assertSame(sprintf('multipart/form-data; boundary=%s', $boundary), $request->getHeaderLine('Content-Type')); } - /** - * @covers ::setRequestFormParams - * @covers ::sendRequest - */ public function testCanSetFormParametersInTheRequest(): void { $this->mockHandler->append(new Response(200)); @@ -603,11 +573,7 @@ public function testCanSetFormParametersInTheRequest(): void $this->assertSame('foo=bar&bar%5B0%5D=foo&bar%5B1%5D=bar', (string) $request->getBody()); } - /** - * @dataProvider getHttpMethodsForFormParametersTest - * @covers ::setRequestFormParams - * @covers ::sendRequest - */ + #[DataProvider('getHttpMethodsForFormParametersTest')] public function testCanSetFormParametersInTheRequestWithCustomMethod(string $httpMethod): void { $this->mockHandler->append(new Response(200)); @@ -629,9 +595,6 @@ public function testCanSetFormParametersInTheRequestWithCustomMethod(string $htt $this->assertSame('foo=bar&bar%5B0%5D=foo&bar%5B1%5D=bar', (string) $request->getBody()); } - /** - * @covers ::sendRequest - */ public function testCanSetFormParametersAndAttachAFileInTheSameMultipartRequest(): void { $this->mockHandler->append(new Response(200)); @@ -685,9 +648,6 @@ public function testCanSetFormParametersAndAttachAFileInTheSameMultipartRequest( $this->assertStringContainsString($bar1, $contents); } - /** - * @covers ::addMultipartFileToRequest - */ public function testThrowsExceptionWhenAddingNonExistingFileAsMultipartPartToTheRequest(): void { $this->expectException(InvalidArgumentException::class); @@ -695,10 +655,6 @@ public function testThrowsExceptionWhenAddingNonExistingFileAsMultipartPartToThe $this->context->addMultipartFileToRequest('/foo/bar', 'foo'); } - /** - * @covers ::setRequestBodyToFileResource - * @covers ::setRequestBody - */ public function testCanSetRequestBodyToAFile(): void { $this->mockHandler->append(new Response()); @@ -711,10 +667,7 @@ public function testCanSetRequestBodyToAFile(): void $this->assertSame('text/x-php', $request->getHeaderLine('Content-Type')); } - /** - * @dataProvider getRequestBodyValues - * @covers ::setRequestBody - */ + #[DataProvider('getRequestBodyValues')] public function testCanSetRequestBodyToAString(string|PyStringNode $data, string $expected): void { $this->mockHandler->append(new Response()); @@ -726,11 +679,7 @@ public function testCanSetRequestBodyToAString(string|PyStringNode $data, string $this->assertSame($expected, (string) $request->getBody()); } - /** - * @dataProvider getUris - * @covers ::initializeClient - * @covers ::setRequestPath - */ + #[DataProvider('getUris')] public function testResolvesFilePathsCorrectlyWhenAttachingFilesToTheRequestBody(string $baseUri, string $path, string $fullUri): void { // Set a new client with the given base_uri (and not the one used in setUp()) @@ -748,10 +697,6 @@ public function testResolvesFilePathsCorrectlyWhenAttachingFilesToTheRequestBody $this->assertSame($fullUri, (string) $request->getUri()); } - /** - * @covers ::addJwtToken - * @covers ::jsonDecode - */ public function testCanAddJwtTokensToTheJwtMatcher(): void { $name = 'some name'; @@ -778,9 +723,6 @@ public function testCanAddJwtTokensToTheJwtMatcher(): void ); } - /** - * @covers ::addJwtToken - */ public function testThrowsExceptionWhenTryingToAddJwtTokenWhenThereIsNoMatcherFunctionRegistered(): void { $this->comparator @@ -795,13 +737,7 @@ public function testThrowsExceptionWhenTryingToAddJwtTokenWhenThereIsNoMatcherFu $this->context->addJwtToken('name', 'secret', new PyStringNode(['{"some":"data"}'], 1)); } - /** - * @dataProvider getHttpMethods - * @covers ::requestPath - * @covers ::setRequestPath - * @covers ::setRequestMethod - * @covers ::sendRequest - */ + #[DataProvider('getHttpMethods')] public function testCanMakeRequestsUsingDifferentHttpMethods(string $method): void { $this->mockHandler->append(new Response(200)); @@ -811,13 +747,6 @@ public function testCanMakeRequestsUsingDifferentHttpMethods(string $method): vo $this->assertSame($method, $this->historyContainer[0]['request']->getMethod()); } - /** - * @covers ::requestPath - * @covers ::setRequestMethod - * @covers ::setRequestPath - * @covers ::setRequestBody - * @covers ::sendRequest - */ public function testCanMakeRequestsWithQueryStringInThePath(): void { $this->mockHandler->append(new Response(200)); @@ -833,10 +762,6 @@ public function testCanMakeRequestsWithQueryStringInThePath(): void $this->assertSame('foo=bar&bar=foo&a%5B%5D=1&a%5B%5D=2', $request->getUri()->getQuery()); } - /** - * @covers ::setQueryStringParameter - * @covers ::setQueryStringParameters - */ public function testCanSetQueryStringParameters(): void { $this->mockHandler->append(new Response(200)); @@ -875,11 +800,7 @@ public function testCanSetQueryStringParameters(): void $this->assertSame('p1%5B0%5D=v6&p1%5B1%5D=v7&p2%5B0%5D=v8&p3=v9&p4=v5&p5=v10', $request->getUri()->getQuery()); } - /** - * @dataProvider getResponseCodes - * @covers ::assertResponseCodeIs - * @covers ::validateResponseCode - */ + #[DataProvider('getResponseCodes')] public function testCanAssertWhatTheResponseCodeIs(int $code): void { $this->mockHandler->append(new Response($code)); @@ -887,10 +808,6 @@ public function testCanAssertWhatTheResponseCodeIs(int $code): void $this->assertTrue($this->context->assertResponseCodeIs($code)); } - /** - * @covers ::assertResponseCodeIsNot - * @covers ::validateResponseCode - */ public function testCanAssertWhatTheResponseCodeIsNot(): void { $this->mockHandler->append(new Response(200)); @@ -899,12 +816,9 @@ public function testCanAssertWhatTheResponseCodeIsNot(): void } /** - * @dataProvider getGroupAndResponseCodes - * @covers ::assertResponseIs - * @covers ::requireResponse - * @covers ::getResponseCodeGroupRange * @param array $codes */ + #[DataProvider('getGroupAndResponseCodes')] public function testCanAssertWhichGroupTheResponseIsIn(string $group, array $codes): void { foreach ($codes as $code) { @@ -915,11 +829,9 @@ public function testCanAssertWhichGroupTheResponseIsIn(string $group, array $cod } /** - * @dataProvider getGroupAndResponseCodes - * @covers ::assertResponseIsNot - * @covers ::assertResponseIs * @param array $codes */ + #[DataProvider('getGroupAndResponseCodes')] public function testCanAssertWhichGroupTheResponseIsNotIn(string $group, array $codes): void { $groups = [ @@ -941,10 +853,7 @@ public function testCanAssertWhichGroupTheResponseIsNotIn(string $group, array $ } } - /** - * @dataProvider getResponseCodesAndReasonPhrases - * @covers ::assertResponseReasonPhraseIs - */ + #[DataProvider('getResponseCodesAndReasonPhrases')] public function testCanAssertWhatTheResponseReasonPhraseIs(int $code, string $phrase): void { $this->mockHandler->append(new Response($code, [], null, '1.1', $phrase)); @@ -952,9 +861,6 @@ public function testCanAssertWhatTheResponseReasonPhraseIs(int $code, string $ph $this->assertTrue($this->context->assertResponseReasonPhraseIs($phrase)); } - /** - * @covers ::assertResponseReasonPhraseIsNot - */ public function testCanAssertWhatTheResponseReasonPhraseIsNot(): void { $this->mockHandler->append(new Response()); @@ -962,9 +868,6 @@ public function testCanAssertWhatTheResponseReasonPhraseIsNot(): void $this->assertTrue($this->context->assertResponseReasonPhraseIsNot('Not Modified')); } - /** - * @covers ::assertResponseReasonPhraseMatches - */ public function testCanAssertThatTheResponseReasonPhraseMatchesAnExpression(): void { $this->mockHandler->append(new Response(200)); @@ -972,10 +875,7 @@ public function testCanAssertThatTheResponseReasonPhraseMatchesAnExpression(): v $this->assertTrue($this->context->assertResponseReasonPhraseMatches('/OK/')); } - /** - * @dataProvider getResponseCodesAndReasonPhrases - * @covers ::assertResponseStatusLineIs - */ + #[DataProvider('getResponseCodesAndReasonPhrases')] public function testCanAssertWhatTheResponseStatusLineIs(int $code, string $phrase): void { $this->mockHandler->append(new Response($code, [], null, '1.1', $phrase)); @@ -983,9 +883,6 @@ public function testCanAssertWhatTheResponseStatusLineIs(int $code, string $phra $this->assertTrue($this->context->assertResponseStatusLineIs(sprintf('%d %s', $code, $phrase))); } - /** - * @covers ::assertResponseStatusLineIsNot - */ public function testCanAssertWhatTheResponseStatusLineIsNot(): void { $this->mockHandler->append(new Response()); @@ -993,9 +890,6 @@ public function testCanAssertWhatTheResponseStatusLineIsNot(): void $this->assertTrue($this->context->assertResponseStatusLineIsNot('304 Not Modified')); } - /** - * @covers ::assertResponseStatusLineMatches - */ public function testCanAssertThatTheResponseStatusLineMatchesAnExpression(): void { $this->mockHandler->append(new Response(200)); @@ -1003,9 +897,6 @@ public function testCanAssertThatTheResponseStatusLineMatchesAnExpression(): voi $this->assertTrue($this->context->assertResponseStatusLineMatches('/200 OK/')); } - /** - * @covers ::assertResponseHeaderExists - */ public function testCanAssertThatAResponseHeaderExists(): void { $this->mockHandler->append(new Response(200, ['Content-Type' => 'application/json'])); @@ -1013,9 +904,6 @@ public function testCanAssertThatAResponseHeaderExists(): void $this->assertTrue($this->context->assertResponseHeaderExists('Content-Type')); } - /** - * @covers ::assertResponseHeaderDoesNotExist - */ public function testCanAssertThatAResponseHeaderDoesNotExist(): void { $this->mockHandler->append(new Response(200)); @@ -1023,9 +911,6 @@ public function testCanAssertThatAResponseHeaderDoesNotExist(): void $this->assertTrue($this->context->assertResponseHeaderDoesNotExist('Content-Type')); } - /** - * @covers ::assertResponseHeaderIs - */ public function testCanAssertWhatAResponseHeaderIs(): void { $this->mockHandler->append(new Response(200, ['Content-Type' => 'application/json'])); @@ -1033,9 +918,6 @@ public function testCanAssertWhatAResponseHeaderIs(): void $this->assertTrue($this->context->assertResponseHeaderIs('Content-Type', 'application/json')); } - /** - * @covers ::assertResponseHeaderIsNot - */ public function testCanAssertWhatAResponseHeaderIsNot(): void { $this->mockHandler->append(new Response(200, ['Content-Length' => '123'])); @@ -1043,9 +925,6 @@ public function testCanAssertWhatAResponseHeaderIsNot(): void $this->assertTrue($this->context->assertResponseHeaderIsNot('Content-Type', '456')); } - /** - * @covers ::assertResponseHeaderMatches - */ public function testCanAssertThatAResponseHeaderMatchesAnExpression(): void { $this->mockHandler->append(new Response(200, ['Content-Type' => 'application/json'])); @@ -1053,9 +932,6 @@ public function testCanAssertThatAResponseHeaderMatchesAnExpression(): void $this->assertTrue($this->context->assertResponseHeaderMatches('Content-Type', '#^application/(json|xml)$#')); } - /** - * @covers ::assertResponseBodyIs - */ public function testCanAssertWhatTheResponseBodyIs(): void { $this->mockHandler->append(new Response(200, [], 'response body')); @@ -1063,9 +939,6 @@ public function testCanAssertWhatTheResponseBodyIs(): void $this->assertTrue($this->context->assertResponseBodyIs(new PyStringNode(['response body'], 1))); } - /** - * @covers ::assertResponseBodyIsNot - */ public function testCanAssertWhatTheResponseBodyIsNot(): void { $this->mockHandler->append(new Response(200, [], 'response body')); @@ -1073,9 +946,6 @@ public function testCanAssertWhatTheResponseBodyIsNot(): void $this->assertTrue($this->context->assertResponseBodyIsNot(new PyStringNode(['some other response body'], 1))); } - /** - * @covers ::assertResponseBodyMatches - */ public function testCanAssertThatTheResponseBodyMatchesAnExpression(): void { $this->mockHandler->append(new Response(200, [], '{"foo":"bar"}')); @@ -1083,11 +953,6 @@ public function testCanAssertThatTheResponseBodyMatchesAnExpression(): void $this->assertTrue($this->context->assertResponseBodyMatches(new PyStringNode(['/^{"FOO": ?"BAR"}$/i'], 1))); } - /** - * @covers ::assertResponseBodyIsAnEmptyJsonArray - * @covers ::getResponseBodyArray - * @covers ::getResponseBody - */ public function testCanAssertThatTheResponseIsAnEmptyArray(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode([]))); @@ -1095,9 +960,6 @@ public function testCanAssertThatTheResponseIsAnEmptyArray(): void $this->assertTrue($this->context->assertResponseBodyIsAnEmptyJsonArray()); } - /** - * @covers ::assertResponseBodyIsAnEmptyJsonObject - */ public function testCanAssertThatTheResponseIsAnEmptyObject(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode(new stdClass()))); @@ -1105,9 +967,6 @@ public function testCanAssertThatTheResponseIsAnEmptyObject(): void $this->assertTrue($this->context->assertResponseBodyIsAnEmptyJsonObject()); } - /** - * @covers ::assertResponseBodyIsEmpty - */ public function testCanAssertThatTheResponseBodyIsEmpty(): void { $this->mockHandler->append(new Response(204)); @@ -1115,9 +974,6 @@ public function testCanAssertThatTheResponseBodyIsEmpty(): void $this->assertTrue($this->context->assertResponseBodyIsEmpty()); } - /** - * @covers ::assertResponseBodyIsEmpty - */ public function testCanAssertThatTheResponseBodyIsEmptyCanFail(): void { $this->mockHandler->append(new Response(200, [], 'some content')); @@ -1127,9 +983,6 @@ public function testCanAssertThatTheResponseBodyIsEmptyCanFail(): void $this->assertTrue($this->context->assertResponseBodyIsEmpty()); } - /** - * @covers ::assertResponseBodyIsEmpty - */ public function testAssertThatTheResponseBodyIsEmptyThrowsExceptionOnMissingResponse(): void { $this->expectException(RuntimeException::class); @@ -1138,11 +991,9 @@ public function testAssertThatTheResponseBodyIsEmptyThrowsExceptionOnMissingResp } /** - * @dataProvider getResponseBodyArrays - * @covers ::assertResponseBodyJsonArrayLength - * @covers ::getResponseBodyArray * @param array $body */ + #[DataProvider('getResponseBodyArrays')] public function testCanAssertThatTheArrayInTheResponseBodyHasACertainLength(array $body, int $lengthToUse, bool $willFail): void { $this->mockHandler->append(new Response(200, [], (string) json_encode($body))); @@ -1162,11 +1013,9 @@ public function testCanAssertThatTheArrayInTheResponseBodyHasACertainLength(arra } /** - * @dataProvider getResponseBodyArraysForAtLeast - * @covers ::assertResponseBodyJsonArrayMinLength - * @covers ::getResponseBody * @param array $body */ + #[DataProvider('getResponseBodyArraysForAtLeast')] public function testCanAssertTheMinLengthOfAnArrayInTheResponseBody(array $body, int $min): void { $this->mockHandler->append(new Response(200, [], (string) json_encode($body))); @@ -1175,11 +1024,9 @@ public function testCanAssertTheMinLengthOfAnArrayInTheResponseBody(array $body, } /** - * @dataProvider getResponseBodyArraysForAtMost - * @covers ::assertResponseBodyJsonArrayMaxLength - * @covers ::getResponseBody * @param array $body */ + #[DataProvider('getResponseBodyArraysForAtMost')] public function testCanAssertTheMaxLengthOfAnArrayInTheResponseBody(array $body, int $max): void { $this->mockHandler->append(new Response(200, [], (string) json_encode($body))); @@ -1187,12 +1034,6 @@ public function testCanAssertTheMaxLengthOfAnArrayInTheResponseBody(array $body, $this->assertTrue($this->context->assertResponseBodyJsonArrayMaxLength($max)); } - /** - * @covers ::setArrayContainsComparator - * @covers ::assertResponseBodyContainsJson - * @covers ::getResponseBody - * @covers ::jsonDecode - */ public function testCanAssertThatTheResponseBodyContainsJson(): void { $this->mockHandler->append(new Response(200, [], '{"foo":"bar","bar":"foo"}')); @@ -1208,7 +1049,6 @@ public function testCanAssertThatTheResponseBodyContainsJson(): void /** * @see https://github.com/imbo/behat-api-extension/issues/7 - * @covers ::setRequestBody */ public function testThrowsExceptionWhenTryingToCombineARequestBodyWithMultipartOrFormData(): void { @@ -1219,9 +1059,6 @@ public function testThrowsExceptionWhenTryingToCombineARequestBodyWithMultipartO $this->context->setRequestBody('some body'); } - /** - * @covers ::setRequestBodyToFileResource - */ public function testThrowsExceptionWhenAttachingANonExistingFileToTheRequestBody(): void { $this->mockHandler->append(new Response()); @@ -1230,9 +1067,6 @@ public function testThrowsExceptionWhenAttachingANonExistingFileToTheRequestBody $this->context->setRequestBodyToFileResource('/foo/bar'); } - /** - * @covers ::setRequestBodyToFileResource - */ public function testThrowsExceptionWhenAttachingANonReadableFileToTheRequestBody(): void { $this->mockHandler->append(new Response()); @@ -1241,9 +1075,6 @@ public function testThrowsExceptionWhenAttachingANonReadableFileToTheRequestBody $this->context->setRequestBodyToFileResource('/non/readable/file'); } - /** - * @covers ::sendRequest - */ public function testThrowsExceptionWhenTheRequestCanNotBeSent(): void { $this->mockHandler->append(new RequestException('error', new Request('GET', 'path'))); @@ -1252,9 +1083,6 @@ public function testThrowsExceptionWhenTheRequestCanNotBeSent(): void $this->context->requestPath('path'); } - /** - * @covers ::assertResponseCodeIs - */ public function testAssertingWhatTheResponseCodeIsCanFail(): void { $this->mockHandler->append(new Response(200)); @@ -1264,11 +1092,7 @@ public function testAssertingWhatTheResponseCodeIsCanFail(): void $this->context->assertResponseCodeIs(400); } - /** - * @dataProvider getInvalidHttpResponseCodes - * @covers ::assertResponseCodeIs - * @covers ::validateResponseCode - */ + #[DataProvider('getInvalidHttpResponseCodes')] public function testThrowsExceptionWhenSpecifyingAnInvalidCodeWhenAssertingWhatTheResponseCodeIs(int $code): void { $this->mockHandler->append(new Response(200)); @@ -1280,10 +1104,6 @@ public function testThrowsExceptionWhenSpecifyingAnInvalidCodeWhenAssertingWhatT $this->context->assertResponseCodeIs($code); } - /** - * @covers ::assertResponseCodeIs - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseCodeIsWhenNoResponseExists(): void { $this->expectException(RuntimeException::class); @@ -1291,9 +1111,6 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseCodeIsWhenNoRespo $this->context->assertResponseCodeIs(200); } - /** - * @covers ::assertResponseCodeIsNot - */ public function testAssertingWhatTheResponseCodeIsNotCanFail(): void { $this->mockHandler->append(new Response(200)); @@ -1303,11 +1120,7 @@ public function testAssertingWhatTheResponseCodeIsNotCanFail(): void $this->context->assertResponseCodeIsNot(200); } - /** - * @dataProvider getInvalidHttpResponseCodes - * @covers ::assertResponseCodeIsNot - * @covers ::validateResponseCode - */ + #[DataProvider('getInvalidHttpResponseCodes')] public function testThrowsExceptionWhenSpecifyingAnInvalidCodeWhenAssertingWhatTheResponseCodeIsNot(int $code): void { $this->mockHandler->append(new Response(200)); @@ -1319,10 +1132,6 @@ public function testThrowsExceptionWhenSpecifyingAnInvalidCodeWhenAssertingWhatT $this->context->assertResponseCodeIsNot($code); } - /** - * @covers ::assertResponseCodeIsNot - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseCodeIsNotWhenNoResponseExists(): void { $this->expectException(RuntimeException::class); @@ -1330,12 +1139,7 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseCodeIsNotWhenNoRe $this->context->assertResponseCodeIsNot(200); } - /** - * @dataProvider getDataForResponseGroupFailures - * @covers ::assertResponseIs - * @covers ::getResponseCodeGroupRange - * @covers ::getResponseGroup - */ + #[DataProvider('getDataForResponseGroupFailures')] public function testAssertingThatTheResponseIsInAGroupCanFail(int $responseCode, string $actualGroup, string $expectedGroup): void { $this->mockHandler->append(new Response($responseCode)); @@ -1351,10 +1155,6 @@ public function testAssertingThatTheResponseIsInAGroupCanFail(int $responseCode, $this->context->assertResponseIs($expectedGroup); } - /** - * @covers ::assertResponseIs - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhichGroupTheResponseIsInWhenNoResponseExists(): void { $this->expectException(RuntimeException::class); @@ -1362,10 +1162,6 @@ public function testThrowsExceptionWhenAssertingWhichGroupTheResponseIsInWhenNoR $this->context->assertResponseIs('success'); } - /** - * @covers ::assertResponseIs - * @covers ::getResponseCodeGroupRange - */ public function testThrowsExceptionWhenAssertingThatTheResponseIsInAnInvalidGroup(): void { $this->mockHandler->append(new Response(200)); @@ -1375,10 +1171,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseIsInAnInvalidGrou $this->context->assertResponseIs('foobar'); } - /** - * @covers ::assertResponseIsNot - * @covers ::assertResponseIs - */ public function testAssertingThatTheResponseIsNotInAGroupCanFail(): void { $this->mockHandler->append(new Response(200)); @@ -1388,10 +1180,6 @@ public function testAssertingThatTheResponseIsNotInAGroupCanFail(): void $this->context->assertResponseIsNot('success'); } - /** - * @covers ::assertResponseIsNot - * @covers ::getResponseCodeGroupRange - */ public function testThrowsExceptionWhenAssertingThatTheResponseIsNotInAnInvalidGroup(): void { $this->mockHandler->append(new Response(200)); @@ -1401,10 +1189,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseIsNotInAnInvalidG $this->context->assertResponseIsNot('foobar'); } - /** - * @covers ::assertResponseIsNot - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhichGroupTheResponseIsNotInWhenNoResponseExists(): void { $this->expectException(RuntimeException::class); @@ -1412,9 +1196,6 @@ public function testThrowsExceptionWhenAssertingWhichGroupTheResponseIsNotInWhen $this->context->assertResponseIsNot('success'); } - /** - * @covers ::assertResponseReasonPhraseIs - */ public function testAssertingWhatTheResponseReasonPhraseIsCanFail(): void { $this->mockHandler->append(new Response()); @@ -1424,10 +1205,6 @@ public function testAssertingWhatTheResponseReasonPhraseIsCanFail(): void $this->context->assertResponseReasonPhraseIs('ok'); } - /** - * @covers ::assertResponseReasonPhraseIs - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseReasonPhraseIsWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1435,9 +1212,6 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseReasonPhraseIsWhe $this->context->assertResponseReasonPhraseIs('OK'); } - /** - * @covers ::assertResponseReasonPhraseIsNot - */ public function testAssertingWhatTheResponseReasonPhraseIsNotCanFail(): void { $this->mockHandler->append(new Response()); @@ -1447,10 +1221,6 @@ public function testAssertingWhatTheResponseReasonPhraseIsNotCanFail(): void $this->context->assertResponseReasonPhraseIsNot('OK'); } - /** - * @covers ::assertResponseReasonPhraseIsNot - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseReasonPhraseIsNotWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1458,9 +1228,6 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseReasonPhraseIsNot $this->context->assertResponseReasonPhraseIsNot('OK'); } - /** - * @covers ::assertResponseReasonPhraseMatches - */ public function testAssertingThatTheResponseReasonPhraseMatchesAnExpressionCanFail(): void { $this->mockHandler->append(new Response(200)); @@ -1470,10 +1237,6 @@ public function testAssertingThatTheResponseReasonPhraseMatchesAnExpressionCanFa $this->context->assertResponseReasonPhraseMatches('/ok/'); } - /** - * @covers ::assertResponseReasonPhraseMatches - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingThatTheResponseReasonPhraseMatchesAnExpressionWhenThereIsNoResponse(): void { $this->expectException(RuntimeException::class); @@ -1481,9 +1244,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseReasonPhraseMatch $this->context->assertResponseReasonPhraseMatches('/ok/'); } - /** - * @covers ::assertResponseStatusLineIs - */ public function testAssertingWhatTheResponseStatusLineIsCanFail(): void { $this->mockHandler->append(new Response()); @@ -1493,10 +1253,6 @@ public function testAssertingWhatTheResponseStatusLineIsCanFail(): void $this->context->assertResponseStatusLineIs('200 Foobar'); } - /** - * @covers ::assertResponseStatusLineIs - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseStatusLineIsWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1504,9 +1260,6 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseStatusLineIsWhenN $this->context->assertResponseStatusLineIs('200 OK'); } - /** - * @covers ::assertResponseStatusLineIsNot - */ public function testAssertingWhatTheResponseStatusLineIsNotCanFail(): void { $this->mockHandler->append(new Response()); @@ -1516,10 +1269,6 @@ public function testAssertingWhatTheResponseStatusLineIsNotCanFail(): void $this->context->assertResponseStatusLineIsNot('200 OK'); } - /** - * @covers ::assertResponseStatusLineIsNot - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseStatusLineIsNotWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1527,9 +1276,6 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseStatusLineIsNotWh $this->context->assertResponseStatusLineIsNot('200 OK'); } - /** - * @covers ::assertResponseStatusLineMatches - */ public function testAssertingThatTheResponseStatusLineMatchesAnExpressionCanFail(): void { $this->mockHandler->append(new Response(200)); @@ -1539,10 +1285,6 @@ public function testAssertingThatTheResponseStatusLineMatchesAnExpressionCanFail $this->context->assertResponseStatusLineMatches('/200 ok/'); } - /** - * @covers ::assertResponseStatusLineMatches - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingThatTheResponseStatusLineMatchesAnExpressionWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1550,9 +1292,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseStatusLineMatches $this->context->assertResponseStatusLineMatches('/200 OK/'); } - /** - * @covers ::assertResponseHeaderExists - */ public function testAssertingThatAResponseHeaderExistsCanFail(): void { $this->mockHandler->append(new Response(200)); @@ -1562,10 +1301,6 @@ public function testAssertingThatAResponseHeaderExistsCanFail(): void $this->context->assertResponseHeaderExists('Content-Type'); } - /** - * @covers ::assertResponseHeaderExists - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingThatAResponseHeaderExistWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1573,9 +1308,6 @@ public function testThrowsExceptionWhenAssertingThatAResponseHeaderExistWhenNoRe $this->context->assertResponseHeaderExists('Connection'); } - /** - * @covers ::assertResponseHeaderDoesNotExist - */ public function testAssertingThatAResponseHeaderDoesNotExistCanFail(): void { $this->mockHandler->append(new Response(200, ['Content-Type' => 'application/json'])); @@ -1585,10 +1317,6 @@ public function testAssertingThatAResponseHeaderDoesNotExistCanFail(): void $this->context->assertResponseHeaderDoesNotExist('Content-Type'); } - /** - * @covers ::assertResponseHeaderDoesNotExist - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingThatAResponseHeaderDoesNotExistWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1596,9 +1324,6 @@ public function testThrowsExceptionWhenAssertingThatAResponseHeaderDoesNotExistW $this->context->assertResponseHeaderDoesNotExist('Connection'); } - /** - * @covers ::assertResponseHeaderIs - */ public function testAssertingWhatAResponseHeaderIsCanFail(): void { $this->mockHandler->append(new Response(200, ['Content-Type' => 'application/json'])); @@ -1608,10 +1333,6 @@ public function testAssertingWhatAResponseHeaderIsCanFail(): void $this->context->assertResponseHeaderIs('Content-Type', 'application/xml'); } - /** - * @covers ::assertResponseHeaderIs - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatAResponseHeaderIsWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1619,9 +1340,6 @@ public function testThrowsExceptionWhenAssertingWhatAResponseHeaderIsWhenNoRespo $this->context->assertResponseHeaderIs('Connection', 'close'); } - /** - * @covers ::assertResponseHeaderIsNot - */ public function testAssertingWhatAResponseHeaderIsNotCanFail(): void { $this->mockHandler->append(new Response(200, ['Content-Type' => '123'])); @@ -1631,10 +1349,6 @@ public function testAssertingWhatAResponseHeaderIsNotCanFail(): void $this->context->assertResponseHeaderIsNot('content-type', '123'); } - /** - * @covers ::assertResponseHeaderIsNot - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatAResponseHeaderIsNotWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1642,9 +1356,6 @@ public function testThrowsExceptionWhenAssertingWhatAResponseHeaderIsNotWhenNoRe $this->context->assertResponseHeaderIsNot('header', 'value'); } - /** - * @covers ::assertResponseHeaderMatches - */ public function testAssertingThatAResponseHeaderMatchesAnExpressionCanFail(): void { $this->mockHandler->append(new Response(200, ['Content-Type' => 'application/json'])); @@ -1654,10 +1365,6 @@ public function testAssertingThatAResponseHeaderMatchesAnExpressionCanFail(): vo $this->context->assertResponseHeaderMatches('Content-Type', '#^application/xml$#'); } - /** - * @covers ::assertResponseHeaderMatches - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingThatAResponseHeaderMatchesAnExpressionWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1665,9 +1372,6 @@ public function testThrowsExceptionWhenAssertingThatAResponseHeaderMatchesAnExpr $this->context->assertResponseHeaderMatches('Connection', 'close'); } - /** - * @covers ::assertResponseBodyIs - */ public function testAssertingWhatTheResponseBodyIsCanFail(): void { $this->mockHandler->append(new Response(200, [], 'response body')); @@ -1677,10 +1381,6 @@ public function testAssertingWhatTheResponseBodyIsCanFail(): void $this->context->assertResponseBodyIs(new PyStringNode(['foo'], 1)); } - /** - * @covers ::assertResponseBodyIs - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseBodyIsWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1688,9 +1388,6 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseBodyIsWhenNoRespo $this->context->assertResponseBodyIs(new PyStringNode(['some body'], 1)); } - /** - * @covers ::assertResponseBodyIsNot - */ public function testAssertingWhatTheResponseBodyIsNotCanFail(): void { $this->mockHandler->append(new Response(200, [], 'response body')); @@ -1700,10 +1397,6 @@ public function testAssertingWhatTheResponseBodyIsNotCanFail(): void $this->context->assertResponseBodyIsNot(new PyStringNode(['response body'], 1)); } - /** - * @covers ::assertResponseBodyIsNot - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingWhatTheResponseBodyIsNotWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1711,9 +1404,6 @@ public function testThrowsExceptionWhenAssertingWhatTheResponseBodyIsNotWhenNoRe $this->context->assertResponseBodyIsNot(new PyStringNode(['some body'], 1)); } - /** - * @covers ::assertResponseBodyMatches - */ public function testAssertingThatTheResponseBodyMatchesAnExpressionCanFail(): void { $this->mockHandler->append(new Response(200, [], '{"foo":"bar"}')); @@ -1723,10 +1413,6 @@ public function testAssertingThatTheResponseBodyMatchesAnExpressionCanFail(): vo $this->context->assertResponseBodyMatches(new PyStringNode(['/^{"FOO": "BAR"}$/'], 1)); } - /** - * @covers ::assertResponseBodyMatches - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingThatTheResponseBodyMatchesAnExpressionWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1734,11 +1420,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseBodyMatchesAnExpr $this->context->assertResponseBodyMatches(new PyStringNode(['/foo/'], 1)); } - /** - * @covers ::assertResponseBodyIsAnEmptyJsonArray - * @covers ::getResponseBodyArray - * @covers ::getResponseBody - */ public function testAssertingThatTheResponseIsAnEmptyArrayCanFail(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode([1, 2, 3]))); @@ -1748,11 +1429,6 @@ public function testAssertingThatTheResponseIsAnEmptyArrayCanFail(): void $this->context->assertResponseBodyIsAnEmptyJsonArray(); } - /** - * @covers ::assertResponseBodyIsAnEmptyJsonArray - * @covers ::getResponseBodyArray - * @covers ::getResponseBody - */ public function testThrowsExceptionWhenAssertingThatTheResponseBodyIsAnEmptyArrayWhenTheBodyDoesNotContainAnArray(): void { $this->mockHandler->append(new Response(200, [], '123')); @@ -1762,9 +1438,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseBodyIsAnEmptyArra $this->context->assertResponseBodyIsAnEmptyJsonArray(); } - /** - * @covers ::assertResponseBodyIsAnEmptyJsonObject - */ public function testAssertingThatTheResponseIsAnEmptyObjectCanFail(): void { $object = new stdClass(); @@ -1776,10 +1449,6 @@ public function testAssertingThatTheResponseIsAnEmptyObjectCanFail(): void $this->context->assertResponseBodyIsAnEmptyJsonObject(); } - /** - * @covers ::assertResponseBodyIsAnEmptyJsonObject - * @covers ::getResponseBody - */ public function testThrowsExceptionWhenAssertingThatTheResponseBodyIsAnEmptyObjectWhenTheBodyDoesNotContainAnObject(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode([]))); @@ -1789,11 +1458,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseBodyIsAnEmptyObje $this->context->assertResponseBodyIsAnEmptyJsonObject(); } - /** - * @covers ::assertResponseBodyJsonArrayLength - * @covers ::getResponseBodyArray - * @covers ::getResponseBody - */ public function testAssertingThatTheResponseBodyIsAJsonArrayWithACertainLengthCanFail(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode([1, 2, 3]))); @@ -1803,10 +1467,6 @@ public function testAssertingThatTheResponseBodyIsAJsonArrayWithACertainLengthCa $this->context->assertResponseBodyJsonArrayLength(2); } - /** - * @covers ::assertResponseBodyJsonArrayLength - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingTheLengthOfAJsonArrayInTheResponseBodyWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1814,10 +1474,6 @@ public function testThrowsExceptionWhenAssertingTheLengthOfAJsonArrayInTheRespon $this->context->assertResponseBodyJsonArrayLength(5); } - /** - * @covers ::assertResponseBodyJsonArrayLength - * @covers ::getResponseBodyArray - */ public function testThrowsExceptionWhenAssertingTheLengthOfAJsonArrayInTheResponseBodyAndTheBodyDoesNotContainAnArray(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode(['foo' => 'bar']))); @@ -1827,10 +1483,6 @@ public function testThrowsExceptionWhenAssertingTheLengthOfAJsonArrayInTheRespon $this->context->assertResponseBodyJsonArrayLength(0); } - /** - * @covers ::assertResponseBodyJsonArrayMinLength - * @covers ::getResponseBody - */ public function testAssertingThatTheResponseBodyContainsAJsonArrayWithAMinimumLengthCanFail(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode([1, 2, 3]))); @@ -1840,10 +1492,6 @@ public function testAssertingThatTheResponseBodyContainsAJsonArrayWithAMinimumLe $this->context->assertResponseBodyJsonArrayMinLength(4); } - /** - * @covers ::assertResponseBodyJsonArrayMinLength - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingTheMinimumLengthOfAnArrayInTheResponseBodyWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1851,10 +1499,6 @@ public function testThrowsExceptionWhenAssertingTheMinimumLengthOfAnArrayInTheRe $this->context->assertResponseBodyJsonArrayMinLength(5); } - /** - * @covers ::assertResponseBodyJsonArrayMinLength - * @covers ::getResponseBody - */ public function testThrowsExceptionWhenAssertingTheMinimumLengthOfAnArrayInTheResponseBodyAndTheBodyDoesNotContainAnArray(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode(['foo' => 'bar']))); @@ -1864,10 +1508,6 @@ public function testThrowsExceptionWhenAssertingTheMinimumLengthOfAnArrayInTheRe $this->context->assertResponseBodyJsonArrayMinLength(2); } - /** - * @covers ::assertResponseBodyJsonArrayMaxLength - * @covers ::getResponseBody - */ public function testAssertingThatTheResponseBodyContainsAJsonArrayWithAMaximumLengthCanFail(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode([1, 2, 3]))); @@ -1877,10 +1517,6 @@ public function testAssertingThatTheResponseBodyContainsAJsonArrayWithAMaximumLe $this->context->assertResponseBodyJsonArrayMaxLength(2); } - /** - * @covers ::assertResponseBodyJsonArrayMaxLength - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingTheMaximumLengthOfAnArrayInTheResponseBodyWhenNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1888,10 +1524,6 @@ public function testThrowsExceptionWhenAssertingTheMaximumLengthOfAnArrayInTheRe $this->context->assertResponseBodyJsonArrayMaxLength(5); } - /** - * @covers ::assertResponseBodyJsonArrayMaxLength - * @covers ::getResponseBody - */ public function testThrowsExceptionWhenAssertingTheMaximumLengthOfAnArrayInTheResponseBodyAndTheBodyDoesNotContainAnArray(): void { $this->mockHandler->append(new Response(200, [], (string) json_encode(['foo' => 'bar']))); @@ -1901,10 +1533,6 @@ public function testThrowsExceptionWhenAssertingTheMaximumLengthOfAnArrayInTheRe $this->context->assertResponseBodyJsonArrayMaxLength(2); } - /** - * @covers ::assertResponseBodyContainsJson - * @covers ::getResponseBody - */ public function testAssertingThatTheResponseBodyContainsJsonCanFail(): void { $this->mockHandler->append(new Response(200, [], '{"foo":"bar"}')); @@ -1920,11 +1548,6 @@ public function testAssertingThatTheResponseBodyContainsJsonCanFail(): void $this->context->assertResponseBodyContainsJson(new PyStringNode(['{"bar":"foo"}'], 1)); } - /** - * @covers ::setArrayContainsComparator - * @covers ::assertResponseBodyContainsJson - * @covers ::getResponseBody - */ public function testWillThrowExceptionWhenArrayContainsComparatorDoesNotReturnInACorrectMannerWhenCheckingTheResponseBodyForJson(): void { $this->mockHandler->append(new Response(200, [], '{"foo":"bar"}')); @@ -1940,10 +1563,6 @@ public function testWillThrowExceptionWhenArrayContainsComparatorDoesNotReturnIn $this->context->assertResponseBodyContainsJson(new PyStringNode(['{"bar":"foo"}'], 1)); } - /** - * @covers ::assertResponseBodyContainsJson - * @covers ::requireResponse - */ public function testThrowsExceptionWhenAssertingThatTheResponseContainsJsonAndNoResponseExist(): void { $this->expectException(RuntimeException::class); @@ -1951,10 +1570,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseContainsJsonAndNo $this->context->assertResponseBodyContainsJson(new PyStringNode(['{"foo":"bar"}'], 1)); } - /** - * @covers ::assertResponseBodyContainsJson - * @covers ::getResponseBody - */ public function testThrowsExceptionWhenAssertingThatTheResponseContainsJsonAndTheResponseContainsInvalidData(): void { $this->mockHandler->append(new Response(200, [], "{'foo':'bar'}")); @@ -1964,10 +1579,6 @@ public function testThrowsExceptionWhenAssertingThatTheResponseContainsJsonAndTh $this->context->assertResponseBodyContainsJson(new PyStringNode(['{"foo":"bar"}'], 1)); } - /** - * @covers ::assertResponseBodyContainsJson - * @covers ::jsonDecode - */ public function testThrowsExceptionWhenAssertingThatTheBodyContainsJsonAndTheParameterFromTheTestIsInvalid(): void { $this->mockHandler->append(new Response(200, [], '{"foo":"bar"}')); @@ -1978,8 +1589,6 @@ public function testThrowsExceptionWhenAssertingThatTheBodyContainsJsonAndThePar } /** - * @covers ::requestPath - * @covers ::setRequestMethod * @see https://github.com/imbo/behat-api-extension/issues/51 */ public function testUsesHttpGetByDefaultWhenRequesting(): void diff --git a/tests/Context/Initializer/ApiClientAwareInitializerTest.php b/tests/Context/Initializer/ApiClientAwareInitializerTest.php index 09f0e35..26a7ccf 100644 --- a/tests/Context/Initializer/ApiClientAwareInitializerTest.php +++ b/tests/Context/Initializer/ApiClientAwareInitializerTest.php @@ -2,18 +2,13 @@ namespace Imbo\BehatApiExtension\Context\Initializer; use Imbo\BehatApiExtension\Context\ApiClientAwareContext; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\Context\Initializer\ApiClientAwareInitializer - */ +#[CoversClass(ApiClientAwareInitializer::class)] class ApiClientAwareInitializerTest extends TestCase { - /** - * @covers ::initializeContext - * @covers ::__construct - */ public function testInjectsClientWhenInitializingContext(): void { // Set up a socket for the test case, try all ports between 8000 and 8079. If no ports are diff --git a/tests/Context/Initializer/ArrayContainsComparatorAwareInitializerTest.php b/tests/Context/Initializer/ArrayContainsComparatorAwareInitializerTest.php index 10084c1..3ee80e0 100644 --- a/tests/Context/Initializer/ArrayContainsComparatorAwareInitializerTest.php +++ b/tests/Context/Initializer/ArrayContainsComparatorAwareInitializerTest.php @@ -4,17 +4,13 @@ use Imbo\BehatApiExtension\ArrayContainsComparator; use Imbo\BehatApiExtension\ArrayContainsComparator\Matcher; use Imbo\BehatApiExtension\Context\ArrayContainsComparatorAwareContext; +use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; -/** - * @coversDefaultClass Imbo\BehatApiExtension\Context\Initializer\ArrayContainsComparatorAwareInitializer - */ +#[CoversClass(ArrayContainsComparatorAwareInitializer::class)] class ArrayContainsComparatorAwareInitializerTest extends TestCase { - /** - * @covers ::__construct - */ public function testInitializerInjectsDefaultMatcherFunctions(): void { /** @var ArrayContainsComparator&MockObject */ @@ -40,9 +36,6 @@ public function testInitializerInjectsDefaultMatcherFunctions(): void new ArrayContainsComparatorAwareInitializer($comparator); } - /** - * @covers ::initializeContext - */ public function testInjectsComparatorWhenInitializingContext(): void { /** @var ArrayContainsComparator&MockObject */ diff --git a/tests/Exception/ArrayContainsComparatorExceptionTest.php b/tests/Exception/ArrayContainsComparatorExceptionTest.php index 94e492f..908109c 100644 --- a/tests/Exception/ArrayContainsComparatorExceptionTest.php +++ b/tests/Exception/ArrayContainsComparatorExceptionTest.php @@ -1,11 +1,11 @@ expectException(ArrayContainsComparatorException::class); diff --git a/tests/ServiceContainer/BehatApiExtensionTest.php b/tests/ServiceContainer/BehatApiExtensionTest.php index 70ee69e..aef7a2a 100644 --- a/tests/ServiceContainer/BehatApiExtensionTest.php +++ b/tests/ServiceContainer/BehatApiExtensionTest.php @@ -1,14 +1,13 @@ extension = new BehatApiExtension(); } - /** - * @covers ::getConfigKey - * @covers ::configure - */ public function testCanBuildConfiguration(): void { /** @var ArrayNodeDefinition */ @@ -40,9 +35,6 @@ public function testCanBuildConfiguration(): void ], $config); } - /** - * @covers ::configure - */ public function testCanOverrideDefaultValuesWhenBuildingConfiguration(): void { /** @var ArrayNodeDefinition */ From 5d78144fbca875b3a3eb0c786291b5c8e9546b33 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 12:23:12 +0100 Subject: [PATCH 06/15] Bump deps --- composer.lock | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 01a9b44..cb9ad81 100644 --- a/composer.lock +++ b/composer.lock @@ -3618,16 +3618,16 @@ }, { "name": "sebastian/comparator", - "version": "6.2.1", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739" + "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/43d129d6a0f81c78bee378b46688293eb7ea3739", - "reference": "43d129d6a0f81c78bee378b46688293eb7ea3739", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d4e47a769525c4dd38cea90e5dcd435ddbbc7115", + "reference": "d4e47a769525c4dd38cea90e5dcd435ddbbc7115", "shasum": "" }, "require": { @@ -3640,6 +3640,9 @@ "require-dev": { "phpunit/phpunit": "^11.4" }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, "type": "library", "extra": { "branch-alias": { @@ -3683,7 +3686,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.2.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.0" }, "funding": [ { @@ -3691,7 +3694,7 @@ "type": "github" } ], - "time": "2024-10-31T05:30:08+00:00" + "time": "2025-01-06T10:28:19+00:00" }, { "name": "sebastian/complexity", From dec1414e561c011142f83cd015a839b261bbb8f2 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 12:32:57 +0100 Subject: [PATCH 07/15] Reintroduce static analysis using PHPStan --- .github/CONTRIBUTING.md | 4 ++ .github/workflows/ci.yml | 3 + composer.json | 3 + composer.lock | 60 ++++++++++++++++++- .../Matcher/ArrayLengthTest.php | 2 +- tests/Context/ApiContextTest.php | 2 +- 6 files changed, 71 insertions(+), 3 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index be989fb..9d6d78b 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -15,6 +15,10 @@ After this has been started you can execute the test suites by running: ./vendor/bin/behat --strict ./vendor/bin/phpunit +[PHPStan](https://phpstan.org/) is used for static code analysis: + + vendor/bin/phpstan + ## Documentation The extension uses [Sphinx](http://www.sphinx-doc.org/en/stable/) for documentation, and all end-user documentation resides in the `docs` directory. To generate the current documentation after checking out your fork simply run the `docs` composer script: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c24f9ff..fd13a8a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,6 +50,9 @@ jobs: - name: Run integration tests run: vendor/bin/behat --strict + - name: Run static code analysis + run: vendor/bin/phpstan + - name: Check coding standard run: php-cs-fixer fix --dry-run --diff env: diff --git a/composer.json b/composer.json index c3f2de6..041fc30 100644 --- a/composer.json +++ b/composer.json @@ -28,6 +28,7 @@ }, "require-dev": { "imbo/imbo-coding-standard": "^2.0", + "phpstan/phpstan": "^2.1", "phpunit/phpunit": "^11.5", "slim/psr7": "^1.3", "slim/slim": "^4.7", @@ -48,6 +49,7 @@ "ci": [ "@phpunit", "@behat", + "@sa", "@cs" ], "test": [ @@ -57,6 +59,7 @@ "phpunit": "vendor/bin/phpunit", "phpunit:coverage": "vendor/bin/phpunit --coverage-html build/coverage", "behat": "vendor/bin/behat --strict", + "sa": "vendor/bin/phpstan", "cs": "php-cs-fixer fix --dry-run --diff", "dev": "php -S localhost:8080 -t ./features/bootstrap > server.log 2>&1", "docs": "cd docs; make html" diff --git a/composer.lock b/composer.lock index cb9ad81..ccdf1c8 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": "b1f6de0c793f8a8d721d76a83bcf8ca9", + "content-hash": "8963c6bec91f32eda560a29f299cd950", "packages": [ { "name": "beberlei/assert", @@ -2909,6 +2909,64 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpstan/phpstan", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7", + "reference": "cd6e973e04b4c2b94c86e8612b5a65f0da0e08e7", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2025-01-05T16:43:48+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "11.0.8", diff --git a/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php b/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php index 72b30b4..0c26df5 100644 --- a/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php +++ b/tests/ArrayContainsComparator/Matcher/ArrayLengthTest.php @@ -38,7 +38,7 @@ public static function getArraysAndLengths(): array } /** - * @return array,maxLength:int,message:string}> + * @return array,maxLength:int,message:string}> */ public static function getValuesThatFail(): array { diff --git a/tests/Context/ApiContextTest.php b/tests/Context/ApiContextTest.php index f067e61..4910017 100644 --- a/tests/Context/ApiContextTest.php +++ b/tests/Context/ApiContextTest.php @@ -92,7 +92,7 @@ public static function getHttpMethods(): array } /** - * @return array}> + * @return array */ public static function getResponseCodes(): array { From 5f889b9c5f8551a929a3c14f1b3fe0f52681281b Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 12:35:20 +0100 Subject: [PATCH 08/15] Add PHPStan confiuguration file --- phpstan.neon | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 phpstan.neon diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..13022a6 --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,5 @@ +parameters: + level: 5 + paths: + - src + - tests \ No newline at end of file From 6b082f3c6dc44da82940bbc2e861ed5bb0307e42 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 12:53:36 +0100 Subject: [PATCH 09/15] Explicit nullable params --- src/Exception/ArrayContainsComparatorException.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Exception/ArrayContainsComparatorException.php b/src/Exception/ArrayContainsComparatorException.php index 8476d65..9f1e97b 100644 --- a/src/Exception/ArrayContainsComparatorException.php +++ b/src/Exception/ArrayContainsComparatorException.php @@ -1,14 +1,14 @@ Date: Mon, 6 Jan 2025 13:18:57 +0100 Subject: [PATCH 10/15] Initial commit of RTD config --- .readthedocs.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .readthedocs.yaml diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000..1bd2350 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,12 @@ +version: 2 +build: + os: ubuntu-24.04 + tools: + python: "3.12" + +sphinx: + configuration: docs/conf.py + +python: + install: + - requirements: docs/requirements.txt \ No newline at end of file From 41a21ae65a7372c96cd909d29e695967edd0a493 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Mon, 6 Jan 2025 13:25:40 +0100 Subject: [PATCH 11/15] Add migration for future version --- docs/installation/upgrade.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/installation/upgrade.rst b/docs/installation/upgrade.rst index d5f24ee..127c0ce 100644 --- a/docs/installation/upgrade.rst +++ b/docs/installation/upgrade.rst @@ -3,6 +3,18 @@ Upgrading This section will cover breaking changes between major versions and other related information to ease upgrading to the latest version. +Migration from v5.x to v6.x +--------------------------- + +.. contents:: Changes + :local: + :depth: 1 + +PHP version requirement +^^^^^^^^^^^^^^^^^^^^^^^ + +``v6.x`` requires ``PHP >= 8.3``. + Migration from v4.x to v5.x --------------------------- From dcbca1f4a3c716a97dd5a3abf999d3358d935bb9 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Tue, 7 Jan 2025 08:03:05 +0100 Subject: [PATCH 12/15] phpstan level 6 --- composer.json | 7 +- composer.lock | 101 +++++++++++++++++- phpstan.neon | 9 +- src/ArrayContainsComparator.php | 10 +- .../Matcher/ArrayLength.php | 2 +- .../Matcher/ArrayMaxLength.php | 2 +- .../Matcher/ArrayMinLength.php | 2 +- src/ArrayContainsComparator/Matcher/JWT.php | 4 +- src/Context/ApiClientAwareContext.php | 2 + src/Context/ApiContext.php | 3 +- .../Initializer/ApiClientAwareInitializer.php | 4 +- src/ServiceContainer/BehatApiExtension.php | 2 +- tests/ArrayContainsComparatorTest.php | 6 +- 13 files changed, 136 insertions(+), 18 deletions(-) diff --git a/composer.json b/composer.json index 041fc30..b3fd792 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,9 @@ }, "require-dev": { "imbo/imbo-coding-standard": "^2.0", + "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", "phpunit/phpunit": "^11.5", "slim/psr7": "^1.3", "slim/slim": "^4.7", @@ -65,6 +67,9 @@ "docs": "cd docs; make html" }, "config": { - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "phpstan/extension-installer": true + } } } diff --git a/composer.lock b/composer.lock index ccdf1c8..0357a16 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": "8963c6bec91f32eda560a29f299cd950", + "content-hash": "df380338f2316c396f18b57456fc07af", "packages": [ { "name": "beberlei/assert", @@ -2909,6 +2909,54 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpstan/extension-installer", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "85e90b3942d06b2326fba0403ec24fe912372936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/85e90b3942d06b2326fba0403ec24fe912372936", + "reference": "85e90b3942d06b2326fba0403ec24fe912372936", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.4.3" + }, + "time": "2024-09-04T20:21:43+00:00" + }, { "name": "phpstan/phpstan", "version": "2.1.1", @@ -2967,6 +3015,57 @@ ], "time": "2025-01-05T16:43:48+00:00" }, + { + "name": "phpstan/phpstan-phpunit", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-phpunit.git", + "reference": "e32ac656788a5bf3dedda89e6a2cad5643bf1a18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/e32ac656788a5bf3dedda89e6a2cad5643bf1a18", + "reference": "e32ac656788a5bf3dedda89e6a2cad5643bf1a18", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0.4" + }, + "conflict": { + "phpunit/phpunit": "<7.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPUnit extensions and rules for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-phpunit/issues", + "source": "https://github.com/phpstan/phpstan-phpunit/tree/2.0.3" + }, + "time": "2024-12-19T09:14:43+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "11.0.8", diff --git a/phpstan.neon b/phpstan.neon index 13022a6..21dc252 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,10 @@ parameters: - level: 5 + level: 6 paths: - src - - tests \ No newline at end of file + - tests + ignoreErrors: + - + message: '#Method [a-zA-Z0-9\\_]+::test#' + identifier: missingType.iterableValue + path: tests \ No newline at end of file diff --git a/src/ArrayContainsComparator.php b/src/ArrayContainsComparator.php index 925233d..2309a6d 100644 --- a/src/ArrayContainsComparator.php +++ b/src/ArrayContainsComparator.php @@ -53,7 +53,7 @@ public function getMatcherFunction(string $name): callable * To clarify, the method (and other methods in the class) refers to "lists" and "objects". A * "list" is a numerically indexed array, and an "object" is an associative array. * - * @param array $needle + * @param array> $needle * @param array $haystack */ public function compare(array $needle, array $haystack): bool @@ -239,8 +239,8 @@ protected function compareValues(mixed $needleValue, mixed $haystackValue): bool /** * Make sure all values in the $needle array is present in the $haystack array * - * @param array $needle - * @param array $haystack + * @param array|scalar> $needle + * @param array $haystack */ protected function inArray(array $needle, array $haystack): bool { @@ -350,6 +350,8 @@ protected function inArray(array $needle, array $haystack): bool /** * See if a PHP array is a JSON array + * + * @param array $array */ protected function arrayIsList(array $array): bool { @@ -360,6 +362,8 @@ protected function arrayIsList(array $array): bool /** * See if a PHP array is a JSON object + * + * @param array $array */ protected function arrayIsObject(array $array): bool { diff --git a/src/ArrayContainsComparator/Matcher/ArrayLength.php b/src/ArrayContainsComparator/Matcher/ArrayLength.php index 3ad8939..bc0a2a7 100644 --- a/src/ArrayContainsComparator/Matcher/ArrayLength.php +++ b/src/ArrayContainsComparator/Matcher/ArrayLength.php @@ -11,7 +11,7 @@ class ArrayLength /** * Match the exact length of an array * - * @param array $array An array + * @param array $array An array * @param int|string $length The expected exact length of $array * @throws InvalidArgumentException */ diff --git a/src/ArrayContainsComparator/Matcher/ArrayMaxLength.php b/src/ArrayContainsComparator/Matcher/ArrayMaxLength.php index a0e824f..9f44a77 100644 --- a/src/ArrayContainsComparator/Matcher/ArrayMaxLength.php +++ b/src/ArrayContainsComparator/Matcher/ArrayMaxLength.php @@ -11,7 +11,7 @@ class ArrayMaxLength /** * Match the max length of an array * - * @param array $array An array + * @param array $array An array * @param int|string $maxLength The expected maximum length of $array * @throws InvalidArgumentException */ diff --git a/src/ArrayContainsComparator/Matcher/ArrayMinLength.php b/src/ArrayContainsComparator/Matcher/ArrayMinLength.php index 2313529..a7900d4 100644 --- a/src/ArrayContainsComparator/Matcher/ArrayMinLength.php +++ b/src/ArrayContainsComparator/Matcher/ArrayMinLength.php @@ -11,7 +11,7 @@ class ArrayMinLength /** * Match the min length of an array * - * @param array $array An array + * @param array $array An array * @param int|string $minLength The expected minimum length of $array * @throws InvalidArgumentException */ diff --git a/src/ArrayContainsComparator/Matcher/JWT.php b/src/ArrayContainsComparator/Matcher/JWT.php index 5ed116a..8a95746 100644 --- a/src/ArrayContainsComparator/Matcher/JWT.php +++ b/src/ArrayContainsComparator/Matcher/JWT.php @@ -19,7 +19,7 @@ class JWT /** * JWT tokens present in the response body * - * @var array + * @var array,secret:string}> */ private array $jwtTokens = []; @@ -41,6 +41,8 @@ public function __construct(Comparator $comparator) /** * Add a JWT token that can be matched + * + * @param array $payload */ public function addToken(string $name, array $payload, string $secret): self { diff --git a/src/Context/ApiClientAwareContext.php b/src/Context/ApiClientAwareContext.php index 78d677e..79b0497 100644 --- a/src/Context/ApiClientAwareContext.php +++ b/src/Context/ApiClientAwareContext.php @@ -10,6 +10,8 @@ interface ApiClientAwareContext extends Context { /** * Initialize the Guzzle client + * + * @param array $config */ public function initializeClient(array $config): self; } diff --git a/src/Context/ApiContext.php b/src/Context/ApiContext.php index 4f367fd..631e26a 100644 --- a/src/Context/ApiContext.php +++ b/src/Context/ApiContext.php @@ -86,6 +86,7 @@ class ApiContext implements ApiClientAwareContext, ArrayContainsComparatorAwareC /** * Set the client instance * + * @param array $config * @throws InvalidArgumentException */ public function initializeClient(array $config): static @@ -1409,7 +1410,7 @@ protected function getResponseBody(): array|stdClass * Get the response body as an array * * @throws InvalidArgumentException - * @return array + * @return array */ protected function getResponseBodyArray(): array { diff --git a/src/Context/Initializer/ApiClientAwareInitializer.php b/src/Context/Initializer/ApiClientAwareInitializer.php index ae4137a..322bf0b 100644 --- a/src/Context/Initializer/ApiClientAwareInitializer.php +++ b/src/Context/Initializer/ApiClientAwareInitializer.php @@ -13,7 +13,7 @@ class ApiClientAwareInitializer implements ContextInitializer { /** - * @var array Guzzle client configuration array + * @var array Guzzle client configuration array * @see http://docs.guzzlephp.org/ Check out the Guzzle docs for a complete overview of available configuration parameters */ private array $config = []; @@ -21,7 +21,7 @@ class ApiClientAwareInitializer implements ContextInitializer /** * Class constructor * - * @param array $config Guzzle client configuration array + * @param array $config Guzzle client configuration array */ public function __construct(array $config) { diff --git a/src/ServiceContainer/BehatApiExtension.php b/src/ServiceContainer/BehatApiExtension.php index 7628d4d..17ca622 100644 --- a/src/ServiceContainer/BehatApiExtension.php +++ b/src/ServiceContainer/BehatApiExtension.php @@ -65,7 +65,7 @@ public function configure(ArrayNodeDefinition $builder): void } /** - * @param array $config Guzzle client configuration array + * @param array{apiClient:array} $config Guzzle client configuration array * @see http://docs.guzzlephp.org/ Check out the Guzzle docs for a complete overview of available configuration parameters */ public function load(ContainerBuilder $container, array $config): void diff --git a/tests/ArrayContainsComparatorTest.php b/tests/ArrayContainsComparatorTest.php index 25a299d..978f2e9 100644 --- a/tests/ArrayContainsComparatorTest.php +++ b/tests/ArrayContainsComparatorTest.php @@ -19,7 +19,7 @@ public function setUp(): void } /** - * @return array + * @return array,haystack:array}> */ public static function getDataForInArrayCheck(): array { @@ -165,7 +165,7 @@ public static function getDataForInArrayCheck(): array } /** - * @return array + * @return array,haystack:array}> */ public static function getDataForCompareCheck(): array { @@ -210,7 +210,7 @@ public static function getDataForCompareCheck(): array } /** - * @return array + * @return array,haystack:array}> */ public static function getDataForSpecificKeyInListChecks(): array { From 2ebbc02733c9d2eb7bbf87b9256d2bf467428663 Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Tue, 7 Jan 2025 08:04:45 +0100 Subject: [PATCH 13/15] Add phpstan/phpstan-deprecation-rules extension --- composer.json | 1 + composer.lock | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index b3fd792..072a262 100644 --- a/composer.json +++ b/composer.json @@ -30,6 +30,7 @@ "imbo/imbo-coding-standard": "^2.0", "phpstan/extension-installer": "^1.4", "phpstan/phpstan": "^2.1", + "phpstan/phpstan-deprecation-rules": "^2.0", "phpstan/phpstan-phpunit": "^2.0", "phpunit/phpunit": "^11.5", "slim/psr7": "^1.3", diff --git a/composer.lock b/composer.lock index 0357a16..ab0b723 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": "df380338f2316c396f18b57456fc07af", + "content-hash": "19e29faee7a03b8e460760610cebfca7", "packages": [ { "name": "beberlei/assert", @@ -3015,6 +3015,53 @@ ], "time": "2025-01-05T16:43:48+00:00" }, + { + "name": "phpstan/phpstan-deprecation-rules", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "1cc1259cb91ee4cfbb5c39bca9f635f067c910b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/1cc1259cb91ee4cfbb5c39bca9f635f067c910b4", + "reference": "1cc1259cb91ee4cfbb5c39bca9f635f067c910b4", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", + "support": { + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/2.0.1" + }, + "time": "2024-11-28T21:56:36+00:00" + }, { "name": "phpstan/phpstan-phpunit", "version": "2.0.3", From 9fec1c186851bbc44ee499da313b1276628cb32a Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Tue, 7 Jan 2025 08:14:28 +0100 Subject: [PATCH 14/15] Use level 8 for PHPStan --- phpstan.neon | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 21dc252..6c51711 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,5 @@ parameters: - level: 6 + level: 8 paths: - src - tests @@ -7,4 +7,8 @@ parameters: - message: '#Method [a-zA-Z0-9\\_]+::test#' identifier: missingType.iterableValue - path: tests \ No newline at end of file + path: tests + - + message: '#Property [a-zA-Z0-9\\_]+::\$historyContainer#' + identifier: assign.propertyType + path: tests/Context/ApiContextTest.php \ No newline at end of file From db56f9dfd006f8a8669bc91dec8672bbd638378e Mon Sep 17 00:00:00 2001 From: Christer Edvartsen Date: Tue, 7 Jan 2025 08:45:23 +0100 Subject: [PATCH 15/15] Update ChangeLog --- ChangeLog.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index ba0fb2a..85555ac 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,6 +1,13 @@ Changelog for Behat API Extension ================================= +v6.0.0 +------ +__N/A__ + +* [#139](https://github.com/imbo/behat-api-extension/pull/139): Require PHP >= 8.3 +- [#138](https://github.com/imbo/behat-api-extension/pull/138): Support for PHP 8.4 ([@LenaDooms](https://github.com/LenaDooms)) + v5.0.0 ------ __2023-03-27__