From d9ac6d8e30b30b9b5643eb3135f42dbf5215b4d8 Mon Sep 17 00:00:00 2001 From: Bram Date: Mon, 28 Feb 2022 18:45:00 +0100 Subject: [PATCH 001/229] Add Faker's container interface (#454) --- phpstan-baseline.neon | 2 +- roave-bc-check.yaml | 6 ++ .../{Extension => Container}/Container.php | 88 ++++++++++--------- .../ContainerBuilder.php | 10 ++- .../ContainerException.php | 2 +- src/Faker/Container/ContainerInterface.php | 13 +++ .../NotInContainerException.php | 2 +- src/Faker/Generator.php | 4 +- test/Faker/Extension/ContainerBuilderTest.php | 6 +- test/Faker/Extension/ContainerTest.php | 4 +- test/Faker/GeneratorTest.php | 4 +- 11 files changed, 87 insertions(+), 54 deletions(-) rename src/Faker/{Extension => Container}/Container.php (68%) rename src/Faker/{Extension => Container}/ContainerBuilder.php (88%) rename src/Faker/{Extension => Container}/ContainerException.php (91%) create mode 100644 src/Faker/Container/ContainerInterface.php rename src/Faker/{Extension => Container}/NotInContainerException.php (91%) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index f445f869e6..fd3a5acbca 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -18,7 +18,7 @@ parameters: - message: "#^Result of && is always false\\.$#" count: 1 - path: src/Faker/Extension/ContainerBuilder.php + path: src/Faker/Container/ContainerBuilder.php - message: "#^Method Faker\\\\Generator\\:\\:optional\\(\\) should return Faker\\\\Generator but returns Faker\\\\ChanceGenerator\\.$#" diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 8379145507..3d83bf0412 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -10,3 +10,9 @@ parameters: - '#\[BC\] CHANGED: The parameter \$max of Faker\\Extension\\NumberExtension\#randomFloat\(\) changed from float to float\|null#' - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid3\(\) was removed#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerBuilder has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\Container has been deleted#' + - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to a non-contravariant Faker\\Container\\ContainerInterface\|null#' + - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to Faker\\Container\\ContainerInterface\|null#' diff --git a/src/Faker/Extension/Container.php b/src/Faker/Container/Container.php similarity index 68% rename from src/Faker/Extension/Container.php rename to src/Faker/Container/Container.php index 08cbb37f49..ddc5a27f67 100644 --- a/src/Faker/Extension/Container.php +++ b/src/Faker/Container/Container.php @@ -2,9 +2,9 @@ declare(strict_types=1); -namespace Faker\Extension; +namespace Faker\Container; -use Psr\Container\ContainerInterface; +use Faker\Extension\Extension; /** * A simple implementation of a container. @@ -32,16 +32,16 @@ public function __construct(array $definitions) } /** + * Retrieve a definition from the container. + * * @param string $id * * @throws \InvalidArgumentException * @throws \RuntimeException * @throws ContainerException * @throws NotInContainerException - * - * @return Extension */ - public function get($id) + public function get($id): Extension { if (!is_string($id)) { throw new \InvalidArgumentException(sprintf( @@ -63,62 +63,62 @@ public function get($id) $definition = $this->definitions[$id]; + $service = $this->services[$id] = $this->getService($id, $definition); + + if (!$service instanceof Extension) { + throw new \RuntimeException(sprintf( + 'Service resolved for identifier "%s" does not implement the %s" interface.', + $id, + Extension::class + )); + } + + return $service; + } + + /** + * Get the service from a definition. + * + * @param callable|object|string $definition + */ + private function getService($id, $definition) + { if (is_callable($definition)) { try { - $service = $definition(); + return $definition(); } catch (\Throwable $e) { throw new ContainerException( - sprintf( - 'Error while invoking callable for "%s"', - $id - ), + sprintf('Error while invoking callable for "%s"', $id), 0, $e ); } } elseif (is_object($definition)) { - $service = $definition; + return $definition; } elseif (is_string($definition)) { - if (!class_exists($definition)) { - throw new ContainerException(sprintf( - 'Could not instantiate class "%s". Class was not found.', - $id - )); + if (class_exists($definition)) { + try { + return new $definition(); + } catch (\Throwable $e) { + throw new ContainerException(sprintf('Could not instantiate class "%s"', $id), 0, $e); + } } - try { - $service = new $definition(); - } catch (\Throwable $e) { - throw new ContainerException( - sprintf( - 'Could not instantiate class "%s"', - $id - ), - 0, - $e - ); - } + throw new ContainerException(sprintf( + 'Could not instantiate class "%s". Class was not found.', + $id + )); } else { throw new ContainerException(sprintf( 'Invalid type for definition with id "%s"', $id )); } - - if (!$service instanceof Extension) { - throw new \RuntimeException(sprintf( - 'Service resolved for identifier "%s" does not implement the %s" interface.', - $id, - Extension::class - )); - } - - $this->services[$id] = $service; - - return $service; } /** + * Check if the container contains a given identifier. + * * @param string $id * * @throws \InvalidArgumentException @@ -134,4 +134,12 @@ public function has($id): bool return array_key_exists($id, $this->definitions); } + + /** + * Get the bindings between Extension interfaces and implementations. + */ + public function getDefinitions(): array + { + return $this->definitions; + } } diff --git a/src/Faker/Extension/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php similarity index 88% rename from src/Faker/Extension/ContainerBuilder.php rename to src/Faker/Container/ContainerBuilder.php index 954f52d290..1a646103bd 100644 --- a/src/Faker/Extension/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -2,10 +2,16 @@ declare(strict_types=1); -namespace Faker\Extension; +namespace Faker\Container; use Faker\Core; -use Psr\Container\ContainerInterface; +use Faker\Extension\BarcodeExtension; +use Faker\Extension\BloodExtension; +use Faker\Extension\ColorExtension; +use Faker\Extension\FileExtension; +use Faker\Extension\NumberExtension; +use Faker\Extension\UuidExtension; +use Faker\Extension\VersionExtension; /** * @experimental This class is experimental and does not fall under our BC promise diff --git a/src/Faker/Extension/ContainerException.php b/src/Faker/Container/ContainerException.php similarity index 91% rename from src/Faker/Extension/ContainerException.php rename to src/Faker/Container/ContainerException.php index b26552cd48..12b3caa066 100644 --- a/src/Faker/Extension/ContainerException.php +++ b/src/Faker/Container/ContainerException.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Faker\Extension; +namespace Faker\Container; use Psr\Container\ContainerExceptionInterface; diff --git a/src/Faker/Container/ContainerInterface.php b/src/Faker/Container/ContainerInterface.php new file mode 100644 index 0000000000..d34f4a8967 --- /dev/null +++ b/src/Faker/Container/ContainerInterface.php @@ -0,0 +1,13 @@ +container = $container ?: Extension\ContainerBuilder::getDefault(); + $this->container = $container ?: Container\ContainerBuilder::getDefault(); } /** diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index c270bbeb95..a97415dbc0 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -4,14 +4,14 @@ namespace Faker\Test\Extension; +use Faker\Container\ContainerBuilder; +use Faker\Container\ContainerInterface; use Faker\Core\File; -use Faker\Extension\ContainerBuilder; use Faker\Extension\Extension; use PHPUnit\Framework\TestCase; -use Psr\Container\ContainerInterface; /** - * @covers \Faker\Extension\ContainerBuilder + * @covers \Faker\Container\ContainerBuilder */ final class ContainerBuilderTest extends TestCase { diff --git a/test/Faker/Extension/ContainerTest.php b/test/Faker/Extension/ContainerTest.php index 50cb169122..069fa2b55a 100644 --- a/test/Faker/Extension/ContainerTest.php +++ b/test/Faker/Extension/ContainerTest.php @@ -4,15 +4,15 @@ namespace Faker\Test\Extension; +use Faker\Container\Container; use Faker\Core\File; -use Faker\Extension\Container; use Faker\Extension\Extension; use PHPUnit\Framework\TestCase; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; /** - * @covers \Faker\Extension\Container + * @covers \Faker\Container\Container */ final class ContainerTest extends TestCase { diff --git a/test/Faker/GeneratorTest.php b/test/Faker/GeneratorTest.php index 71c2f0d479..4b14d7315f 100644 --- a/test/Faker/GeneratorTest.php +++ b/test/Faker/GeneratorTest.php @@ -2,11 +2,11 @@ namespace Faker\Test; +use Faker\Container\Container; +use Faker\Container\ContainerBuilder; use Faker\Core\Blood; use Faker\Core\File; use Faker\Extension\BloodExtension; -use Faker\Extension\Container; -use Faker\Extension\ContainerBuilder; use Faker\Extension\ExtensionNotFound; use Faker\Extension\FileExtension; use Faker\Generator; From e3ed7b54553155be036a3048d5725f1ab8a892f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Mar 2022 22:28:07 +0100 Subject: [PATCH 002/229] github-actions(deps): bump actions/checkout from 2 to 3 (#459) Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bc-check.yml | 2 +- .github/workflows/branch-alias.yml | 2 +- .github/workflows/code-coverage.yml | 2 +- .github/workflows/coding-standards.yml | 2 +- .github/workflows/static-analysis.yml | 4 ++-- .github/workflows/tests.yml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/bc-check.yml b/.github/workflows/bc-check.yml index 430a5c7112..437086ef28 100644 --- a/.github/workflows/bc-check.yml +++ b/.github/workflows/bc-check.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Roave BC Check uses: docker://nyholm/roave-bc-check-ga diff --git a/.github/workflows/branch-alias.yml b/.github/workflows/branch-alias.yml index 2c7e0819a5..4214bc2ea5 100644 --- a/.github/workflows/branch-alias.yml +++ b/.github/workflows/branch-alias.yml @@ -17,7 +17,7 @@ jobs: coverage: none - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: ref: main diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index 23de8ce267..d91da0200b 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -20,7 +20,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 12052eb0c9..6de6d25d8b 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -20,7 +20,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 309d88ec28..12bab01726 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up PHP uses: shivammathur/setup-php@v2 @@ -61,7 +61,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c27c8ae6f5..a42daaf495 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Install PHP with extensions uses: shivammathur/setup-php@v2 From 06532ac450558f2c1df313b1ccfb08a89d7bed21 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Mar 2022 22:28:25 +0100 Subject: [PATCH 003/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#458) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.19.0 to 4.22.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/4.19.0...4.22.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 118 ++++++++++++++++----------------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index dfaf53e540..582b41f603 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.1 || ^8.0", - "vimeo/psalm": "^4.19.0" + "vimeo/psalm": "^4.22.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 607ce4d374..fc2e976b45 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "b3edbf59c0fadfd04d4d99c797e34fc7", + "content-hash": "49826e64f68d00dfe7deacc7532b0ed7", "packages": [ { "name": "amphp/amp", - "version": "v2.6.1", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae" + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", - "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", "shasum": "" }, "require": { @@ -39,13 +39,13 @@ } }, "autoload": { - "psr-4": { - "Amp\\": "lib" - }, "files": [ "lib/functions.php", "lib/Internal/functions.php" - ] + ], + "psr-4": { + "Amp\\": "lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -70,7 +70,7 @@ } ], "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "http://amphp.org/amp", + "homepage": "https://amphp.org/amp", "keywords": [ "async", "asynchronous", @@ -85,7 +85,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.1" + "source": "https://github.com/amphp/amp/tree/v2.6.2" }, "funding": [ { @@ -93,7 +93,7 @@ "type": "github" } ], - "time": "2021-09-23T18:43:08+00:00" + "time": "2022-02-20T17:52:18+00:00" }, { "name": "amphp/byte-stream", @@ -128,12 +128,12 @@ } }, "autoload": { - "psr-4": { - "Amp\\ByteStream\\": "lib" - }, "files": [ "lib/functions.php" - ] + ], + "psr-4": { + "Amp\\ByteStream\\": "lib" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -318,23 +318,23 @@ }, { "name": "composer/semver", - "version": "3.2.7", + "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee" + "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/deac27056b57e46faf136fae7b449eeaa71661ee", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee", + "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649", + "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -379,7 +379,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.7" + "source": "https://github.com/composer/semver/tree/3.2.9" }, "funding": [ { @@ -395,20 +395,20 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:57:54+00:00" + "time": "2022-02-04T13:58:43+00:00" }, { "name": "composer/xdebug-handler", - "version": "2.0.4", + "version": "2.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "0c1a3925ec58a4ec98e992b9c7d171e9e184be0a" + "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/0c1a3925ec58a4ec98e992b9c7d171e9e184be0a", - "reference": "0c1a3925ec58a4ec98e992b9c7d171e9e184be0a", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a", + "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a", "shasum": "" }, "require": { @@ -445,7 +445,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.4" + "source": "https://github.com/composer/xdebug-handler/tree/2.0.5" }, "funding": [ { @@ -461,7 +461,7 @@ "type": "tidelift" } ], - "time": "2022-01-04T17:06:45+00:00" + "time": "2022-02-24T20:20:32+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -1092,16 +1092,16 @@ }, { "name": "symfony/console", - "version": "v4.4.37", + "version": "v4.4.38", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0259f01dbf9d77badddbbf4c2abb681f24c9cac6" + "reference": "5a50085bf5460f0c0d60a50b58388c1249826b8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0259f01dbf9d77badddbbf4c2abb681f24c9cac6", - "reference": "0259f01dbf9d77badddbbf4c2abb681f24c9cac6", + "url": "https://api.github.com/repos/symfony/console/zipball/5a50085bf5460f0c0d60a50b58388c1249826b8a", + "reference": "5a50085bf5460f0c0d60a50b58388c1249826b8a", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.37" + "source": "https://github.com/symfony/console/tree/v4.4.38" }, "funding": [ { @@ -1178,7 +1178,7 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:15:26+00:00" + "time": "2022-01-30T21:23:57+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1214,12 +1214,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1296,12 +1296,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1373,12 +1373,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1452,12 +1452,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1588,16 +1588,16 @@ }, { "name": "vimeo/psalm", - "version": "4.19.0", + "version": "4.22.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "a2ad69ae4f5ab1f7d225a8dc4e2ec2d9415ed599" + "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/a2ad69ae4f5ab1f7d225a8dc4e2ec2d9415ed599", - "reference": "a2ad69ae4f5ab1f7d225a8dc4e2ec2d9415ed599", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/fc2c6ab4d5fa5d644d8617089f012f3bb84b8703", + "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703", "shasum": "" }, "require": { @@ -1663,13 +1663,13 @@ } }, "autoload": { - "psr-4": { - "Psalm\\": "src/Psalm/" - }, "files": [ "src/functions.php", "src/spl_object_id.php" - ] + ], + "psr-4": { + "Psalm\\": "src/Psalm/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1688,9 +1688,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.19.0" + "source": "https://github.com/vimeo/psalm/tree/4.22.0" }, - "time": "2022-01-27T19:00:37+00:00" + "time": "2022-02-24T20:34:05+00:00" }, { "name": "webmozart/assert", From c917dde3a74ce85e2d3f2b4c67b7b10e8836d9ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?U=C4=9Fur=20Erkan?= Date: Mon, 7 Mar 2022 20:51:27 +0300 Subject: [PATCH 004/229] Improve Turkish phone numbers for E164 and landline support (#460) --- src/Faker/Provider/tr_TR/PhoneNumber.php | 153 ++++++++++++++++++ test/Faker/Provider/tr_TR/PhoneNumberTest.php | 8 + 2 files changed, 161 insertions(+) diff --git a/src/Faker/Provider/tr_TR/PhoneNumber.php b/src/Faker/Provider/tr_TR/PhoneNumber.php index be35cb56ca..3103c77eb6 100644 --- a/src/Faker/Provider/tr_TR/PhoneNumber.php +++ b/src/Faker/Provider/tr_TR/PhoneNumber.php @@ -4,30 +4,183 @@ class PhoneNumber extends \Faker\Provider\PhoneNumber { + /** + * Mixed landline and mobile phone numbers valid for Turkey + * + * @see https://en.wikipedia.org/wiki/Telephone_numbers_in_Turkey + * + * @var string[] + */ protected static $formats = [ + '0212#######', + '0216#######', + '0222#######', + '0224#######', '050########', '053########', '054########', '055########', + '0 212 ### ## ##', + '0 216 ### ## ##', + '0 222 ### ## ##', + '0 224 ### ## ##', '0 50# ### ## ##', '0 53# ### ## ##', '0 54# ### ## ##', '0 55# ### ## ##', + '0 (212) ### ## ##', + '0 (216) ### ## ##', + '0 (222) ### ## ##', + '0 (224) ### ## ##', '0 (50#) ### ## ##', '0 (53#) ### ## ##', '0 (54#) ### ## ##', '0 (55#) ### ## ##', + '+90212#######', + '+90216#######', + '+90222#######', + '+90224#######', '+9050########', '+9053########', '+9054########', '+9055########', + '+90 212 ### ## ##', + '+90 216 ### ## ##', + '+90 222 ### ## ##', + '+90 224 ### ## ##', '+90 50# ### ## ##', '+90 53# ### ## ##', '+90 54# ### ## ##', '+90 55# ### ## ##', + '+90 (212) ### ## ##', + '+90 (216) ### ## ##', + '+90 (222) ### ## ##', + '+90 (224) ### ## ##', '+90 (50#) ### ## ##', '+90 (53#) ### ## ##', '+90 (54#) ### ## ##', '+90 (55#) ### ## ##', ]; + + /** + * Mixed landline and mobile phone numbers in E164 format valid for Turkey + * + * @see https://en.wikipedia.org/wiki/Telephone_numbers_in_Turkey + * + * @var string[] + */ + protected static $e164Formats = [ + '+90212#######', + '+90216#######', + '+90222#######', + '+90224#######', + '+90226#######', + '+90228#######', + '+90232#######', + '+90236#######', + '+90242#######', + '+90246#######', + '+90248#######', + '+90252#######', + '+90256#######', + '+90258#######', + '+90262#######', + '+90264#######', + '+90266#######', + '+90272#######', + '+90274#######', + '+90276#######', + '+90282#######', + '+90284#######', + '+90286#######', + '+90288#######', + '+90312#######', + '+90318#######', + '+90322#######', + '+90324#######', + '+90326#######', + '+90328#######', + '+90332#######', + '+90338#######', + '+90342#######', + '+90344#######', + '+90346#######', + '+90348#######', + '+90352#######', + '+90354#######', + '+90356#######', + '+90358#######', + '+90362#######', + '+90364#######', + '+90366#######', + '+90368#######', + '+90370#######', + '+90372#######', + '+90374#######', + '+90376#######', + '+90378#######', + '+90380#######', + '+90382#######', + '+90384#######', + '+90386#######', + '+90388#######', + '+90412#######', + '+90414#######', + '+90416#######', + '+90422#######', + '+90424#######', + '+90426#######', + '+90428#######', + '+90432#######', + '+90434#######', + '+90436#######', + '+90438#######', + '+90442#######', + '+90446#######', + '+90452#######', + '+90454#######', + '+90456#######', + '+90458#######', + '+90462#######', + '+90464#######', + '+90466#######', + '+90472#######', + '+90474#######', + '+90476#######', + '+90478#######', + '+90482#######', + '+90484#######', + '+90486#######', + '+90488#######', + '+90501#######', + '+90502#######', + '+90503#######', + '+90504#######', + '+90505#######', + '+90506#######', + '+90507#######', + '+90530#######', + '+90531#######', + '+90532#######', + '+90533#######', + '+90534#######', + '+90535#######', + '+90536#######', + '+90537#######', + '+90538#######', + '+90539#######', + '+90541#######', + '+90542#######', + '+90543#######', + '+90544#######', + '+90545#######', + '+90546#######', + '+90549#######', + '+90551#######', + '+90552#######', + '+90553#######', + '+90554#######', + '+90555#######', + '+90556#######', + ]; } diff --git a/test/Faker/Provider/tr_TR/PhoneNumberTest.php b/test/Faker/Provider/tr_TR/PhoneNumberTest.php index 33d374c203..b4439cb9d6 100644 --- a/test/Faker/Provider/tr_TR/PhoneNumberTest.php +++ b/test/Faker/Provider/tr_TR/PhoneNumberTest.php @@ -21,6 +21,14 @@ public function testPhoneNumber() } } + public function testE164PhoneNumberFormat() + { + for ($i = 0; $i < 10; ++$i) { + $number = $this->faker->e164PhoneNumber(); + self::assertMatchesRegularExpression('/^\+90\d{10}$/', $number); + } + } + protected function getProviders(): iterable { yield new PhoneNumber($this->faker); From 4e651e1648483e2740af8e24c67c5f823476c748 Mon Sep 17 00:00:00 2001 From: Bram Date: Tue, 8 Mar 2022 23:29:28 +0100 Subject: [PATCH 005/229] Set cache directory (#461) --- .php-cs-fixer.dist.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 90f97af5af..8481597249 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -13,7 +13,9 @@ $config = new PhpCsFixer\Config('faker'); +mkdir('.build/php-cs-fixer', 0755, true); return $config + ->setCacheFile('.build/php-cs-fixer/cache') ->setFinder($finder) ->setRiskyAllowed(true) ->setRules([ From 571e0624b7ba5b620f68f05edd322d93a8e52353 Mon Sep 17 00:00:00 2001 From: Bram Date: Tue, 8 Mar 2022 23:55:43 +0100 Subject: [PATCH 006/229] Add DateTime extension (#431) * WIP add DateTime extension * Fix DateTime concat * Add implementation for dateTimeInterval and dateTimeThisWeek * Implement DateTimeExtension * Clarity phpdoc on DateTime * Add test template * Formatting * Add tests for DateTime * Dynamic contains * Fix formatting * Test types * unitTime should be an integer * Add test with timezone validation * Update version * Add note about strtotime * Add import for DateTimeExtension --- src/Faker/Container/ContainerBuilder.php | 2 + src/Faker/Core/DateTime.php | 224 ++++++++++++++++++++ src/Faker/Core/Number.php | 4 +- src/Faker/Extension/DateTimeExtension.php | 240 ++++++++++++++++++++++ src/Faker/Provider/DateTime.php | 40 ++-- test/Faker/Core/DateTimeTest.php | 228 ++++++++++++++++++++ 6 files changed, 717 insertions(+), 21 deletions(-) create mode 100644 src/Faker/Core/DateTime.php create mode 100644 src/Faker/Extension/DateTimeExtension.php create mode 100644 test/Faker/Core/DateTimeTest.php diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 1a646103bd..008bc5d6c2 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -8,6 +8,7 @@ use Faker\Extension\BarcodeExtension; use Faker\Extension\BloodExtension; use Faker\Extension\ColorExtension; +use Faker\Extension\DateTimeExtension; use Faker\Extension\FileExtension; use Faker\Extension\NumberExtension; use Faker\Extension\UuidExtension; @@ -70,6 +71,7 @@ public static function defaultExtensions(): array BarcodeExtension::class => Core\Barcode::class, BloodExtension::class => Core\Blood::class, ColorExtension::class => Core\Color::class, + DateTimeExtension::class => Core\DateTime::class, FileExtension::class => Core\File::class, NumberExtension::class => Core\Number::class, VersionExtension::class => Core\Version::class, diff --git a/src/Faker/Core/DateTime.php b/src/Faker/Core/DateTime.php new file mode 100644 index 0000000000..f14b540f3c --- /dev/null +++ b/src/Faker/Core/DateTime.php @@ -0,0 +1,224 @@ +getTimestamp(); + } + + return strtotime(empty($until) ? 'now' : $until); + } + + /** + * Get a DateTime created based on a POSIX-timestamp. + * + * @param int $timestamp the UNIX / POSIX-compatible timestamp + */ + protected function getTimestampDateTime(int $timestamp): \DateTime + { + return new \DateTime('@' . $timestamp); + } + + protected function setDefaultTimezone(string $timezone = null): void + { + $this->defaultTimezone = $timezone; + } + + protected function getDefaultTimezone(): ?string + { + return $this->defaultTimezone; + } + + protected function resolveTimezone(?string $timezone): string + { + if ($timezone !== null) { + return $timezone; + } + + return null === $this->defaultTimezone ? date_default_timezone_get() : $this->defaultTimezone; + } + + /** + * Internal method to set the timezone on a DateTime object. + */ + protected function setTimezone(\DateTime $dateTime, ?string $timezone): \DateTime + { + $timezone = $this->resolveTimezone($timezone); + + return $dateTime->setTimezone(new \DateTimeZone($timezone)); + } + + public function dateTime($until = 'now', string $timezone = null): \DateTime + { + return $this->setTimezone( + $this->getTimestampDateTime($this->unixTime($until)), + $timezone + ); + } + + public function dateTimeAD($until = 'now', string $timezone = null): \DateTime + { + $min = (PHP_INT_SIZE > 4) ? -62135597361 : -PHP_INT_MAX; + + return $this->setTimezone( + $this->getTimestampDateTime($this->generator->numberBetween($min, $this->getTimestamp($until))), + $timezone + ); + } + + public function dateTimeBetween($from = '-30 years', $until = 'now', string $timezone = null): \DateTime + { + $start = $this->getTimestamp($from); + $end = $this->getTimestamp($until); + + if ($start > $end) { + throw new \InvalidArgumentException('"$from" must be anterior to "$until".'); + } + + $timestamp = $this->generator->numberBetween($start, $end); + + return $this->setTimezone( + $this->getTimestampDateTime($timestamp), + $timezone + ); + } + + public function dateTimeInInterval($from = '-30 years', string $interval = '+5 days', string $timezone = null): \DateTime + { + $intervalObject = \DateInterval::createFromDateString($interval); + $datetime = $from instanceof \DateTime ? $from : new \DateTime($from); + + $other = (clone $datetime)->add($intervalObject); + + $begin = min($datetime, $other); + $end = $datetime === $begin ? $other : $datetime; + + return $this->dateTimeBetween($begin, $end, $timezone); + } + + public function dateTimeThisWeek($until = 'sunday this week', string $timezone = null): \DateTime + { + return $this->dateTimeBetween('monday this week', $until, $timezone); + } + + public function dateTimeThisMonth($until = 'last day of this month', string $timezone = null): \DateTime + { + return $this->dateTimeBetween('first day of this month', $until, $timezone); + } + + public function dateTimeThisYear($until = 'last day of december', string $timezone = null): \DateTime + { + return $this->dateTimeBetween('first day of january', $until, $timezone); + } + + public function dateTimeThisDecade($until = 'now', string $timezone = null): \DateTime + { + $year = floor(date('Y') / 10) * 10; + + return $this->dateTimeBetween("first day of january $year", $until, $timezone); + } + + public function dateTimeThisCentury($until = 'now', string $timezone = null): \DateTime + { + $year = floor(date('Y') / 100) * 100; + + return $this->dateTimeBetween("first day of january $year", $until, $timezone); + } + + public function date(string $format = 'Y-m-d', $until = 'now'): string + { + return $this->dateTime($until)->format($format); + } + + public function time(string $format = 'H:i:s', $until = 'now'): string + { + return $this->date($format, $until); + } + + public function unixTime($until = 'now'): int + { + return $this->generator->numberBetween(0, $this->getTimestamp($until)); + } + + public function iso8601($until = 'now'): string + { + return $this->date(\DateTime::ISO8601, $until); + } + + public function amPm($until = 'now'): string + { + return $this->date('a', $until); + } + + public function dayOfMonth($until = 'now'): string + { + return $this->date('d', $until); + } + + public function dayOfWeek($until = 'now'): string + { + return $this->date('l', $until); + } + + public function month($until = 'now'): string + { + return $this->date('m', $until); + } + + public function monthName($until = 'now'): string + { + return $this->date('F', $until); + } + + public function year($until = 'now'): string + { + return $this->date('Y', $until); + } + + public function century(): string + { + return Helper::randomElement($this->centuries); + } + + public function timezone(): string + { + return Helper::randomElement(\DateTimeZone::listIdentifiers()); + } +} diff --git a/src/Faker/Core/Number.php b/src/Faker/Core/Number.php index f7af0c2960..f67c042675 100644 --- a/src/Faker/Core/Number.php +++ b/src/Faker/Core/Number.php @@ -13,8 +13,8 @@ final class Number implements Extension\NumberExtension { public function numberBetween(int $min = 0, int $max = 2147483647): int { - $int1 = $min < $max ? $min : $max; - $int2 = $min < $max ? $max : $min; + $int1 = min($min, $max); + $int2 = max($min, $max); return mt_rand($int1, $int2); } diff --git a/src/Faker/Extension/DateTimeExtension.php b/src/Faker/Extension/DateTimeExtension.php new file mode 100644 index 0000000000..4cd6c38655 --- /dev/null +++ b/src/Faker/Extension/DateTimeExtension.php @@ -0,0 +1,240 @@ +add($intervalObject); - $begin = $datetime > $otherDatetime ? $otherDatetime : $datetime; + $begin = min($datetime, $otherDatetime); $end = $datetime === $begin ? $otherDatetime : $datetime; return static::dateTimeBetween( @@ -194,11 +194,11 @@ public static function dateTimeInInterval($date = '-30 years', $interval = '+5 d } /** + * Get a date time object somewhere within a century. + * * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` * - * @example DateTime('1964-04-04 11:02:02') - * * @return \DateTime */ public static function dateTimeThisCentury($max = 'now', $timezone = null) @@ -207,11 +207,11 @@ public static function dateTimeThisCentury($max = 'now', $timezone = null) } /** + * Get a date time object somewhere within a decade. + * * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` * - * @example DateTime('2010-03-10 05:18:58') - * * @return \DateTime */ public static function dateTimeThisDecade($max = 'now', $timezone = null) @@ -220,11 +220,11 @@ public static function dateTimeThisDecade($max = 'now', $timezone = null) } /** + * Get a date time object somewhere inside the current year. + * * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` * - * @example DateTime('2011-09-19 09:24:37') - * * @return \DateTime */ public static function dateTimeThisYear($max = 'now', $timezone = null) @@ -233,11 +233,11 @@ public static function dateTimeThisYear($max = 'now', $timezone = null) } /** + * Get a date time object somewhere within a month. + * * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" * @param string|null $timezone time zone in which the date time should be set, default to DateTime::$defaultTimezone, if set, otherwise the result of `date_default_timezone_get` * - * @example DateTime('2011-10-05 12:51:46') - * * @return \DateTime */ public static function dateTimeThisMonth($max = 'now', $timezone = null) @@ -246,6 +246,8 @@ public static function dateTimeThisMonth($max = 'now', $timezone = null) } /** + * Get a string containing either "am" or "pm". + * * @param \DateTime|int|string $max maximum timestamp used as random end limit, default to "now" * * @return string @@ -310,7 +312,7 @@ public static function monthName($max = 'now') * * @return string * - * @example '1673' + * @example '1987' */ public static function year($max = 'now') { diff --git a/test/Faker/Core/DateTimeTest.php b/test/Faker/Core/DateTimeTest.php new file mode 100644 index 0000000000..4b4e476bbb --- /dev/null +++ b/test/Faker/Core/DateTimeTest.php @@ -0,0 +1,228 @@ +extension = $this->faker->ext(DateTimeExtension::class); + } + + public function testDateTime() + { + $dateTime = $this->extension->dateTime('2005-10-19T14:12:00'); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertEquals(new \DateTime('1990-09-29T12:12:53'), $dateTime); + } + + public function testDateTimeWithTimezone() + { + $dateTime = $this->extension->dateTime('2021-09-05T15:10:00', 'America/Los_Angeles'); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertEquals(new \DateTime('1999-12-11T22:41:46.000000-0800'), $dateTime); + self::assertEquals(new \DateTimeZone('America/Los_Angeles'), $dateTime->getTimezone()); + } + + public function testDateTimeAD() + { + $dateTime = $this->extension->dateTimeAD('2012-04-12T19:22:23'); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertEquals(new \DateTime('1166-06-01T17:43:42'), $dateTime); + } + + public function testDateTimeBetween() + { + $dateTime = $this->extension->dateTimeBetween('1998-12-18T11:23:40', '2004-09-15T22:10:45'); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertEquals(new \DateTime('2002-04-17T09:33:38'), $dateTime); + } + + public function testDateTimeBetweenShouldThrowIfFromIsNotAnteriorToUntil() + { + self::expectException(\InvalidArgumentException::class); + $this->extension->dateTimeBetween('2004-09-15T22:10:45', '1998-12-18T11:23:40'); + } + + public function testDateTimeInInterval() + { + $dateTime = $this->extension->dateTimeInInterval('1999-07-16T17:30:12', '+2 years'); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertEquals(new \DateTime('2000-09-12T07:10:58'), $dateTime); + } + + public function testDateTimeThisWeek() + { + $dateTime = $this->extension->dateTimeThisWeek(); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertGreaterThanOrEqual(new \DateTime('monday this week'), $dateTime); + self::assertLessThanOrEqual(new \DateTime('sunday this week'), $dateTime); + } + + public function testDateTimeThisMonth() + { + $dateTime = $this->extension->dateTimeThisMonth(); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertGreaterThanOrEqual(new \DateTime('first day of this month'), $dateTime); + self::assertLessThanOrEqual(new \DateTime('last day of this month'), $dateTime); + } + + public function testDateTimeThisYear() + { + $dateTime = $this->extension->dateTimeThisYear(); + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertGreaterThanOrEqual(new \DateTime('first day of january'), $dateTime); + self::assertLessThanOrEqual(new \DateTime('last day of december'), $dateTime); + } + + public function testDateTimeThisDecade() + { + $dateTime = $this->extension->dateTimeThisDecade(); + + $year = floor(date('Y') / 10) * 10; + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertGreaterThanOrEqual(new \DateTime("first day of january $year"), $dateTime); + self::assertLessThanOrEqual(new \DateTime('now'), $dateTime); + } + + public function testDateTimeThisCentury() + { + $dateTime = $this->extension->dateTimeThisCentury(); + + $year = floor(date('Y') / 100) * 100; + + self::assertInstanceOf(\DateTime::class, $dateTime); + self::assertGreaterThanOrEqual(new \DateTime("first day of january $year"), $dateTime); + self::assertLessThanOrEqual(new \DateTime('now'), $dateTime); + } + + public function testDate() + { + $date = $this->extension->date('Y-m-d', '2102-11-12T14:45:29'); + + self::assertIsString($date); + self::assertEquals('2046-12-26', $date); + } + + public function testTime() + { + $time = $this->extension->time('H:i:s', '1978-06-27T09:43:21'); + + self::assertIsString($time); + self::assertEquals('21:59:44', $time); + } + + public function testUnixTime() + { + $unixTime = $this->extension->unixTime('1993-08-29T15:10:00'); + + self::assertIsInt($unixTime); + self::assertEquals(432630664, $unixTime); + } + + public function testUnitTimeWithNumericUntil() + { + $unixTime = $this->extension->unixTime(1643830258); + + self::assertIsInt($unixTime); + self::assertEquals(952499510, $unixTime); + } + + public function testIso8601() + { + $iso8601 = $this->extension->iso8601('1993-07-11T15:10:00'); + + self::assertIsString($iso8601); + self::assertMatchesRegularExpression('/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\+\d{4}$/', $iso8601); + self::assertEquals('1983-08-19T21:45:51+0000', $iso8601); + } + + public function testAmPm() + { + $amPm = $this->extension->amPm('1929-04-14T15:10:23'); + + self::assertIsString($amPm); + self::assertEquals('pm', $amPm); + self::assertContains($amPm, ['am', 'pm']); + } + + public function testDayOfMonth() + { + $dayOfMonth = $this->extension->dayOfMonth('2001-04-29T15:10:12'); + + self::assertIsString($dayOfMonth); + self::assertEquals('25', $dayOfMonth); + } + + public function testDayOfWeek() + { + $dayOfWeek = $this->extension->dayOfWeek('2021-12-12T15:10:00'); + + self::assertIsString($dayOfWeek); + self::assertEquals('Monday', $dayOfWeek); + } + + public function testMonth() + { + $month = $this->extension->month('2021-05-23T15:10:00'); + + self::assertIsString($month); + self::assertEquals('10', $month); + } + + public function testMonthName() + { + $monthName = $this->extension->monthName('2021-06-06T15:10:00'); + + self::assertIsString($monthName); + self::assertEquals('October', $monthName); + } + + public function testYear() + { + $year = $this->extension->year('2021-09-12T15:10:00'); + + self::assertIsString($year); + self::assertEquals('1999', $year); + } + + public function testCentury() + { + $century = $this->extension->century(); + + self::assertIsString($century); + self::assertEquals('XIX', $century); + } + + public function testTimezone() + { + $timezone = $this->extension->timezone(); + + self::assertIsString($timezone); + self::assertContains($timezone, \DateTimeZone::listIdentifiers()); + } +} From 834cd7c92bbf7a71ea593463f91b7496a9d41b0f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 10 Mar 2022 20:49:14 +0100 Subject: [PATCH 007/229] Updating branch alias to v1.20 (#448) Co-authored-by: GitHub --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 2eda697d11..7c192ac7e4 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,7 @@ }, "extra": { "branch-alias": { - "dev-main": "v1.19-dev" + "dev-main": "v1.20-dev" } } } From acef8f29bfd88bb046a5fe2a08693977aa9501bd Mon Sep 17 00:00:00 2001 From: dutchie027 Date: Thu, 24 Mar 2022 14:16:26 -0400 Subject: [PATCH 008/229] Add Microsoft Edge User Agent (#464) * Added en_US Name Justin * Added Edge UserAgent and Test * decided to rename edge to msedge to avoid possible collisions of names * Revert "Added en_US Name Justin" This reverts commit ef0e1c4a1daebcc4958c0972becd536b1a90cce7. * User Agent test reversion - change back to msedge It seems that when the User Agent test reverted to the original name of `edge` and not `msedge`. This change fixes it back. * white space php-fixer * phpdoc requirements in Generator.php * erroneous white space - even after lint? * Update UserAgent.php Co-authored-by: Bram --- src/Faker/Generator.php | 8 ++++++ src/Faker/Provider/UserAgent.php | 36 +++++++++++++++++++++++++-- test/Faker/Provider/UserAgentTest.php | 5 ++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index 2dbf71056e..ce93aea280 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -513,6 +513,10 @@ * * @method string chrome() * + * @property string $msedge + * + * @method string msedge() + * * @property string $firefox * * @method string firefox() @@ -537,6 +541,10 @@ * * @method string macPlatformToken() * + * @property string $iosMobileToken + * + * @method string iosMobileToken() + * * @property string $linuxPlatformToken * * @method string linuxPlatformToken() diff --git a/src/Faker/Provider/UserAgent.php b/src/Faker/Provider/UserAgent.php index a63b7d1fa3..10e6be4c4e 100644 --- a/src/Faker/Provider/UserAgent.php +++ b/src/Faker/Provider/UserAgent.php @@ -4,7 +4,7 @@ class UserAgent extends Base { - protected static $userAgents = ['firefox', 'chrome', 'internetExplorer', 'opera', 'safari']; + protected static $userAgents = ['firefox', 'chrome', 'internetExplorer', 'opera', 'safari', 'edge']; protected static $windowsPlatformTokens = [ 'Windows NT 6.2', 'Windows NT 6.1', 'Windows NT 6.0', 'Windows NT 5.2', 'Windows NT 5.1', @@ -25,7 +25,7 @@ class UserAgent extends Base /** * Add as many languages as you like. */ - protected static $lang = ['en-US', 'sl-SI']; + protected static $lang = ['en-US', 'sl-SI', 'nl-NL']; /** * Generate mac processor @@ -81,6 +81,28 @@ public static function chrome() return 'Mozilla/5.0 ' . static::randomElement($platforms); } + /** + * Generate Edge user agent + * + * @example 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36 Edg/99.0.1150.36' + * + * @return string + */ + public static function msedge() + { + $saf = self::numberBetween(531, 537) . '.' . self::numberBetween(0, 2); + $chrv = self::numberBetween(79, 99) . '.0'; + + $platforms = [ + '(' . static::windowsPlatformToken() . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/$chrv" . '.' . self::numberBetween(4000, 4844) . '.' . self::numberBetween(10, 99) . " Safari/$saf Edg/$chrv" . self::numberBetween(1000, 1146) . '.' . self::numberBetween(0, 99), + '(' . static::macPlatformToken() . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/$chrv" . '.' . self::numberBetween(4000, 4844) . '.' . self::numberBetween(10, 99) . " Safari/$saf Edg/$chrv" . self::numberBetween(1000, 1146) . '.' . self::numberBetween(0, 99), + '(' . static::linuxPlatformToken() . ") AppleWebKit/$saf (KHTML, like Gecko) Chrome/$chrv" . '.' . self::numberBetween(4000, 4844) . '.' . self::numberBetween(10, 99) . " Safari/$saf EdgA/$chrv" . self::numberBetween(1000, 1146) . '.' . self::numberBetween(0, 99), + '(' . static::iosMobileToken() . ") AppleWebKit/$saf (KHTML, like Gecko) Version/15.0 EdgiOS/$chrv" . self::numberBetween(1000, 1146) . '.' . self::numberBetween(0, 99) . " Mobile/15E148 Safari/$saf", + ]; + + return 'Mozilla/5.0 ' . static::randomElement($platforms); + } + /** * Generate Firefox user agent * @@ -177,6 +199,16 @@ public static function macPlatformToken() return 'Macintosh; ' . static::randomElement(static::$macProcessor) . ' Mac OS X 10_' . self::numberBetween(5, 8) . '_' . self::numberBetween(0, 9); } + /** + * @return string + */ + public static function iosMobileToken() + { + $iosVer = self::numberBetween(13, 15) . '_' . self::numberBetween(0, 2); + + return 'iPhone; CPU iPhone OS ' . $iosVer . ' like Mac OS X'; + } + /** * @return string */ diff --git a/test/Faker/Provider/UserAgentTest.php b/test/Faker/Provider/UserAgentTest.php index 014d78555b..27c6051c9e 100644 --- a/test/Faker/Provider/UserAgentTest.php +++ b/test/Faker/Provider/UserAgentTest.php @@ -39,4 +39,9 @@ public function testChromeUserAgent() { self::assertStringContainsString('(KHTML, like Gecko) Chrome/', UserAgent::chrome()); } + + public function testMSEdgeUserAgent() + { + self::assertStringContainsString('Edg', UserAgent::msedge()); + } } From 4bda6bfb50edeebb2caf11ade74feb60f1198f40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Apr 2022 17:11:56 +0200 Subject: [PATCH 009/229] github-actions(deps): bump peter-evans/create-pull-request from 3 to 4.0.1 (#467) * github-actions(deps): bump peter-evans/create-pull-request Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 3 to 4.0.1. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v3...v4.0.1) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Update branch-alias.yml Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bram --- .github/workflows/branch-alias.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/branch-alias.yml b/.github/workflows/branch-alias.yml index 4214bc2ea5..3a475ad945 100644 --- a/.github/workflows/branch-alias.yml +++ b/.github/workflows/branch-alias.yml @@ -54,7 +54,7 @@ jobs: composer config extra.branch-alias.dev-main ${{ steps.find_alias.outputs.alias }}-dev - name: Create Pull Request - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v4 with: base: main branch: branch-alias-update From 987b51effeeb347fd7bbbf660c5151d870a4853c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Apr 2022 17:15:31 +0200 Subject: [PATCH 010/229] github-actions(deps): bump actions/cache from 2.1.7 to 3.0.1 (#468) * github-actions(deps): bump actions/cache from 2.1.7 to 3.0.1 Bumps [actions/cache](https://github.com/actions/cache) from 2.1.7 to 3.0.1. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v2.1.7...v3.0.1) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Update code-coverage.yml * Update coding-standards.yml * Update coding-standards.yml * Update static-analysis.yml * Update tests.yml Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Bram --- .github/workflows/code-coverage.yml | 2 +- .github/workflows/coding-standards.yml | 4 ++-- .github/workflows/static-analysis.yml | 4 ++-- .github/workflows/tests.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index d91da0200b..f51c2e1a83 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -34,7 +34,7 @@ jobs: run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache dependencies - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: ${{ steps.composer-cache.outputs.dir }} key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 6de6d25d8b..62d69906e8 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -34,7 +34,7 @@ jobs: run: echo "::set-output name=directory::$(composer config cache-dir)" - name: Cache dependencies installed with composer - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: ${{ steps.composer-cache.outputs.directory }} key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} @@ -49,7 +49,7 @@ jobs: composer bin php-cs-fixer install --no-interaction --no-progress --optimize-autoloader - name: Cache cache file for php-cs-fixer - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: .php_cs.cache key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 12bab01726..4c2b7c26d9 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -33,7 +33,7 @@ jobs: run: echo "::set-output name=directory::$(composer config cache-dir)" - name: Cache dependencies installed with composer - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: ${{ steps.composer-cache.outputs.directory }} key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} @@ -75,7 +75,7 @@ jobs: run: echo "::set-output name=directory::$(composer config cache-dir)" - name: Cache dependencies installed with composer - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: ${{ steps.composer-cache.outputs.directory }} key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a42daaf495..e63cb93784 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -46,7 +46,7 @@ jobs: run: echo "::set-output name=dir::$(composer config cache-files-dir)" - name: Cache dependencies - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: ${{ steps.composer-cache.outputs.dir }} key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} From 1895571db1b76474503785f723c762ff8b01c6f8 Mon Sep 17 00:00:00 2001 From: Robbin Janssen Date: Wed, 13 Apr 2022 20:10:13 +0200 Subject: [PATCH 011/229] Fix: rename UserAgent edge to msedge (#469) --- src/Faker/Provider/UserAgent.php | 2 +- test/Faker/Provider/UserAgentTest.php | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Faker/Provider/UserAgent.php b/src/Faker/Provider/UserAgent.php index 10e6be4c4e..752df4d322 100644 --- a/src/Faker/Provider/UserAgent.php +++ b/src/Faker/Provider/UserAgent.php @@ -4,7 +4,7 @@ class UserAgent extends Base { - protected static $userAgents = ['firefox', 'chrome', 'internetExplorer', 'opera', 'safari', 'edge']; + protected static $userAgents = ['firefox', 'chrome', 'internetExplorer', 'opera', 'safari', 'msedge']; protected static $windowsPlatformTokens = [ 'Windows NT 6.2', 'Windows NT 6.1', 'Windows NT 6.0', 'Windows NT 5.2', 'Windows NT 5.1', diff --git a/test/Faker/Provider/UserAgentTest.php b/test/Faker/Provider/UserAgentTest.php index 27c6051c9e..cf7386a474 100644 --- a/test/Faker/Provider/UserAgentTest.php +++ b/test/Faker/Provider/UserAgentTest.php @@ -10,6 +10,18 @@ */ final class UserAgentTest extends TestCase { + public function testAllAgents() + { + $agent = new UserAgent($this->faker); + $reflection = new \ReflectionClass($agent); + $agents = $reflection->getProperty('userAgents'); + $agents->setAccessible(true); + + foreach ($agents->getValue() as $method) { + self::assertNotNull(UserAgent::$method()); + } + } + public function testRandomUserAgent() { self::assertNotNull(UserAgent::userAgent()); From 4e206f81533910dc4cb526493ded048ba0fceab4 Mon Sep 17 00:00:00 2001 From: Abdulqudduus Babalola Date: Mon, 2 May 2022 19:55:26 +0100 Subject: [PATCH 012/229] fix typo (#471) --- src/Faker/Provider/Base.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index 9086ea5538..4ff4492a4e 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -436,7 +436,7 @@ public static function lexify($string = '????') * Replaces hash signs ('#') and question marks ('?') with random numbers and letters * An asterisk ('*') is replaced with either a random number or a random letter * - * @param string $string String that needs to bet parsed + * @param string $string String that needs to be parsed * * @return string */ From f66a262f55aea7917bb74ecc9af13777e0b19b4f Mon Sep 17 00:00:00 2001 From: CalebW Date: Wed, 11 May 2022 03:29:10 -0500 Subject: [PATCH 013/229] Add image formats to `Faker\Provider\Image` (#473) * Added image formats to `Faker\Provider\Image` * Wrote unit tests for image formats in `Image` * Renamed test * Used Image constants, added test for downloaded image * Fixed `php-cs-fixer` issues Co-authored-by: Caleb White --- src/Faker/Provider/Image.php | 42 ++++++++++-- test/Faker/Provider/ImageTest.php | 105 +++++++++++++++++++++++++----- 2 files changed, 126 insertions(+), 21 deletions(-) diff --git a/src/Faker/Provider/Image.php b/src/Faker/Provider/Image.php index 167641c1bd..42b24d15a0 100644 --- a/src/Faker/Provider/Image.php +++ b/src/Faker/Provider/Image.php @@ -12,6 +12,10 @@ class Image extends Base */ public const BASE_URL = 'https://via.placeholder.com'; + public const FORMAT_JPG = 'jpg'; + public const FORMAT_JPEG = 'jpeg'; + public const FORMAT_PNG = 'png'; + /** * @var array * @@ -35,6 +39,7 @@ class Image extends Base * @param bool $randomize * @param string|null $word * @param bool $gray + * @param string $format * * @return string */ @@ -44,9 +49,21 @@ public static function imageUrl( $category = null, $randomize = true, $word = null, - $gray = false + $gray = false, + $format = 'png' ) { - $size = sprintf('%dx%d.png', $width, $height); + // Validate image format + $imageFormats = static::getFormats(); + + if (!in_array(strtolower($format), $imageFormats, true)) { + throw new \InvalidArgumentException(sprintf( + 'Invalid image format "%s". Allowable formats are: %s', + $format, + implode(', ', $imageFormats) + )); + } + + $size = sprintf('%dx%d.%s', $width, $height, $format); $imageParts = []; @@ -90,7 +107,8 @@ public static function image( $fullPath = true, $randomize = true, $word = null, - $gray = false + $gray = false, + $format = 'png' ) { $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible // Validate directory path @@ -101,10 +119,10 @@ public static function image( // Generate a random filename. Use the server address so that a file // generated at the same time on a different server won't have a collision. $name = md5(uniqid(empty($_SERVER['SERVER_ADDR']) ? '' : $_SERVER['SERVER_ADDR'], true)); - $filename = $name . '.png'; + $filename = sprintf('%s.%s', $name, $format); $filepath = $dir . DIRECTORY_SEPARATOR . $filename; - $url = static::imageUrl($width, $height, $category, $randomize, $word, $gray); + $url = static::imageUrl($width, $height, $category, $randomize, $word, $gray, $format); // save file if (function_exists('curl_exec')) { @@ -136,4 +154,18 @@ public static function image( return $fullPath ? $filepath : $filename; } + + public static function getFormats(): array + { + return array_keys(static::getFormatConstants()); + } + + public static function getFormatConstants(): array + { + return [ + static::FORMAT_JPG => constant('IMAGETYPE_JPEG'), + static::FORMAT_JPEG => constant('IMAGETYPE_JPEG'), + static::FORMAT_PNG => constant('IMAGETYPE_PNG'), + ]; + } } diff --git a/test/Faker/Provider/ImageTest.php b/test/Faker/Provider/ImageTest.php index 77e4acd93b..8b3897be49 100644 --- a/test/Faker/Provider/ImageTest.php +++ b/test/Faker/Provider/ImageTest.php @@ -85,35 +85,108 @@ public function testImageUrlAddsARandomGetParameterByDefault() self::assertMatchesRegularExpression('#\w*#', $splitUrl[1]); } - public function testDownloadWithDefaults() + public function testImageUrlThrowsExceptionOnInvalidImageFormat() { - $curlPing = curl_init(Image::BASE_URL); - curl_setopt($curlPing, CURLOPT_TIMEOUT, 5); - curl_setopt($curlPing, CURLOPT_CONNECTTIMEOUT, 5); - curl_setopt($curlPing, CURLOPT_RETURNTRANSFER, true); - curl_setopt($curlPing, CURLOPT_FOLLOWLOCATION, true); - $data = curl_exec($curlPing); - $httpCode = curl_getinfo($curlPing, CURLINFO_HTTP_CODE); - curl_close($curlPing); + $this->expectException(\InvalidArgumentException::class); + Image::imageUrl( + 800, + 400, + 'nature', + false, + 'Faker', + true, + 'foo' + ); + } - if ($httpCode < 200 | $httpCode > 300) { - self::markTestSkipped('Placeholder.com is offline, skipping image download'); + public function testImageUrlAcceptsDifferentImageFormats() + { + foreach (Image::getFormats() as $format) { + $imageUrl = Image::imageUrl( + 800, + 400, + 'nature', + false, + 'Faker', + true, + $format + ); + + self::assertMatchesRegularExpression( + "#^https://via.placeholder.com/800x400.{$format}/CCCCCC\?text=nature\+Faker#", + $imageUrl + ); } + } + + public function testDownloadWithDefaults() + { + self::checkUrlConnection(Image::BASE_URL); $file = Image::image(sys_get_temp_dir()); self::assertFileExists($file); + self::checkImageProperties($file, 640, 480, 'png'); + } + + public function testDownloadWithDifferentImageFormats() + { + self::checkUrlConnection(Image::BASE_URL); + + foreach (Image::getFormats() as $format) { + $width = 800; + $height = 400; + $file = Image::image( + sys_get_temp_dir(), + $width, + $height, + 'nature', + true, + false, + 'Faker', + true, + $format + ); + self::assertFileExists($file); + + self::checkImageProperties($file, $width, $height, $format); + } + } + + private static function checkImageProperties( + string $file, + int $width, + int $height, + string $format + ) { if (function_exists('getimagesize')) { - [$width, $height, $type, $attr] = getimagesize($file); - self::assertEquals(640, $width); - self::assertEquals(480, $height); - self::assertEquals(constant('IMAGETYPE_PNG'), $type); + $imageConstants = Image::getFormatConstants(); + [$actualWidth, $actualHeight, $type, $attr] = getimagesize($file); + self::assertEquals($width, $actualWidth); + self::assertEquals($height, $actualHeight); + self::assertEquals($imageConstants[$format], $type); } else { - self::assertEquals('png', pathinfo($file, PATHINFO_EXTENSION)); + self::assertEquals($format, pathinfo($file, PATHINFO_EXTENSION)); } if (file_exists($file)) { unlink($file); } } + + private static function checkUrlConnection(string $url) + { + $curlPing = curl_init($url); + curl_setopt($curlPing, CURLOPT_TIMEOUT, 5); + curl_setopt($curlPing, CURLOPT_CONNECTTIMEOUT, 5); + curl_setopt($curlPing, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curlPing, CURLOPT_FOLLOWLOCATION, true); + $data = curl_exec($curlPing); + $httpCode = curl_getinfo($curlPing, CURLINFO_HTTP_CODE); + curl_close($curlPing); + + if ($httpCode < 200 | $httpCode > 300) { + self::markTestSkipped(sprintf('"%s" is offline, skipping test', $url)); + } + } } From 109d5bff241bd9b94ce2091c93691ee8ce3e86ca Mon Sep 17 00:00:00 2001 From: Romain Sickenberg Date: Thu, 9 Jun 2022 14:42:34 +0200 Subject: [PATCH 014/229] French: added translated color for french language (#466) --- src/Faker/Provider/fr_BE/Color.php | 7 +++++ src/Faker/Provider/fr_CA/Color.php | 7 +++++ src/Faker/Provider/fr_CH/Color.php | 7 +++++ src/Faker/Provider/fr_FR/Color.php | 40 +++++++++++++++++++++++++ test/Faker/Provider/fr_FR/ColorTest.php | 29 ++++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 src/Faker/Provider/fr_BE/Color.php create mode 100644 src/Faker/Provider/fr_CA/Color.php create mode 100644 src/Faker/Provider/fr_CH/Color.php create mode 100644 src/Faker/Provider/fr_FR/Color.php create mode 100644 test/Faker/Provider/fr_FR/ColorTest.php diff --git a/src/Faker/Provider/fr_BE/Color.php b/src/Faker/Provider/fr_BE/Color.php new file mode 100644 index 0000000000..20c7dad092 --- /dev/null +++ b/src/Faker/Provider/fr_BE/Color.php @@ -0,0 +1,7 @@ +faker->colorName()); + self::assertEquals('Acajou', $this->faker->colorName()); + } + + public function testSafeColorName() + { + self::assertEquals('bleu', $this->faker->safeColorName()); + self::assertEquals('noir', $this->faker->safeColorName()); + } + + protected function getProviders(): iterable + { + yield new Color($this->faker); + } +} From d389c7e561e608830911b8a56c45b8e4899f8552 Mon Sep 17 00:00:00 2001 From: Francescu GAROBY Date: Fri, 17 Jun 2022 09:06:53 +0200 Subject: [PATCH 015/229] run 'mkdir' only if the directory doesn't exist yet (#481) * run 'mkdir' only if the directory doesn't exist yet * codestyle * Use 'id_dir' instead of 'file_exists' Co-authored-by: Francescu Garoby --- .php-cs-fixer.dist.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 8481597249..c186f1ca07 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -13,7 +13,10 @@ $config = new PhpCsFixer\Config('faker'); -mkdir('.build/php-cs-fixer', 0755, true); +if (!is_dir('.build/php-cs-fixer')) { + mkdir('.build/php-cs-fixer', 0755, true); +} + return $config ->setCacheFile('.build/php-cs-fixer/cache') ->setFinder($finder) From 9bd9d03ff7726fc684c1d6148a9eb6e23e15fac6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jun 2022 09:07:10 +0200 Subject: [PATCH 016/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#477) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.22.0 to 4.23.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/4.22.0...4.23.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 101 +++++++++++++++++---------------- 2 files changed, 52 insertions(+), 51 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 582b41f603..1923301b19 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.1 || ^8.0", - "vimeo/psalm": "^4.22.0" + "vimeo/psalm": "^4.23.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index fc2e976b45..9568f8276a 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "49826e64f68d00dfe7deacc7532b0ed7", + "content-hash": "11dfdd85303a8b60d28914f696f45a2e", "packages": [ { "name": "amphp/amp", @@ -318,16 +318,16 @@ }, { "name": "composer/semver", - "version": "3.2.9", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649", - "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { @@ -379,7 +379,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.9" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -395,7 +395,7 @@ "type": "tidelift" } ], - "time": "2022-02-04T13:58:43+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/xdebug-handler", @@ -547,16 +547,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "1.5.1", + "version": "v1.5.2", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730" + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", "shasum": "" }, "require": { @@ -597,9 +597,9 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" }, - "time": "2021-02-22T14:02:09+00:00" + "time": "2022-03-02T22:36:06+00:00" }, { "name": "netresearch/jsonmapper", @@ -654,16 +654,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { @@ -704,9 +704,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2022-05-31T20:59:12+00:00" }, { "name": "openlss/lib-array2xml", @@ -1092,16 +1092,16 @@ }, { "name": "symfony/console", - "version": "v4.4.38", + "version": "v4.4.42", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "5a50085bf5460f0c0d60a50b58388c1249826b8a" + "reference": "cce7a9f99e22937a71a16b23afa762558808d587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/5a50085bf5460f0c0d60a50b58388c1249826b8a", - "reference": "5a50085bf5460f0c0d60a50b58388c1249826b8a", + "url": "https://api.github.com/repos/symfony/console/zipball/cce7a9f99e22937a71a16b23afa762558808d587", + "reference": "cce7a9f99e22937a71a16b23afa762558808d587", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.38" + "source": "https://github.com/symfony/console/tree/v4.4.42" }, "funding": [ { @@ -1178,11 +1178,11 @@ "type": "tidelift" } ], - "time": "2022-01-30T21:23:57+00:00" + "time": "2022-05-14T12:35:33+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.24.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -1244,7 +1244,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" }, "funding": [ { @@ -1264,7 +1264,7 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", @@ -1327,7 +1327,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" }, "funding": [ { @@ -1347,7 +1347,7 @@ }, { "name": "symfony/polyfill-php73", - "version": "v1.24.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", @@ -1406,7 +1406,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" }, "funding": [ { @@ -1426,16 +1426,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.24.0", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { @@ -1489,7 +1489,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, "funding": [ { @@ -1505,20 +1505,20 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:33+00:00" + "time": "2022-03-04T08:16:47+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.11", + "version": "v1.1.12", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "633df678bec3452e04a7b0337c9bcfe7354124b3" + "reference": "eedb374f02031714a48848758a27812f3eca317a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/633df678bec3452e04a7b0337c9bcfe7354124b3", - "reference": "633df678bec3452e04a7b0337c9bcfe7354124b3", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/eedb374f02031714a48848758a27812f3eca317a", + "reference": "eedb374f02031714a48848758a27812f3eca317a", "shasum": "" }, "require": { @@ -1568,7 +1568,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.11" + "source": "https://github.com/symfony/service-contracts/tree/v1.1.12" }, "funding": [ { @@ -1584,20 +1584,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T13:32:43+00:00" + "time": "2022-03-09T13:39:03+00:00" }, { "name": "vimeo/psalm", - "version": "4.22.0", + "version": "4.23.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703" + "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/fc2c6ab4d5fa5d644d8617089f012f3bb84b8703", - "reference": "fc2c6ab4d5fa5d644d8617089f012f3bb84b8703", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/f1fe6ff483bf325c803df9f510d09a03fd796f88", + "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88", "shasum": "" }, "require": { @@ -1622,6 +1622,7 @@ "php": "^7.1|^8", "sebastian/diff": "^3.0 || ^4.0", "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", + "symfony/polyfill-php80": "^1.25", "webmozart/path-util": "^2.3" }, "provide": { @@ -1688,9 +1689,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.22.0" + "source": "https://github.com/vimeo/psalm/tree/4.23.0" }, - "time": "2022-02-24T20:34:05+00:00" + "time": "2022-04-28T17:35:49+00:00" }, { "name": "webmozart/assert", @@ -1810,5 +1811,5 @@ "platform-overrides": { "php": "7.1.33" }, - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } From 135f6e9909301e971503656715b869b6a1dbeeb9 Mon Sep 17 00:00:00 2001 From: aprat84 <39481795+aprat84@users.noreply.github.com> Date: Wed, 22 Jun 2022 18:49:31 +0200 Subject: [PATCH 017/229] Support filtering timezones by country code (#480) --- src/Faker/Core/DateTime.php | 10 ++++++++-- src/Faker/Extension/DateTimeExtension.php | 4 +++- src/Faker/Generator.php | 2 +- test/Faker/Core/DateTimeTest.php | 3 +++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Faker/Core/DateTime.php b/src/Faker/Core/DateTime.php index f14b540f3c..1487cfdb1f 100644 --- a/src/Faker/Core/DateTime.php +++ b/src/Faker/Core/DateTime.php @@ -217,8 +217,14 @@ public function century(): string return Helper::randomElement($this->centuries); } - public function timezone(): string + public function timezone(string $countryCode = null): string { - return Helper::randomElement(\DateTimeZone::listIdentifiers()); + if ($countryCode) { + $timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode); + } else { + $timezones = \DateTimeZone::listIdentifiers(); + } + + return Helper::randomElement($timezones); } } diff --git a/src/Faker/Extension/DateTimeExtension.php b/src/Faker/Extension/DateTimeExtension.php index 4cd6c38655..9a27cce0e7 100644 --- a/src/Faker/Extension/DateTimeExtension.php +++ b/src/Faker/Extension/DateTimeExtension.php @@ -234,7 +234,9 @@ public function century(): string; /** * Get a random timezone, uses `\DateTimeZone::listIdentifiers()` internally. * + * @param string|null $countryCode two-letter ISO 3166-1 compatible country code + * * @example 'Europe/Rome' */ - public function timezone(): string; + public function timezone(string $countryCode = null): string; } diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index ce93aea280..758399a3e6 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -255,7 +255,7 @@ * * @property string $timezone * - * @method string timezone() + * @method string timezone($countryCode = null) * * @property void $setDefaultTimezone * diff --git a/test/Faker/Core/DateTimeTest.php b/test/Faker/Core/DateTimeTest.php index 4b4e476bbb..4b7da9fd76 100644 --- a/test/Faker/Core/DateTimeTest.php +++ b/test/Faker/Core/DateTimeTest.php @@ -221,8 +221,11 @@ public function testCentury() public function testTimezone() { $timezone = $this->extension->timezone(); + $countryTimezone = $this->extension->timezone('US'); self::assertIsString($timezone); self::assertContains($timezone, \DateTimeZone::listIdentifiers()); + self::assertIsString($countryTimezone); + self::assertContains($countryTimezone, \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, 'US')); } } From 9b6cbdbf247ed5b2f5a56a4e3d77288a4fb17d01 Mon Sep 17 00:00:00 2001 From: fractalbit Date: Mon, 4 Jul 2022 09:26:43 +0300 Subject: [PATCH 018/229] fixed small typo in some greek names (#490) --- src/Faker/Provider/el_GR/Person.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Faker/Provider/el_GR/Person.php b/src/Faker/Provider/el_GR/Person.php index 465543753b..26a259e64e 100644 --- a/src/Faker/Provider/el_GR/Person.php +++ b/src/Faker/Provider/el_GR/Person.php @@ -126,7 +126,7 @@ class Person extends \Faker\Provider\Person 'Αγγελίδης', 'Αγγελόπουλος', 'Αθανασιάδης', 'Αλαφούζος', 'Αλεβίζος', 'Αλεξόπουλος', 'Αλιβιζάτος', 'Αναγνωστόπουλος', 'Αναστασιάδης', 'Αναστασίου', 'Ανδρεάδης', 'Αντωνιάδης', 'Αντωνόπουλος', 'Αποστολόπουλος', 'Αξιώτης', 'Βαρουξής', 'Βασιλείου', 'Βασιλόπουλος', 'Βενιζέλος', 'Βέργας', 'Βιτάλης', 'Βούλγαρης', 'Γαλάνης', 'Γερμανός', 'Γεωργίου', 'Γεωργιάδης', 'Γιάγκος', 'Γιαννόπουλος', 'Γιαννακόπουλος', 'Γιάνναρης', 'Γούσιος', 'Γρηγοριάδης', 'Δασκαλόπουλος', 'Δελής', 'Διαμαντόπουλος', 'Δημητριάδης', 'Δουρέντης', 'Ελευθερόπουλος', 'Ελευθεριάδης', 'Ευθυμιάδης', 'Ευσταθιάδης', 'Ευταξίας', 'Ζαχαριάδης', 'Ζερβός', 'Ζωγραφός', - 'Ηλιάδης', 'Ηλιόπουλος', 'Θεοτόκης', 'Θεωδωρόπουλος', 'Θεωδώρου', 'Θεωδωρίδης', 'Ιατρίδης', 'Ιωαννίδης', 'Καλύβας', 'Καραβίας', 'Καννελόπουλος', 'Καραγιάννης', 'Κεδίκογλου', 'Κολιάτσος', 'Κόκκινος', 'Κομνηνός', + 'Ηλιάδης', 'Ηλιόπουλος', 'Θεοτόκης', 'Θεοδωρόπουλος', 'Θεοδώρου', 'Θεοδωρίδης', 'Ιατρίδης', 'Ιωαννίδης', 'Καλύβας', 'Καραβίας', 'Καννελόπουλος', 'Καραγιάννης', 'Κεδίκογλου', 'Κολιάτσος', 'Κόκκινος', 'Κομνηνός', 'Κοντολέων', 'Κοντός', 'Κόρακας', 'Κορομηλάς', 'Κορωναίος', 'Κοσμόπουλος', 'Κουταλιανός', 'Κυπραίος', 'Κωνσταντίνου', 'Κωνσταντινίδης', 'Κωνσταντόπουλος', 'Κωστόπουλος', 'Κρητικός', 'Κυριακόπουλος', 'Λαμέρας', 'Λαμπρόπουλος', 'Λούλης', 'Μακρής', 'Μανιάκης', 'Μαρκόπουλος', 'Μαυρλίδης', 'Μεταξάς', 'Μιχαηλίδης', 'Μπλέτσας', 'Νικολαΐδης', 'Νικολάκος', 'Νικολόπουλος', 'Ξανθόπουλος', 'Ξένος', 'Οικονομίδης', 'Ουζουνίδης', 'Παναγιωτίδης', 'Πανταζής', 'Παπαγεωργίου', 'Παπάγος', 'Παπαδάκης', 'Παπαδόπουλος', 'Παπάζογλου', 'Παπακώστας', 'Παπανδρέου', 'Παπανικολάου', 'Παπαντωνίου', 'Παπαστεφάνου', 'Παπαφιλίππου', 'Παπαϊωάννου', 'Παππάς', @@ -136,8 +136,8 @@ class Person extends \Faker\Provider\Person protected static $lastNameFemale = [ 'Αγγελίδου', 'Αγγελοπούλου', 'Αλεξάνδρου', 'Αλεξάνδρου', 'Αλεξίου', 'Αναγνώστου', 'Αναστασίου', 'Ανδρέου', 'Αντωνοπούλου', 'Ανυφαντή', 'Ανυφαντή', 'Αργυρού', 'Βαριμπόμπη', 'Βιτάλη', 'Γάσπαρη', 'Γαλάνη', 'Γεννήτη', - 'Γερμανού', 'Γεωγιάδου', 'Γεωργίβαλου', 'Γεωργίου', 'Γιακουμή', 'Γιαννακοπούλου', 'Γρηγοριάδου', 'Δασκαλοπούλου', 'Διδασκάλου', 'Δημητριάδου', 'Ελευθερίου', 'Ευθυμιάδου', 'Ηλιοπούλου', 'Θεοτόκου', 'Θεωδωροπούλου', - 'Θεωδώρου', 'Θεωδωρίδου', 'Ιωάννου', 'Καπετανάκη', 'Καπνού', 'Καρσιβάνη', 'Κοκκίνου', 'Κωνσταντινίδου', 'Κωνσταντίνου', 'Κυριακοπούλου', 'Λάσκαρη', 'Λασκαρού', 'Μάκρη', 'Μακρή', 'Μοραΐτη', 'Μπόγρη', 'Μυλωνά', + 'Γερμανού', 'Γεωγιάδου', 'Γεωργίβαλου', 'Γεωργίου', 'Γιακουμή', 'Γιαννακοπούλου', 'Γρηγοριάδου', 'Δασκαλοπούλου', 'Διδασκάλου', 'Δημητριάδου', 'Ελευθερίου', 'Ευθυμιάδου', 'Ηλιοπούλου', 'Θεοτόκου', 'Θεοδωροπούλου', + 'Θεοδώρου', 'Θεοδωρίδου', 'Ιωάννου', 'Καπετανάκη', 'Καπνού', 'Καρσιβάνη', 'Κοκκίνου', 'Κωνσταντινίδου', 'Κωνσταντίνου', 'Κυριακοπούλου', 'Λάσκαρη', 'Λασκαρού', 'Μάκρη', 'Μακρή', 'Μοραΐτη', 'Μπόγρη', 'Μυλωνά', 'Νικολάου', 'Νικολοπούλου', 'Ξανθοπούλου', 'Οικονομίδου', 'Οικονομοπούλου', 'Οικονόμου', 'Παπαδοπούλου', 'Παπακιρίσκου', 'Παπακωνσταντίνου', 'Παπαμάρκου', 'Παπαστάμου', 'Ράφτη', 'Σακελλαρίου', 'Σελινά', 'Σκουτέρη', 'Σπανού', 'Σταματιάδου', 'Σωπολιάτη', 'Τριανταφυλλίδου', 'Φοσκιά', 'Φωτιάδου', 'Χαραλαμπίδου', 'Χατζηιωάννου', ]; @@ -164,7 +164,7 @@ public function lastName($gender = null) } /** - * @example 'Θεωδωρόπουλος' + * @example 'Θεοδωρόπουλος' */ public static function lastNameMale() { From 45b21c12047ea2b434d35d9d1fb107aac814d980 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Jul 2022 10:53:09 +0200 Subject: [PATCH 019/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#489) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.23.0 to 4.24.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/4.23.0...4.24.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 94 +++++++++++++++++----------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 1923301b19..af8a52fe79 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.1 || ^8.0", - "vimeo/psalm": "^4.23.0" + "vimeo/psalm": "^4.24.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 9568f8276a..e343dd40c3 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "11dfdd85303a8b60d28914f696f45a2e", + "content-hash": "6fb356b61552c72e18e03c515cad1336", "packages": [ { "name": "amphp/amp", @@ -1092,16 +1092,16 @@ }, { "name": "symfony/console", - "version": "v4.4.42", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cce7a9f99e22937a71a16b23afa762558808d587" + "reference": "8a2628d2d5639f35113dc1b833ecd91e1ed1cf46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cce7a9f99e22937a71a16b23afa762558808d587", - "reference": "cce7a9f99e22937a71a16b23afa762558808d587", + "url": "https://api.github.com/repos/symfony/console/zipball/8a2628d2d5639f35113dc1b833ecd91e1ed1cf46", + "reference": "8a2628d2d5639f35113dc1b833ecd91e1ed1cf46", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.42" + "source": "https://github.com/symfony/console/tree/v4.4.43" }, "funding": [ { @@ -1178,20 +1178,20 @@ "type": "tidelift" } ], - "time": "2022-05-14T12:35:33+00:00" + "time": "2022-06-23T12:22:25+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { @@ -1206,7 +1206,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1244,7 +1244,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { @@ -1260,20 +1260,20 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", "shasum": "" }, "require": { @@ -1288,7 +1288,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1327,7 +1327,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -1343,20 +1343,20 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { @@ -1365,7 +1365,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1406,7 +1406,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, "funding": [ { @@ -1422,20 +1422,20 @@ "type": "tidelift" } ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { @@ -1444,7 +1444,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1489,7 +1489,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -1505,20 +1505,20 @@ "type": "tidelift" } ], - "time": "2022-03-04T08:16:47+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.12", + "version": "v1.1.13", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "eedb374f02031714a48848758a27812f3eca317a" + "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/eedb374f02031714a48848758a27812f3eca317a", - "reference": "eedb374f02031714a48848758a27812f3eca317a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/afa00c500c2d6aea6e3b2f4862355f507bc5ebb4", + "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4", "shasum": "" }, "require": { @@ -1568,7 +1568,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.12" + "source": "https://github.com/symfony/service-contracts/tree/v1.1.13" }, "funding": [ { @@ -1584,20 +1584,20 @@ "type": "tidelift" } ], - "time": "2022-03-09T13:39:03+00:00" + "time": "2022-05-27T14:01:05+00:00" }, { "name": "vimeo/psalm", - "version": "4.23.0", + "version": "4.24.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88" + "reference": "06dd975cb55d36af80f242561738f16c5f58264f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/f1fe6ff483bf325c803df9f510d09a03fd796f88", - "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/06dd975cb55d36af80f242561738f16c5f58264f", + "reference": "06dd975cb55d36af80f242561738f16c5f58264f", "shasum": "" }, "require": { @@ -1689,9 +1689,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.23.0" + "source": "https://github.com/vimeo/psalm/tree/4.24.0" }, - "time": "2022-04-28T17:35:49+00:00" + "time": "2022-06-26T11:47:54+00:00" }, { "name": "webmozart/assert", From 37f751c67a5372d4e26353bd9384bc03744ec77b Mon Sep 17 00:00:00 2001 From: Pim Jansen Date: Wed, 20 Jul 2022 15:12:54 +0200 Subject: [PATCH 020/229] Release/1.20.0 (#499) --- CHANGELOG.md | 17 +++++++++++++++-- src/Faker/Provider/Image.php | 24 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b30fa41bec..3350f92c70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ # CHANGELOG -## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.19.0...main) +## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.20.0...main) + +## [2022-07-20, v1.20.0](https://github.com/FakerPHP/Faker/compare/v1.19.0..v1.20.0) + +- Fixed typo in French phone number (#452) +- Fixed some Hungarian naming bugs (#451) +- Fixed bug where the NL-BE VAT generation was incorrect (#455) +- Improve Turkish phone numbers for E164 and added landline support (#460) +- Add Microsoft Edge User Agent (#464) +- Added option to set image formats on Faker\Provider\Image (#473) +- Added support for French color translations (#466) +- Support filtering timezones by country code (#480) +- Fixed typo in some greek names (#490) +- Marked the Faker\Provider\Image as deprecated ## [2022-02-02, v1.19.0](https://github.com/FakerPHP/Faker/compare/v1.18.0..v1.19.0) @@ -13,7 +26,7 @@ - Fix is_IS Address docbock type (#438) - Fix regexify escape backslash in character class (#434) - Removed UUID from Generator to be able to extend it (#441) -- + ## [2022-01-23, v1.18.0](https://github.com/FakerPHP/Faker/compare/v1.17.0..v1.18.0) - Deprecated UUID, use uuid3 to specify version (#427) diff --git a/src/Faker/Provider/Image.php b/src/Faker/Provider/Image.php index 42b24d15a0..0c3ad68c13 100644 --- a/src/Faker/Provider/Image.php +++ b/src/Faker/Provider/Image.php @@ -52,6 +52,12 @@ public static function imageUrl( $gray = false, $format = 'png' ) { + trigger_deprecation( + 'fakerphp/faker', + '1.20', + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + ); + // Validate image format $imageFormats = static::getFormats(); @@ -110,6 +116,12 @@ public static function image( $gray = false, $format = 'png' ) { + trigger_deprecation( + 'fakerphp/faker', + '1.20', + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + ); + $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible // Validate directory path if (!is_dir($dir) || !is_writable($dir)) { @@ -157,11 +169,23 @@ public static function image( public static function getFormats(): array { + trigger_deprecation( + 'fakerphp/faker', + '1.20', + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + ); + return array_keys(static::getFormatConstants()); } public static function getFormatConstants(): array { + trigger_deprecation( + 'fakerphp/faker', + '1.20', + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + ); + return [ static::FORMAT_JPG => constant('IMAGETYPE_JPEG'), static::FORMAT_JPEG => constant('IMAGETYPE_JPEG'), From dd626cfc2fe271275a38d626c9579387e33cbaff Mon Sep 17 00:00:00 2001 From: Denny Septian Panggabean <97607754+ddevsr@users.noreply.github.com> Date: Fri, 22 Jul 2022 19:43:04 +0700 Subject: [PATCH 021/229] Updated Indonesian Sample Data (#501) * add: sample data address * add: company prefix --- src/Faker/Provider/id_ID/Address.php | 7 ++++--- src/Faker/Provider/id_ID/Company.php | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Faker/Provider/id_ID/Address.php b/src/Faker/Provider/id_ID/Address.php index 1fb2270a86..28dd845c59 100644 --- a/src/Faker/Provider/id_ID/Address.php +++ b/src/Faker/Provider/id_ID/Address.php @@ -6,6 +6,7 @@ class Address extends \Faker\Provider\Address { /** * @see http://bandung.go.id/images/download/daftarruasjalan.htm + * @see https://id.wikipedia.org/wiki/Kategori:Jalan_di_Jakarta */ protected static $street = [ 'Abang', 'Abdul', 'Abdul Muis', 'Abdul Rahmat', 'Abdul. Muis', 'Abdullah', @@ -17,7 +18,7 @@ class Address extends \Faker\Provider\Address 'Bagonwoto ', 'Bah Jaya', 'Baha', 'Bahagia', 'Bahagia ', 'Baiduri', 'Baik', 'Baing', 'Baja', 'Baja Raya', 'Bak Air', 'Bak Mandi', 'Bakaru', 'Bakau', 'Bakau Griya Utama', - 'Bakhita', 'Bakin', 'Bakit ', 'Bakti', 'Baladewa', + 'Bakhita', 'Bakin', 'Bakit ', 'Bakti', 'Baladewa', 'Balikpapan', 'Bambon', 'Bambu', 'Banal', 'Banceng Pondok', 'Banda', 'Bank Dagang Negara', 'Bappenas', 'Bara', 'Bara Tambar', 'Baranang', 'Baranang Siang', 'Baranang Siang Indah', 'Baranangsiang', 'Barasak', 'Barat', @@ -32,7 +33,7 @@ class Address extends \Faker\Provider\Address 'Flora', 'Flores', 'Gading', 'Gajah', 'Gajah Mada', 'Gambang', 'Gardujati', 'Gatot Subroto', 'Gedebage Selatan', 'Gegerkalong Hilir', 'Gotong Royong', 'Gremet', 'HOS. Cjokroaminoto (Pasirkaliki)', 'Haji', 'Halim', - 'Hang', 'Hasanuddin', 'Honggowongso', 'Ikan', 'Imam', + 'Hang', 'Hasanuddin', 'Hayam Wuruk', 'Honggowongso', 'Ikan', 'Imam', 'Imam Bonjol', 'Industri', 'Ir. H. Juanda', 'Jagakarsa', 'Jakarta', 'Jaksa', 'Jambu', 'Jamika', 'Jayawijaya', 'Jend. A. Yani', 'Jend. Sudirman', 'Juanda', 'K.H. Maskur', 'K.H. Wahid Hasyim (Kopo)', 'Kali', @@ -45,7 +46,7 @@ class Address extends \Faker\Provider\Address 'Muwardi', 'Nakula', 'Nanas', 'Nangka', 'Orang', 'Otista', 'Otto', 'PHH. Mustofa', 'Pacuan Kuda', 'Padang', 'Padma', 'Pahlawan', 'Panjaitan', 'Pasir Koja', 'Pasirkoja', - 'Pasteur', 'Pattimura', 'Pelajar Pejuang 45', 'Perintis Kemerdekaan', 'Peta', + 'Pasteur', 'Pattimura', 'Pelajar Pejuang 45', 'Perintis Kemerdekaan', 'Peta', 'Pintu Besar Selatan', 'Qrisdoren', 'R.E. Martadinata', 'R.M. Said', 'Raden', 'Raden Saleh', 'Radio', 'Rajawali', 'Rajawali Barat', 'Rajawali Timur', 'Rajiman', 'Raya Setiabudhi', 'Raya Ujungberung', 'Reksoninten', 'Ronggowarsito', diff --git a/src/Faker/Provider/id_ID/Company.php b/src/Faker/Provider/id_ID/Company.php index ffbf6e3551..a4a8575c6b 100644 --- a/src/Faker/Provider/id_ID/Company.php +++ b/src/Faker/Provider/id_ID/Company.php @@ -14,7 +14,7 @@ class Company extends \Faker\Provider\Company /** * @see http://id.wikipedia.org/wiki/Jenis_badan_usaha */ - protected static $companyPrefix = ['PT', 'CV', 'UD', 'PD', 'Perum']; + protected static $companyPrefix = ['PT', 'Fa', 'CV', 'UD', 'PJ', 'PD', 'Perum', 'Yayasan']; /** * @see https://www.amesbostonhotel.com/macam-macam-profesi-pekerjaan/ From 2620f58e3ade09b76c126e150313f2863ea431a6 Mon Sep 17 00:00:00 2001 From: Pim Jansen Date: Fri, 22 Jul 2022 21:10:43 +0200 Subject: [PATCH 022/229] Added missing method for Hungarian maried female lastnames (#503) --- src/Faker/Provider/hu_HU/Person.php | 5 +++++ test/Faker/Provider/hu_HU/PersonTest.php | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 test/Faker/Provider/hu_HU/PersonTest.php diff --git a/src/Faker/Provider/hu_HU/Person.php b/src/Faker/Provider/hu_HU/Person.php index 0b55573f1b..a4d1274fe4 100644 --- a/src/Faker/Provider/hu_HU/Person.php +++ b/src/Faker/Provider/hu_HU/Person.php @@ -93,4 +93,9 @@ public static function suffix() { return static::randomElement(static::$suffix); } + + public static function lastNameFemaleMarried() + { + return static::randomElement(static::$lastNameFemaleMarried); + } } diff --git a/test/Faker/Provider/hu_HU/PersonTest.php b/test/Faker/Provider/hu_HU/PersonTest.php new file mode 100644 index 0000000000..db28110b1b --- /dev/null +++ b/test/Faker/Provider/hu_HU/PersonTest.php @@ -0,0 +1,23 @@ +faker->name('female')); + self::assertEquals('Prof. Szőke Bendegúz', $this->faker->name('female')); + } + + protected function getProviders(): iterable + { + yield new Person($this->faker); + } +} From eebc34ab379e7b7cb48f6d0e0f49378b00cafeff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Aug 2022 22:21:39 +0200 Subject: [PATCH 023/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#505) --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index af8a52fe79..1a2e8a04de 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.1 || ^8.0", - "vimeo/psalm": "^4.24.0" + "vimeo/psalm": "^4.25.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index e343dd40c3..c3cc3f5daf 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "6fb356b61552c72e18e03c515cad1336", + "content-hash": "46b9db51659ce78a3468ff5523abe94b", "packages": [ { "name": "amphp/amp", @@ -1092,16 +1092,16 @@ }, { "name": "symfony/console", - "version": "v4.4.43", + "version": "v4.4.44", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8a2628d2d5639f35113dc1b833ecd91e1ed1cf46" + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8a2628d2d5639f35113dc1b833ecd91e1ed1cf46", - "reference": "8a2628d2d5639f35113dc1b833ecd91e1ed1cf46", + "url": "https://api.github.com/repos/symfony/console/zipball/c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", + "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.43" + "source": "https://github.com/symfony/console/tree/v4.4.44" }, "funding": [ { @@ -1178,7 +1178,7 @@ "type": "tidelift" } ], - "time": "2022-06-23T12:22:25+00:00" + "time": "2022-07-20T09:59:04+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1588,16 +1588,16 @@ }, { "name": "vimeo/psalm", - "version": "4.24.0", + "version": "v4.25.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "06dd975cb55d36af80f242561738f16c5f58264f" + "reference": "d7cd84c4ebca74ba3419b9601f81d177bcbe2aac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/06dd975cb55d36af80f242561738f16c5f58264f", - "reference": "06dd975cb55d36af80f242561738f16c5f58264f", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d7cd84c4ebca74ba3419b9601f81d177bcbe2aac", + "reference": "d7cd84c4ebca74ba3419b9601f81d177bcbe2aac", "shasum": "" }, "require": { @@ -1689,9 +1689,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.24.0" + "source": "https://github.com/vimeo/psalm/tree/v4.25.0" }, - "time": "2022-06-26T11:47:54+00:00" + "time": "2022-07-25T17:04:37+00:00" }, { "name": "webmozart/assert", From 874e880a699face9acf3c87bb79fc1df2bc4b9f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 22:02:58 +0200 Subject: [PATCH 024/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#511) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.25.0 to 4.27.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/4.25.0...4.27.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 1a2e8a04de..2fcdfc977b 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.1 || ^8.0", - "vimeo/psalm": "^4.25.0" + "vimeo/psalm": "^4.27.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index c3cc3f5daf..2493a49db5 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "46b9db51659ce78a3468ff5523abe94b", + "content-hash": "e5ab88085c2741e554b071b1b224fd46", "packages": [ { "name": "amphp/amp", @@ -1092,16 +1092,16 @@ }, { "name": "symfony/console", - "version": "v4.4.44", + "version": "v4.4.45", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40" + "reference": "28b77970939500fb04180166a1f716e75a871ef8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", - "reference": "c35fafd7f12ebd6f9e29c95a370df7f1fb171a40", + "url": "https://api.github.com/repos/symfony/console/zipball/28b77970939500fb04180166a1f716e75a871ef8", + "reference": "28b77970939500fb04180166a1f716e75a871ef8", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.44" + "source": "https://github.com/symfony/console/tree/v4.4.45" }, "funding": [ { @@ -1178,7 +1178,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2022-08-17T14:50:19+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1588,16 +1588,16 @@ }, { "name": "vimeo/psalm", - "version": "v4.25.0", + "version": "4.27.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "d7cd84c4ebca74ba3419b9601f81d177bcbe2aac" + "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/d7cd84c4ebca74ba3419b9601f81d177bcbe2aac", - "reference": "d7cd84c4ebca74ba3419b9601f81d177bcbe2aac", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/faf106e717c37b8c81721845dba9de3d8deed8ff", + "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff", "shasum": "" }, "require": { @@ -1689,9 +1689,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/v4.25.0" + "source": "https://github.com/vimeo/psalm/tree/4.27.0" }, - "time": "2022-07-25T17:04:37+00:00" + "time": "2022-08-31T13:47:09+00:00" }, { "name": "webmozart/assert", From 42fa8b94cd75c823131a581eb1cf0e24b9a3bbde Mon Sep 17 00:00:00 2001 From: Marcel Caraballo <7672175+maqndon@users.noreply.github.com> Date: Tue, 13 Sep 2022 17:45:34 +0200 Subject: [PATCH 025/229] Fix german phone numbers (#513) * More accurate German phone numbers * More accurate German phone numbers - Tests * php cs fixer --- src/Faker/Provider/de_DE/PhoneNumber.php | 127 ++++++++++++++++-- test/Faker/Provider/de_DE/PhoneNumberTest.php | 29 +++- 2 files changed, 141 insertions(+), 15 deletions(-) diff --git a/src/Faker/Provider/de_DE/PhoneNumber.php b/src/Faker/Provider/de_DE/PhoneNumber.php index 637f668336..5387d6d10e 100644 --- a/src/Faker/Provider/de_DE/PhoneNumber.php +++ b/src/Faker/Provider/de_DE/PhoneNumber.php @@ -4,21 +4,124 @@ class PhoneNumber extends \Faker\Provider\PhoneNumber { + /** + * @var array + */ + protected static $areaCodeRegexes = [ + 2 => '(0[0-389]|0[4-6][1-68]|1[124]|1[0-9][0-9]|2[18]|2[0-9][1-9]|3[14]|3[0-35-9][0-9]|4[1]|4[02-8][0-9]|5[1]|5[02-9][0-9]|6[1]|6[02-9][0-9]|7[1]|7[2-7][0-9]|8[1]|8[02-7][0-9]|9[1]|9[02-9][0-9])', + 3 => '(0|3[15]|3[02-46-9][1-9]|3[02-46-9][02-9][0-9]|4[015]|4[2-4679][1-8]|4[2-4679][02-9][0-9]|5[15]|5[02-46-9][1-9]|5[02-46-9][02-9][0-9]|6[15]|6[02-46-9][1-9]|6[02-46-9][02-9][0-9]|7[15]|7[2-467][1-7]|7[2-467][02-689][0-9]|8[15]|8[2-46-8][013-9]|8[2-46-8][02-9][0-9]|9[15]|9[02-46-9][1-9]|9[02-46-9][02-9][0-9])', + 4 => '(0|1[02-9][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[0-9][0-9]|5[1]|5[02-6][0-9]|6[1]|6[02-8][0-9]|7[1]|7[02-79][0-9]|8[1]|8[02-9][0-9]|9[1]|9[02-7][0-9])', + 5 => '(0[2-8][0-9]|1[1]|1[02-9][0-9]|2[1]|2[02-9][1-9]|3[1]|3[02-8][0-9]|4[1]|4[02-9][1-9]|5[1]|5[02-9][0-9]|6[1]|6[02-9][0-9]|7[1]|7[02-7][1-9]|8[1]|8[02-8][0-9]|9[1]|9[0-7][1-9])', + 6 => '(0[02-9][0-9]|1[1]|1[02-9][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[0-8][0-9]|5[1]|5[02-9][0-9]|6[1]|6[2-9][0-9]|7[1]|7[02-8][1-9]|8[1]|8[02-9][1-9]|9)', + 7 => '(0[2-8][1-6]|1[1]|1[2-9][0-9]|2[1]|2[0-7][0-9]|3[1]|3[02-9][0-9]|4[1]|4[0-8][0-9]|5[1]|5[02-8][0-9]|6[1]|6[02-8][0-9]|7[1]|7[02-7][0-9]|8[1]|8[02-5][1-9]|9[1]|9[03-7][0-9])', + 8 => '(0[2-9][0-9]|1[1]|1[02-79][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[02-6][0-9]|5[1]|5[02-9][0-9]|6[1]|6[2-8][0-9]|7[1]|7[02-8][1-9]|8[1]|8[02-6][0-9]|9)', + 9 => '(0[6]|0[07-9][0-9]|1[1]|1[02-9][0-9]|2[1]|2[02-9][0-9]|3[1]|3[02-9][0-9]|4[1]|4[02-9][0-9]|5[1]|5[02-7][0-9]|6[1]|6[02-8][1-9]|7[1]|7[02-467][0-9]|8[1]|8[02-7][0-9]|9[1]|9[02-7][0-9])', + ]; + + /** + * @see https://en.wikipedia.org/wiki/National_conventions_for_writing_telephone_numbers#Germany + * @see https://www.itu.int/oth/T0202000051/en + * @see https://en.wikipedia.org/wiki/Telephone_numbers_in_Germany + */ protected static $formats = [ - '+49(0)##########', - '+49(0)#### ######', - '+49 (0) #### ######', - '+49(0) #########', - '+49(0)#### #####', - '0##########', - '0#########', - '0#### ######', - '0#### #####', - '(0####) ######', - '(0####) #####', + // International format + '+49 {{areaCode}} #######', + '+49 {{areaCode}} ### ####', + '+49 (0{{areaCode}}) #######', + '+49 (0{{areaCode}}) ### ####', + '+49{{areaCode}}#######', + '+49{{areaCode}}### ####', + + // Standard formats + '0{{areaCode}} ### ####', + '0{{areaCode}} #######', + '(0{{areaCode}}) ### ####', + '(0{{areaCode}}) #######', ]; protected static $e164Formats = [ - '+49##########', + '+49{{areaCode}}#######', + ]; + + /** + * @see https://en.wikipedia.org/wiki/Toll-free_telephone_number + */ + protected static $tollFreeAreaCodes = [ + 800, + ]; + + protected static $tollFreeFormats = [ + // Standard formats + '0{{tollFreeAreaCode}} ### ####', + '(0{{tollFreeAreaCode}}) ### ####', + '+49{{tollFreeAreaCode}} ### ####', + ]; + + public function tollFreeAreaCode() + { + return self::randomElement(static::$tollFreeAreaCodes); + } + + public function tollFreePhoneNumber() + { + $format = self::randomElement(static::$tollFreeFormats); + + return self::numerify($this->generator->parse($format)); + } + + protected static $mobileCodes = [ + 1511, 1512, 1514, 1515, 1516, 1517, + 1520, 1521, 1522, 1523, 1525, 1526, 1529, + 1570, 1573, 1575, 1577, 1578, 1579, + 1590, + ]; + + protected static $mobileFormats = [ + '+49{{mobileCode}}#######', + '+49 {{mobileCode}} ### ####', + '0{{mobileCode}}#######', + '0{{mobileCode}} ### ####', + '0 {{mobileCode}} ### ####', ]; + + /** + * @see https://en.wikipedia.org/wiki/List_of_dialling_codes_in_Germany + * + * @return string + */ + public static function areaCode() + { + $firstDigit = self::numberBetween(2, 9); + + return $firstDigit . self::regexify(self::$areaCodeRegexes[$firstDigit]); + } + + /** + * Generate a code for a mobile number. + * + * @internal Used to generate mobile numbers. + * + * @return string + */ + public static function mobileCode() + { + return static::randomElement(static::$mobileCodes); + } + + /** + * Generate a mobile number. + * + * @example A mobile number: '015111234567' + * @example A mobile number with spaces: '01511 123 4567' + * @example A mobile number with international code prefix: '+4915111234567' + * @example A mobile number with international code prefix and spaces: '+49 1511 123 4567' + * + * @return string + */ + public function mobileNumber() + { + return ltrim(static::numerify($this->generator->parse( + static::randomElement(static::$mobileFormats) + ))); + } } diff --git a/test/Faker/Provider/de_DE/PhoneNumberTest.php b/test/Faker/Provider/de_DE/PhoneNumberTest.php index a7c51abf5c..a57a8097c4 100644 --- a/test/Faker/Provider/de_DE/PhoneNumberTest.php +++ b/test/Faker/Provider/de_DE/PhoneNumberTest.php @@ -6,18 +6,41 @@ use Faker\Test\TestCase; /** - * @group legacy + * @group legacy de */ final class PhoneNumberTest extends TestCase { + public function testPhoneNumber() + { + for ($i = 0; $i < 100; ++$i) { + $number = $this->faker->phoneNumber(); + + // Test format + self::assertMatchesRegularExpression('/^(\+?49)?(0)?(\s?\(?\d{2,6}\)?)(\s?)(\d{3})(\s?)(\d{3,4})$/', $number); + } + } + public function testE164PhoneNumberFormat() { - for ($i = 0; $i < 10; ++$i) { + for ($i = 0; $i < 100; ++$i) { $number = $this->faker->e164PhoneNumber(); - self::assertMatchesRegularExpression('/^\+49\d{1,13}$/', $number); + self::assertMatchesRegularExpression('/^(\+49)(\d{9,12})$/', $number); + } + } + + public function testMobileNumberFormat() + { + for ($i = 0; $i < 100; ++$i) { + $number = $this->faker->mobileNumber(); + self::assertMatchesRegularExpression('/^(\+49)?(0)?(\s?)(\d{3,4})(\s?)(\d{3})(\s?)(\d{4})$/', $number); } } + public function testTollFreeAreaCode() + { + self::assertContains($this->faker->tollFreeAreaCode(), [800]); + } + protected function getProviders(): iterable { yield new PhoneNumber($this->faker); From e0c97ec299df0d06c752d12e6ffd5d85150941e6 Mon Sep 17 00:00:00 2001 From: Kenny Johnson <72874890+Kenny-MWI@users.noreply.github.com> Date: Thu, 6 Oct 2022 09:08:31 -0500 Subject: [PATCH 026/229] Changed Kazlaukas to Kazlauskas (#525) --- src/Faker/Provider/lt_LT/Person.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Provider/lt_LT/Person.php b/src/Faker/Provider/lt_LT/Person.php index 99ca87bcef..c448ab814f 100644 --- a/src/Faker/Provider/lt_LT/Person.php +++ b/src/Faker/Provider/lt_LT/Person.php @@ -238,7 +238,7 @@ class Person extends \Faker\Provider\Person * @see http://www.horoskopai.lt/gaires/populiariausios-pavardes-lietuvoje/ */ protected static $lastNameMale = [ - 'Kazlaukas', 'Jankauskas', 'Petrauskas', 'Stankevičius', 'Vasiliauskas', 'Žukauskas', 'Butkus', + 'Kazlauskas', 'Jankauskas', 'Petrauskas', 'Stankevičius', 'Vasiliauskas', 'Žukauskas', 'Butkus', 'Kateiva', 'Paulauskas', 'Urbonas', 'Kavaliauskas', 'Baranauskas', 'Pocius', 'Sakalauskas', ]; From bc743e9bfa6e42375cbf79c42bbe49f5fef12c2a Mon Sep 17 00:00:00 2001 From: spiess-demos <40452344+spiess-demos@users.noreply.github.com> Date: Tue, 11 Oct 2022 09:14:25 +0200 Subject: [PATCH 027/229] Change ii_IT text to use a public domain source (#526) --- src/Faker/Provider/it_IT/Text.php | 4016 +++++++++++++++-------------- 1 file changed, 2050 insertions(+), 1966 deletions(-) diff --git a/src/Faker/Provider/it_IT/Text.php b/src/Faker/Provider/it_IT/Text.php index 08fa689c04..161273fbed 100644 --- a/src/Faker/Provider/it_IT/Text.php +++ b/src/Faker/Provider/it_IT/Text.php @@ -5,1991 +5,2075 @@ class Text extends \Faker\Provider\Text { /** - * Carlo Collodi - * Pinocchio - * Questo e-book è stato realizzato anche grazie al sostegno di: + * The Project Gutenberg EBook of Una notte bizzarra, by Anton Giulio Barrili * - * E-text - * Web design, Editoria, Multimedia - * (pubblica il tuo libro, o crea il tuo sito con E-text!) - * http://www.e-text.it/ + * This eBook is for the use of anyone anywhere at no cost and with + * almost no restrictions whatsoever. You may copy it, give it away or + * re-use it under the terms of the Project Gutenberg License included + * with this eBook or online at www.gutenberg.org * - * QUESTO E-BOOK: + * Title: Una notte bizzarra + * Author: Anton Giulio Barrili + * Release Date: August 8, 2009 [EBook #29636] + * Language: Italian * - * TITOLO: Pinocchio - * AUTORE: Collodi, Carlo - * TRADUTTORE: - * CURATORE: - * NOTE: + * *** START OF THIS PROJECT GUTENBERG EBOOK UNA NOTTE BIZZARRA *** * - * CODICE ISBN E-BOOK: 9788890359767 * - * DIRITTI D'AUTORE: no + * Produced by Claudio Paganelli, Carlo Traverso and the + * Online Distributed Proofreading Team at http://www.pgdp.net + * (This file was produced from images generously made + * available by The Internet Archive/Canadian Libraries) * - * LICENZA: questo testo è distribuito con la licenza specificata al seguente indirizzo Internet: http://www.liberliber.it/libri/licenze/ (Attribution-NonCommercial-ShareAlike 4.0 International) * - * TRATTO DA: Le avventure di Pinocchio : storia di un burattino / di Carlo Collodi ; illustrata da Enrico Mazzanti. – 2a edizione. – Milano : Rizzoli Editore, Milano, 1949. + * CAPITAN DODERO * - * CODICE ISBN: informazione non disponibile + * UNA NOTTE BIZZARRA * - * 1a EDIZIONE ELETTRONICA DEL: 28 gennaio 1996 - * 2a EDIZIONE ELETTRONICA DEL: 17 gennaio 2002 - * 3a EDIZIONE ELETTRONICA DEL: 19 luglio 2013 + * NOVELLE DI ANTON GIULIO BARRILI * - * INDICE DI AFFIDABILITA': 1 - * 0: affidabilità bassa - * 1: affidabilità media - * 2: affidabilità buona - * 3: affidabilità ottima + * Settima edizione. * - * DIGITALIZZAZIONE: - * Riccardo Scateni + * MILANO * - * REVISIONE: - * Marco Zela + * FRATELLI TREVES, EDITORI 1881. * - * IMPAGINAZIONE: - * Riccardo Scateni - * Marco Zela - * Catia Righi + * PROPRIETÀ LETTERARIA * - * PUBBLICAZIONE: - * Marco Calvo, http://www.marcocalvo.it/ - * Informazioni sul "progetto Manuzio" - * Il "progetto Manuzio" è una iniziativa dell'associazione culturale Liber Liber. Aperto a chiunque voglia collaborare, si pone come scopo la pubblicazione e la diffusione gratuita di opere letterarie in formato elettronico. Ulteriori informazioni sono disponibili sul sito Internet: - * http://www.liberliber.it/ - * Aiuta anche tu il "progetto Manuzio" - * Se questo "libro elettronico" è stato di tuo gradimento, o se condividi le finalità del "progetto Manuzio", invia una donazione a Liber Liber. Il tuo sostegno ci aiuterà a far crescere ulteriormente la nostra biblioteca. Qui le istruzioni: - * http://www.liberliber.it/aiuta/ + * Tip. Treves * - * Indice generale - * I. Come andò che maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino. - * II. Maestro Ciliegia regala il pezzo di legno al suo amico Geppetto, il quale lo prende per fabbricarsi un burattino maraviglioso che sappia ballare, tirar di scherma e fare i salti mortali. - * III Geppetto, tornato a casa, comincia subito a fabbricarsi il burattino e gli mette il nome di Pinocchio. Prime monellerie del burattino. - * IV La storia di Pinocchio col Grillo-parlante, dove si vede come i ragazzi cattivi hanno a noia di sentirsi correggere da chi ne sa più di loro. - * V Pinocchio ha fame, e cerca un uovo per farsi una frittata; ma sul più bello, la frittata gli vola via dalla finestra. - * VI Pinocchio si addormenta coi piedi sul caldano, e la mattina dopo si sveglia coi piedi tutti bruciati. - * VII Geppetto torna a casa, e dà al burattino la colazione che il pover’uomo aveva portata con sé. - * VIII Geppetto rifà i piedi a Pinocchio e vende la propria casacca per comprargli l’Abbecedario. - * IX Pinocchio vende l’Abbecedario per andare a vedere il teatrino dei burattini. - * X I burattini riconoscono il loro fratello Pinocchio e gli fanno una grandissima festa; ma sul più bello, esce fuori il burattinaio Mangiafoco, e Pinocchio corre il pericolo di fare una brutta fine. - * XI Mangiafoco starnutisce e perdona a Pinocchio, il quale poi difende dalla morte il suo amico Arlecchino. - * XII Il burattinaio Mangiafoco regala cinque monete d’oro a Pinocchio, perché le porti al suo babbo Geppetto: e Pinocchio, invece, si lascia abbindolare dalla Volpe e dal Gatto e se ne va con loro. - * XIII L’osteria del Gambero Rosso. - * XIV Pinocchio, per non aver dato retta ai buoni consigli del Grillo-parlante, s’imbatte negli assassini. - * XV Gli assassini inseguono Pinocchio; e, dopo averlo raggiunto, lo impiccano a un ramo della Quercia grande. - * XVI La bella Bambina dai capelli turchini fa raccogliere il burattino: lo mette a letto, e chiama tre medici per sapere se sia vivo o morto. - * XVII Pinocchio mangia lo zucchero, ma non vuol purgarsi: Però quando vede i becchini che vengono a portarlo via, allora si purga. Poi dice una bugia e per gastigo gli cresce il naso. - * XVIII Pinocchio ritrova la Volpe e il Gatto, e va con loro a seminare le quattro monete nel Campo de’ Miracoli. - * XIX Pinocchio è derubato delle sue monete d’oro e, per gastigo, si busca quattro mesi di prigione. - * XX Liberato dalla prigione, si avvia per tornare a casa della Fata; ma lungo la strada trova un serpente orribile, e poi rimane preso alla tagliuola. - * XXI Pinocchio è preso da un contadino, il quale lo costringe a far da can da guardia a un pollaio. - * XXII Pinocchio scuopre i ladri e, in ricompensa di essere stato fedele, vien posto in libertà. - * XXIII Pinocchio piange la morte della bella Bambina dai capelli turchini: poi trova un Colombo che lo porta sulla riva del mare, e lì si getta nell’acqua per andare in aiuto del suo babbo Geppetto. - * XXIV Pinocchio arriva all’isola delle Api industriose e ritrova la Fata. - * XXV Pinocchio promette alla Fata di essere buono e di studiare, perché è stufo di fare il burattino e vuol diventare un bravo ragazzo. - * XXVI Pinocchio va co’ suoi compagni di scuola in riva al mare, per vedere il terribile Pescecane. - * XXVII Gran combattimento fra Pinocchio e i suoi compagni: uno de’ quali essendo rimasto ferito, Pinocchio viene arrestato dai carabinieri. - * XXVIII Pinocchio corre pericolo di essere fritto in padella come un pesce. - * XXIX Ritorna a casa della Fata, la quale gli promette che il giorno dopo non sarà più un burattino, ma diventerà un ragazzo. Gran colazione di caffè-e-latte per festeggiare questo grande avvenimento. - * XXX Pinocchio, invece di diventare un ragazzo, parte di nascosto col suo amico Lucignolo per il Paese dei Balocchi. - * XXXI Dopo cinque mesi di cuccagna, Pinocchio, con sua grande maraviglia, sente spuntarsi un bel paio d’orecchie asinine e diventa un ciuchino, con la coda e tutto. - * XXXII A Pinocchio gli vengono gli orecchi di ciuco, e poi diventa un ciuchino vero e comincia a ragliare. - * XXXIII Diventato un ciuchino vero, è portato a vendere, e lo compra il direttore di una compagnia di pagliacci per insegnargli a ballare e a saltare i cerchi; ma una sera azzoppisce e allora lo ricompra un altro, per far con la sua pelle un tamburo. - * XXXIV Pinocchio, gettato in mare, è mangiato dai pesci e ritorna ad essere un burattino come prima; ma mentre nuota per salvarsi, è ingoiato dal terribile Pesce-cane. - * XXXV Pinocchio ritrova in corpo al Pesce-cane... Chi ritrova? Leggete questo capitolo e lo saprete. - * XXXVI Finalmente Pinocchio cessa d’essere un burattino e diventa un ragazzo. + * UNA NOTTE BIZZARRA * - * @see http://www.liberliber.it/libri/c/collodi/index.php#elenco_opere + * A LUIGI MORANDI + * + * + * _La è proprio una inezia, frutto di tre giorni di lavoro, che intitolo + * a te, giovine amico e compagno d'armi; ma sappi che fu un gaio lavoro + * campestre, e lavoro gaio riesce facile, e val meglio assai che sudato, + * ma uggioso._ + * + * _Nè paia fuor del naturale a te, nè ai lettori cortesi, che i + * personaggi della mia novella s'innamorino in una notte. Anco a non + * volerne cercar la ragione, la scusa, nella novità de' casi narrati, io + * so che la cosa non è poi tanto difficile, io che ti ho per la prima + * volta veduto, ed amato come fratello, in un giorno. Tu dirai che, + * anche là, era quistione d'urgenza, imperocchè chi poteva morire il + * giorno di poi non avea tempo da perdere. Or dunque, concediamo la + * parte loro agli eventi, e non se ne parli più, se non per ricordare + * che l'amicizia, nata e cresciuta in un giorno, ha da fortificarsi in + * tutti que' molti, o pochi, che ci comporranno la trama della vita._ + * + * Di Genova, il 19 di Luglio del 1868. + * + * ANTON GIULIO BARRILI. + * + * @see https://gutenberg.org/cache/epub/29636/pg29636.txt * * @var string */ protected static $baseText = <<<'EOT' -I. Come andò che maestro Ciliegia, falegname, trovò un pezzo di legno, che piangeva e rideva come un bambino. - -C’era una volta... -– Un re! – diranno subito i miei piccoli lettori. -No, ragazzi, avete sbagliato. C’era una volta un pezzo di legno. -Non era un legno di lusso, ma un semplice pezzo da catasta, di quelli che d’inverno si mettono nelle stufe e nei caminetti per accendere il fuoco e per riscaldare le stanze. -Non so come andasse, ma il fatto gli è che un bel giorno questo pezzo di legno capitò nella bottega di un vecchio falegname, il quale aveva nome mastr’Antonio, se non che tutti lo chiamavano maestro Ciliegia, per via della punta del suo naso, che era sempre lustra e paonazza, come una ciliegia matura. -Appena maestro Ciliegia ebbe visto quel pezzo di legno, si rallegrò tutto e dandosi una fregatina di mani per la contentezza, borbottò a mezza voce: -– Questo legno è capitato a tempo: voglio servirmene per fare una gamba di tavolino. -Detto fatto, prese subito l’ascia arrotata per cominciare a levargli la scorza e a digrossarlo, ma quando fu lì per lasciare andare la prima asciata, rimase col braccio sospeso in aria, perché sentì una vocina sottile, che disse raccomandandosi: -– Non mi picchiar tanto forte! -Figuratevi come rimase quel buon vecchio di maestro Ciliegia! -Girò gli occhi smarriti intorno alla stanza per vedere di dove mai poteva essere uscita quella vocina, e non vide nessuno! Guardò sotto il banco, e nessuno; guardò dentro un armadio che stava sempre chiuso, e nessuno; guardò nel corbello dei trucioli e della segatura, e nessuno; apri l’uscio di bottega per dare un’occhiata anche sulla strada, e nessuno! O dunque?... -– Ho capito; – disse allora ridendo e grattandosi la parrucca, – si vede che quella vocina me la sono figurata io. Rimettiamoci a lavorare. -E ripresa l’ascia in mano, tirò giù un solennissimo colpo sul pezzo di legno. -– Ohi! tu m’hai fatto male! – gridò rammaricandosi la solita vocina. -Questa volta maestro Ciliegia restò di stucco, cogli occhi fuori del capo per la paura, colla bocca spalancata e colla lingua giù ciondoloni fino al mento, come un mascherone da fontana. Appena riebbe l’uso della parola, cominciò a dire tremando e balbettando dallo spavento: -– Ma di dove sarà uscita questa vocina che ha detto ohi?... Eppure qui non c’è anima viva. Che sia per caso questo pezzo di legno che abbia imparato a piangere e a lamentarsi come un bambino? Io non lo posso credere. Questo legno eccolo qui; è un pezzo di legno da caminetto, come tutti gli altri, e a buttarlo sul fuoco, c’è da far bollire una pentola di fagioli... O dunque? Che ci sia nascosto dentro qualcuno? Se c’è nascosto qualcuno, tanto peggio per lui. Ora l’accomodo io! -E così dicendo, agguantò con tutt’e due le mani quel povero pezzo di legno e si pose a sbatacchiarlo senza carità contro le pareti della stanza. -Poi si messe in ascolto, per sentire se c’era qualche vocina che si lamentasse. Aspettò due minuti, e nulla; cinque minuti, e nulla; dieci minuti, e nulla! -– Ho capito, – disse allora sforzandosi di ridere e arruffandosi la parrucca, – si vede che quella vocina che ha detto ohi, me la sono figurata io! Rimettiamoci a lavorare. -E perché gli era entrata addosso una gran paura, si provò a canterellare per farsi un po’ di coraggio. -Intanto, posata da una parte l’ascia, prese in mano la pialla, per piallare e tirare a pulimento il pezzo di legno; ma nel mentre che lo piallava in su e in giù, senti la solita vocina che gli disse ridendo: -– Smetti! tu mi fai il pizzicorino sul corpo! -Questa volta il povero maestro Ciliegia cadde giù come fulminato. Quando riaprì gli occhi, si trovò seduto per terra. -Il suo viso pareva trasfigurato, e perfino la punta del naso, di paonazza come era quasi sempre, gli era diventata turchina dalla gran paura. - -II. Maestro Ciliegia regala il pezzo di legno al suo amico Geppetto, il quale lo prende per fabbricarsi un burattino maraviglioso che sappia ballare, tirar di scherma e fare i salti mortali. - -In quel punto fu bussato alla porta. -– Passate pure, – disse il falegname, senza aver la forza di rizzarsi in piedi. -Allora entrò in bottega un vecchietto tutto arzillo, il quale aveva nome Geppetto; ma i ragazzi del vicinato, quando lo volevano far montare su tutte le furie, lo chiamavano col soprannome di Polendina, a motivo della sua parrucca gialla che somigliava moltissimo alla polendina di granturco. -Geppetto era bizzosissimo. Guai a chiamarlo Polendina! Diventava subito una bestia e non c’era più verso di tenerlo. -– Buon giorno, mastr’Antonio, – disse Geppetto. – Che cosa fate costì per terra? -– Insegno l’abbaco alle formicole. -– Buon pro vi faccia! -– Chi vi ha portato da me, compar Geppetto? -– Le gambe. Sappiate, mastr’Antonio, che son venuto da voi, per chiedervi un favore. -– Eccomi qui, pronto a servirvi, – replicò il falegname, rizzandosi su i ginocchi. -– Stamani m’è piovuta nel cervello un’idea. -– Sentiamola. -– Ho pensato di fabbricarmi da me un bel burattino di legno; ma un burattino maraviglioso, che sappia ballare, tirare di scherma e fare i salti mortali. Con questo burattino voglio girare il mondo, per buscarmi un tozzo di pane e un bicchier di vino; che ve ne pare? -– Bravo Polendina! – gridò la solita vocina, che non si capiva di dove uscisse. -A sentirsi chiamar Polendina, compar Geppetto diventò rosso come un peperone dalla bizza, e voltandosi verso il falegname, gli disse imbestialito: -– Perché mi offendete? -– Chi vi offende? -– Mi avete detto Polendina!... -– Non sono stato io. -– Sta’ un po’ a vedere che sarò stato io! Io dico che siete stato voi. -– No! -– Si! -– No! -– Si! -E riscaldandosi sempre più, vennero dalle parole ai fatti, e acciuffatisi fra di loro, si graffiarono, si morsero e si sbertucciarono. -Finito il combattimento, mastr’Antonio si trovò fra le mani la parrucca gialla di Geppetto, e Geppetto si accorse di avere in bocca la parrucca brizzolata del falegname. -– Rendimi la mia parrucca! – gridò mastr’Antonio. -– E tu rendimi la mia, e rifacciamo la pace. -I due vecchietti, dopo aver ripreso ognuno di loro la propria parrucca, si strinsero la mano e giurarono di rimanere buoni amici per tutta la vita. -– Dunque, compar Geppetto, – disse il falegname in segno di pace fatta, – qual è il piacere che volete da me? -– Vorrei un po’ di legno per fabbricare il mio burattino; me lo date? -Mastr’Antonio, tutto contento, andò subito a prendere sul banco quel pezzo di legno che era stato cagione a lui di tante paure. Ma quando fu lì per consegnarlo all’amico, il pezzo di legno dette uno scossone e sgusciandogli violentemente dalle mani, andò a battere con forza negli stinchi impresciuttiti del povero Geppetto. -– Ah! gli è con questo bel garbo, mastr’Antonio, che voi regalate la vostra roba? M’avete quasi azzoppito!... -– Vi giuro che non sono stato io! -– Allora sarò stato io!... -– La colpa è tutta di questo legno... -– Lo so che è del legno: ma siete voi che me l’avete tirato nelle gambe! -– Io non ve l’ho tirato! -– Bugiardo! -– Geppetto, non mi offendete; se no vi chiamo Polendina!... -– Asino! -– Polendina! -– Somaro! -– Polendina! -– Brutto scimmiotto! -– Polendina! -A sentirsi chiamar Polendina per la terza volta, Geppetto perse il lume degli occhi, si avvento sul falegname; e lì se ne dettero un sacco e una sporta. -A battaglia finita, mastr’Antonio si trovo due graffi di più sul naso, e quell’altro due bottoni di meno al giubbetto. Pareggiati in questo modo i loro conti, si strinsero la mano e giurarono di rimanere buoni amici per tutta la vita. -Intanto Geppetto prese con se il suo bravo pezzo di legno, e ringraziato mastr’Antonio, se ne tornò zoppicando a casa. - -III Geppetto, tornato a casa, comincia subito a fabbricarsi il burattino e gli mette il nome di Pinocchio. Prime monellerie del burattino. - -La casa di Geppetto era una stanzina terrena, che pigliava luce da un sottoscala. La mobilia non poteva essere più semplice: una seggiola cattiva, un letto poco buono e un tavolino tutto rovinato. Nella parete di fondo si vedeva un caminetto col fuoco acceso; ma il fuoco era dipinto, e accanto al fuoco c’era dipinta una pentola che bolliva allegramente e mandava fuori una nuvola di fumo, che pareva fumo davvero. -Appena entrato in casa, Geppetto prese subito gli arnesi e si pose a intagliare e a fabbricare il suo burattino. -– Che nome gli metterò? – disse fra sé e sé. – Lo voglio chiamar Pinocchio. Questo nome gli porterà fortuna. Ho conosciuto una famiglia intera di Pinocchi: Pinocchio il padre, Pinocchia la madre e Pinocchi i ragazzi, e tutti se la passavano bene. Il più ricco di loro chiedeva l’elemosina. -Quando ebbe trovato il nome al suo burattino, allora cominciò a lavorare a buono, e gli fece subito i capelli, poi la fronte, poi gli occhi. -Fatti gli occhi, figuratevi la sua maraviglia quando si accorse che gli occhi si muovevano e che lo guardavano fisso fisso. -Geppetto, vedendosi guardare da quei due occhi di legno, se n’ebbe quasi per male, e disse con accento risentito: -– Occhiacci di legno, perché mi guardate? -Nessuno rispose. -Allora, dopo gli occhi, gli fece il naso; ma il naso, appena fatto, cominciò a crescere: e cresci, cresci, cresci diventò in pochi minuti un nasone che non finiva mai. -Il povero Geppetto si affaticava a ritagliarlo; ma più lo ritagliava e lo scorciva, e più quel naso impertinente diventava lungo. -Dopo il naso, gli fece la bocca. -La bocca non era ancora finita di fare, che cominciò subito a ridere e a canzonarlo. -– Smetti di ridere! – disse Geppetto impermalito; ma fu come dire al muro. -– Smetti di ridere, ti ripeto! – urlò con voce minacciosa. -Allora la bocca smesse di ridere, ma cacciò fuori tutta la lingua. -Geppetto, per non guastare i fatti suoi, finse di non avvedersene, e continuò a lavorare. -Dopo la bocca, gli fece il mento, poi il collo, le spalle, lo stomaco, le braccia e le mani. -Appena finite le mani, Geppetto senti portarsi via la parrucca dal capo. Si voltò in su, e che cosa vide? Vide la sua parrucca gialla in mano del burattino. -– Pinocchio!... rendimi subito la mia parrucca! -E Pinocchio, invece di rendergli la parrucca, se la messe in capo per sé, rimanendovi sotto mezzo affogato. -A quel garbo insolente e derisorio, Geppetto si fece triste e melanconico, come non era stato mai in vita sua, e voltandosi verso Pinocchio, gli disse: -– Birba d’un figliuolo! Non sei ancora finito di fare, e già cominci a mancar di rispetto a tuo padre! Male, ragazzo mio, male! -E si rasciugò una lacrima. -Restavano sempre da fare le gambe e i piedi. -Quando Geppetto ebbe finito di fargli i piedi, sentì arrivarsi un calcio sulla punta del naso. -– Me lo merito! – disse allora fra sé. – Dovevo pensarci prima! Ormai è tardi! -Poi prese il burattino sotto le braccia e lo posò in terra, sul pavimento della stanza, per farlo camminare. -Pinocchio aveva le gambe aggranchite e non sapeva muoversi, e Geppetto lo conduceva per la mano per insegnargli a mettere un passo dietro l’altro. -Quando le gambe gli si furono sgranchite, Pinocchio cominciò a camminare da sé e a correre per la stanza; finché, infilata la porta di casa, saltò nella strada e si dette a scappare. -E il povero Geppetto a corrergli dietro senza poterlo raggiungere, perché quel birichino di Pinocchio andava a salti come una lepre, e battendo i suoi piedi di legno sul lastrico della strada, faceva un fracasso, come venti paia di zoccoli da contadini. -– Piglialo! piglialo! – urlava Geppetto; ma la gente che era per la via, vedendo questo burattino di legno, che correva come un barbero, si fermava incantata a guardarlo, e rideva, rideva e rideva, da non poterselo figurare. -Alla fine, e per buona fortuna, capitò un carabiniere, il quale, sentendo tutto quello schiamazzo e credendo si trattasse di un puledro che avesse levata la mano al padrone, si piantò coraggiosamente a gambe larghe in mezzo alla strada, coll’animo risoluto di fermarlo e di impedire il caso di maggiori disgrazie. -Ma Pinocchio, quando si avvide da lontano del carabiniere che barricava tutta la strada, s’ingegnò di passargli, per sorpresa, frammezzo alle gambe, e invece fece fiasco. -Il carabiniere, senza punto smoversi, lo acciuffò pulitamente per il naso (era un nasone spropositato, che pareva fatto apposta per essere acchiappato dai carabinieri), e lo riconsegnò nelle proprie mani di Geppetto; il quale, a titolo di correzione, voleva dargli subito una buona tiratina d’orecchi. Ma figuratevi come rimase quando, nel cercargli gli orecchi, non gli riuscì di poterli trovare: e sapete perché? Perché, nella furia di scolpirlo, si era dimenticato di farglieli. -Allora lo prese per la collottola, e, mentre lo riconduceva indietro, gli disse tentennando minacciosamente il capo: -– Andiamo a casa. Quando saremo a casa, non dubitare che faremo i nostri conti! -Pinocchio, a questa antifona, si buttò per terra, e non volle più camminare. Intanto i curiosi e i bighelloni principiavano a fermarsi lì dintorno e a far capannello. -Chi ne diceva una, chi un’altra. -– Povero burattino! – dicevano alcuni, – ha ragione a non voler tornare a casa! Chi lo sa come lo picchierebbe quell’omaccio di Geppetto!... -E gli altri soggiungevano malignamente: -– Quel Geppetto pare un galantuomo! ma è un vero tiranno coi ragazzi! Se gli lasciano quel povero burattino fra le mani, è capacissimo di farlo a pezzi!... -Insomma, tanto dissero e tanto fecero, che il carabiniere rimise in libertà Pinocchio e condusse in prigione quel pover’uomo di Geppetto. Il quale, non avendo parole lì per lì per difendersi, piangeva come un vitellino, e nell’avviarsi verso il carcere, balbettava singhiozzando: -– Sciagurato figliuolo! E pensare che ho penato tanto a farlo un burattino per bene! Ma mi sta il dovere! Dovevo pensarci prima!... -Quello che accadde dopo, è una storia da non potersi credere, e ve la racconterò in quest’altri capitoli. - -IV La storia di Pinocchio col Grillo-parlante, dove si vede come i ragazzi cattivi hanno a noia di sentirsi correggere da chi ne sa più di loro. - -Vi dirò dunque, ragazzi, che mentre il povero Geppetto era condotto senza sua colpa in prigione, quel monello di Pinocchio, rimasto libero dalle grinfie del carabiniere, se la dava a gambe giù attraverso ai campi, per far più presto a tornarsene a casa; e nella gran furia del correre saltava greppi altissimi, siepi di pruni e fossi pieni d’acqua, tale e quale come avrebbe potuto fare un capretto o un leprottino inseguito dai cacciatori. -Giunto dinanzi a casa, trovò l’uscio di strada socchiuso. Lo spinse, entrò dentro, e appena ebbe messo tanto di paletto, si gettò a sedere per terra, lasciando andare un gran sospirone di contentezza. -Ma quella contentezza durò poco, perché sentì nella stanza qualcuno che fece: -– Crì - crì - crì! -– Chi è che mi chiama? – disse Pinocchio tutto impaurito. -– Sono io! -Pinocchio si voltò e vide un grosso Grillo che saliva lentamente su su per il muro. -– Dimmi, Grillo: e tu chi sei? -– Io sono il Grillo-parlante, ed abito in questa stanza da più di cent’anni. -– Oggi però questa stanza è mia, – disse il burattino, – e se vuoi farmi un vero piacere, vattene subito, senza nemmeno voltarti indietro. -– Io non me ne anderò di qui, – rispose il Grillo, – se prima non ti avrò detto una gran verità. -– Dimmela e spìcciati. -– Guai a quei ragazzi che si ribellano ai loro genitori e che abbandonano capricciosamente la casa paterna! Non avranno mai bene in questo mondo; e prima o poi dovranno pentirsene amaramente. -– Canta pure, Grillo mio, come ti pare e piace: ma io so che domani, all’alba, voglio andarmene di qui, perché se rimango qui, avverrà a me quel che avviene a tutti gli altri ragazzi, vale a dire mi manderanno a scuola e per amore o per forza mi toccherà studiare; e io, a dirtela in confidenza, di studiare non ne ho punto voglia e mi diverto più a correre dietro alle farfalle e a salire su per gli alberi a prendere gli uccellini di nido. -– Povero grullerello! Ma non sai che, facendo così, diventerai da grande un bellissimo somaro e che tutti si piglieranno gioco di te? -– Chétati. Grillaccio del mal’augurio! – gridò Pinocchio. -Ma il Grillo, che era paziente e filosofo, invece di aversi a male di questa impertinenza, continuò con lo stesso tono di voce: -– E se non ti garba di andare a scuola, perché non impari almeno un mestiere, tanto da guadagnarti onestamente un pezzo di pane? -– Vuoi che te lo dica? – replicò Pinocchio, che cominciava a perdere la pazienza. – Fra tutti i mestieri del mondo non ce n’è che uno solo, che veramente mi vada a genio. -– E questo mestiere sarebbe?... -– Quello di mangiare, bere, dormire, divertirmi e fare dalla mattina alla sera la vita del vagabondo. -– Per tua regola, – disse il Grillo-parlante con la sua solita calma, – tutti quelli che fanno codesto mestiere finiscono sempre allo spedale o in prigione. -– Bada, Grillaccio del mal’augurio!... se mi monta la bizza, guai a te! -– Povero Pinocchio! Mi fai proprio compassione!... -– Perché ti faccio compassione? -– Perché sei un burattino e, quel che è peggio, perché hai la testa di legno. -A queste ultime parole, Pinocchio saltò su tutt’infuriato e preso sul banco un martello di legno lo scagliò contro il Grillo-parlante. -Forse non credeva nemmeno di colpirlo: ma disgraziatamente lo colse per l’appunto nel capo, tanto che il povero Grillo ebbe appena il fiato di fare crì - crì - crì, e poi rimase lì stecchito e appiccicato alla parete. - -V Pinocchio ha fame, e cerca un uovo per farsi una frittata; ma sul più bello, la frittata gli vola via dalla finestra. - -Intanto cominciò a farsi notte, e Pinocchio, ricordandosi che non aveva mangiato nulla, senti un’uggiolina allo stomaco, che somigliava moltissimo all’appetito. -Ma l’appetito nei ragazzi cammina presto; e di fatti dopo pochi minuti l’appetito diventò fame, e la fame, dal vedere al non vedere, si converti in una fame da lupi, una fame da tagliarsi col coltello. -Il povero Pinocchio corse subito al focolare, dove c’era una pentola che bolliva e fece l’atto di scoperchiarla, per vedere che cosa ci fosse dentro, ma la pentola era dipinta sul muro. Figuratevi come restò. Il suo naso, che era già lungo, gli diventò più lungo almeno quattro dita. -Allora si dette a correre per la stanza e a frugare per tutte le cassette e per tutti i ripostigli in cerca di un po’ di pane, magari un po’ di pan secco, un crosterello, un osso avanzato al cane, un po’ di polenta muffita, una lisca di pesce, un nocciolo di ciliegia, insomma di qualche cosa da masticare: ma non trovò nulla, il gran nulla, proprio nulla. -E intanto la fame cresceva, e cresceva sempre: e il povero Pinocchio non aveva altro sollievo che quello di sbadigliare: e faceva degli sbadigli così lunghi, che qualche volta la bocca gli arrivava fino agli orecchi. E dopo avere sbadigliato, sputava, e sentiva che lo stomaco gli andava via. -Allora piangendo e disperandosi, diceva: -– Il Grillo-parlante aveva ragione. Ho fatto male a rivoltarmi al mio babbo e a fuggire di casa... Se il mio babbo fosse qui, ora non mi troverei a morire di sbadigli! Oh! che brutta malattia che è la fame! -Quand’ecco gli parve di vedere nel monte della spazzatura qualche cosa di tondo e di bianco, che somigliava tutto a un uovo di gallina. Spiccare un salto e gettarvisi sopra, fu un punto solo. Era un uovo davvero. -La gioia del burattino è impossibile descriverla: bisogna sapersela figurare. Credendo quasi che fosse un sogno, si rigirava quest’uovo fra le mani, e lo toccava e lo baciava, e baciandolo diceva: -– E ora come dovrò cuocerlo? Ne farò una frittata?... No, è meglio cuocerlo nel piatto!... O non sarebbe più saporito se lo friggessi in padella? O se invece lo cuocessi a uso uovo da bere? No, la più lesta di tutte è di cuocerlo nel piatto o nel tegamino: ho troppa voglia di mangiarmelo! -Detto fatto, pose un tegamino sopra un caldano pieno di brace accesa: messe nel tegamino, invece d’olio o di burro, un po’ d’acqua: e quando l’acqua principiò a fumare, tac!... spezzò il guscio dell’uovo, e fece l’atto di scodellarvelo dentro. -Ma invece della chiara e del torlo, scappò fuori un pulcino tutto allegro e complimentoso, il quale, facendo una bella riverenza, disse: -– Mille grazie, signor Pinocchio, d’avermi risparmiata la fatica di rompere il guscio! Arrivedella, stia bene e tanti saluti a casa! -Ciò detto distese le ali e, infilata la finestra che era aperta, se ne volò via a perdita d’occhio. -Il povero burattino rimase lì, come incantato, cogli occhi fissi, colla bocca aperta e coi gusci dell’uovo in mano. Riavutosi, peraltro, dal primo sbigottimento, cominciò a piangere, a strillare, a battere i piedi in terra, per la disperazione, e piangendo diceva: -– Eppure il Grillo-parlante aveva ragione! Se non fossi scappato di casa e se il mio babbo fosse qui, ora non mi troverei a morire di fame! Oh! che brutta malattia che è la fame!... -E perché il corpo gli seguitava a brontolare più che mai, e non sapeva come fare a chetarlo, pensò di uscir di casa e di dare una scappata al paesello vicino, nella speranza di trovare qualche persona caritatevole che gli avesse fatto l’elemosina di un po’ di pane. - -VI Pinocchio si addormenta coi piedi sul caldano, e la mattina dopo si sveglia coi piedi tutti bruciati. - -Per l’appunto era una nottataccia d’inferno. Tuonava forte forte, lampeggiava come se il cielo pigliasse fuoco, e un ventaccio freddo e strapazzone, fischiando rabbiosamente e sollevando un immenso nuvolo di polvere, faceva stridere e cigolare tutti gli alberi della campagna. -Pinocchio aveva una gran paura dei tuoni e dei lampi: se non che la fame era più forte della paura: motivo per cui accostò l’uscio di casa, e presa la carriera, in un centinaio di salti arrivò fino al paese, colla lingua fuori e col fiato grosso, come un cane da caccia. -Ma trovò tutto buio e tutto deserto. Le botteghe erano chiuse; le porte di casa chiuse; le finestre chiuse; e nella strada nemmeno un cane. Pareva il paese dei morti. -Allora Pinocchio, preso dalla disperazione e dalla fame, si attaccò al campanello d’una casa, e cominciò a suonare a distesa, dicendo dentro di sé: -– Qualcuno si affaccierà. -Difatti si affacciò un vecchino, col berretto da notte in capo, il quale gridò tutto stizzito: -– Che cosa volete a quest’ora? -– Che mi fareste il piacere di darmi un po’ di pane? -– Aspettami costì che torno subito, – rispose il vecchino, credendo di aver da fare con qualcuno di quei ragazzacci rompicollo che si divertono di notte a suonare i campanelli delle case, per molestare la gente per bene, che se la dorme tranquillamente. -Dopo mezzo minuto la finestra si riaprì e la voce del solito vecchino gridò a Pinocchio: -– Fatti sotto e para il cappello. -Pinocchio si levò subito il suo cappelluccio; ma mentre faceva l’atto di pararlo, sentì pioversi addosso un’enorme catinellata d’acqua che lo annaffiò tutto dalla testa ai piedi, come se fosse un vaso di giranio appassito. -Tornò a casa bagnato come un pulcino e rifinito dalla stanchezza e dalla fame e perché non aveva più forza di reggersi ritto, si pose a sedere, appoggiando i piedi fradici e impillaccherati sopra un caldano pieno di brace accesa. -E lì si addormentò; e nel dormire, i piedi che erano di legno, gli presero fuoco e adagio adagio gli si carbonizzarono e diventarono cenere. -E Pinocchio seguitava a dormire e a russare, come se i suoi piedi fossero quelli d’un altro. Finalmente sul far del giorno si svegliò, perché qualcuno aveva bussato alla porta. -– Chi è? – domandò sbadigliando e stropicciandosi gli occhi. -– Sono io, – rispose una voce. -Quella voce era la voce di Geppetto. - -VII Geppetto torna a casa, e dà al burattino la colazione che il pover’uomo aveva portata con sé. - -Il povero Pinocchio, che aveva sempre gli occhi fra il sonno, non s’era ancora avvisto dei piedi, che gli si erano tutti bruciati: per cui appena sentì la voce di suo padre, schizzò giù dallo sgabello per correre a tirare il paletto; ma invece, dopo due o tre traballoni, cadde di picchio tutto lungo disteso sul pavimento. -E nel battere in terra fece lo stesso rumore, che avrebbe fatto un sacco di mestoli. cascato da un quinto piano. -– Aprimi! – intanto gridava Geppetto dalla strada. -– Babbo mio, non posso, – rispondeva il burattino piangendo e ruzzolandosi per terra. -– Perché non puoi? -– Perché mi hanno mangiato i piedi. -– E chi te li ha mangiati? -– Il gatto, – disse Pinocchio, vedendo il gatto che colle zampine davanti si divertiva a far ballare alcuni trucioli di legno. -– Aprimi, ti dico! – ripeté Geppetto, – se no quando vengo in casa, il gatto te lo do io! -– Non posso star ritto, credetelo. O povero me! povero me che mi toccherà a camminare coi ginocchi per tutta la vita!... -Geppetto, credendo che tutti questi piagnistei fossero un’altra monelleria del burattino, pensò bene di farla finita, e arrampicatosi su per il muro, entrò in casa dalla finestra. -Da principio voleva dire e voleva fare: ma poi quando vide il suo Pinocchio sdraiato in terra e rimasto senza piedi davvero, allora sentì intenerirsi; e presolo subito in collo, si dette a baciarlo e a fargli mille carezze e mille moine, e, coi luccioloni che gli cascavano giù per le gote, gli disse singhiozzando: -– Pinocchiuccio mio! Com’è che ti sei bruciato i piedi? -– Non lo so, babbo, ma credetelo che è stata una nottata d’inferno e me ne ricorderò fin che campo. Tonava, balenava e io avevo una gran fame e allora il Grillo-parlante mi disse: «Ti sta bene; sei stato cattivo, e te lo meriti», e io gli dissi: «Bada, Grillo!...», e lui mi disse: «Tu sei un burattino e hai la testa di legno» e io gli tirai un martello di legno, e lui morì ma la colpa fu sua, perché io non volevo ammazzarlo, prova ne sia che messi un tegamino sulla brace accesa del caldano, ma il pulcino scappò fuori e disse: «Arrivedella... e tanti saluti a casa» e la fame cresceva sempre, motivo per cui quel vecchino col berretto da notte, affacciandosi alla finestra mi disse: «Fatti sotto e para il cappello» e io con quella catinellata d’acqua sul capo, perché il chiedere un po’ di pane non è vergogna, non è vero? me ne tornai subito a casa, e perché avevo sempre una gran fame, messi i piedi sul caldano per rasciugarmi, e voi siete tornato, e me li sono trovati bruciati, e intanto la fame l’ho sempre e i piedi non li ho più! Ih!... ih!... ih!... ih!... -E il povero Pinocchio cominciò a piangere e a berciare così forte, che lo sentivano da cinque chilometri lontano. -Geppetto, che di tutto quel discorso arruffato aveva capito una cosa sola, cioè che il burattino sentiva morirsi dalla gran fame, tirò fuori di tasca tre pere, e porgendogliele, disse: -– Queste tre pere erano per la mia colazione: ma io te le do volentieri. Mangiale, e buon pro ti faccia. -– Se volete che le mangi, fatemi il piacere di sbucciarle. -– Sbucciarle? – replicò Geppetto meravigliato. – Non avrei mai creduto, ragazzo, mio, che tu fossi così boccuccia e così schizzinoso di palato. Male! In questo mondo, fin da bambini, bisogna avvezzarsi abboccati e a saper mangiare di tutto, perché non si sa mai quel che ci può capitare. I casi son tanti!... -– Voi direte bene, – soggiunse Pinocchio, – ma io non mangerò mai una frutta, che non sia sbucciata. Le bucce non le posso soffrire. -E quel buon uomo di Geppetto, cavato fuori un coltellino, e armatosi di santa pazienza, sbucciò le tre pere, e pose tutte le bucce sopra un angolo della tavola. -Quando Pinocchio in due bocconi ebbe mangiata la prima pera, fece l’atto di buttar via il torsolo: ma Geppetto gli trattenne il braccio, dicendogli: -– Non lo buttar via: tutto in questo mondo può far comodo. -– Ma io il torsolo non lo mangio davvero!... – gridò il burattino, rivoltandosi come una vipera. -– Chi lo sa! I casi son tanti!... – ripeté Geppetto, senza riscaldarsi. -Fatto sta che i tre torsoli, invece di essere gettati fuori dalla finestra, vennero posati sull’angolo della tavola in compagnia delle bucce. -Mangiate o, per dir meglio, divorate le tre pere, Pinocchio fece un lunghissimo sbadiglio e disse piagnucolando: -– Ho dell’altra fame! -– Ma io, ragazzo mio, non ho più nulla da darti. -– Proprio nulla, nulla? -– Ci avrei soltanto queste bucce e questi torsoli di pera. -– Pazienza! – disse Pinocchio, – se non c’è altro, mangerò una buccia. -E cominciò a masticare. Da principio storse un po’ la bocca; ma poi, una dietro l’altra, spolverò in un soffio tutte le bucce: e dopo le bucce, anche i torsoli, e quand’ebbe finito di mangiare ogni cosa, si batté tutto contento le mani sul corpo, e disse gongolando: -– Ora sì che sto bene! -– Vedi dunque, – osservò Geppetto, – che avevo ragione io quando ti dicevo che non bisogna avvezzarsi né troppo sofistici né troppo delicati di palato. Caro mio, non si sa mai quel che ci può capitare in questo mondo. I casi son tanti!... - -VIII Geppetto rifà i piedi a Pinocchio e vende la propria casacca per comprargli l’Abbecedario. - -Il burattino, appena che si fu levata la fame, cominciò subito a bofonchiare e a piangere, perché voleva un paio di piedi nuovi. -Ma Geppetto, per punirlo della monelleria fatta lo lasciò piangere e disperarsi per una mezza giornata: poi gli disse: -– E perché dovrei rifarti i piedi? Forse per vederti scappar di nuovo da casa tua? -– Vi prometto, – disse il burattino singhiozzando, – che da oggi in poi sarò buono... -– Tutti i ragazzi, – replicò Geppetto, – quando vogliono ottenere qualcosa, dicono così. -– Vi prometto che anderò a scuola, studierò e mi farò onore... -– Tutti i ragazzi, quando vogliono ottenere qualcosa, ripetono la medesima storia. -– Ma io non sono come gli altri ragazzi! Io sono più buono di tutti e dico sempre la verità. Vi prometto, babbo, che imparerò un’arte e che sarò la consolazione e il bastone della vostra vecchiaia. -Geppetto che, sebbene facesse il viso di tiranno, aveva gli occhi pieni di pianto e il cuore grosso dalla passione di vedere il suo povero Pinocchio in quello stato compassionevole, non rispose altre parole: ma, presi in mano gli arnesi del mestiere e due pezzetti di legno stagionato, si pose a lavorare di grandissimo impegno. -E in meno d’un’ora, i piedi erano bell’e fatti; due piedini svelti, asciutti e nervosi, come se fossero modellati da un artista di genio. -Allora Geppetto disse al burattino: -– Chiudi gli occhi e dormi! -E Pinocchio chiuse gli occhi e fece finta di dormire. E nel tempo che si fingeva addormentato, Geppetto con un po’ di colla sciolta in un guscio d’uovo gli appiccicò i due piedi al loro posto, e glieli appiccicò così bene, che non si vedeva nemmeno il segno dell’attaccatura. -Appena il burattino si accorse di avere i piedi, saltò giù dalla tavola dove stava disteso, e principiò a fare mille sgambetti e mille capriole, come se fosse ammattito dalla gran contentezza. -– Per ricompensarvi di quanto avete fatto per me, – disse Pinocchio al suo babbo, – voglio subito andare a scuola. -– Bravo ragazzo! -– Ma per andare a scuola ho bisogno d’un po’ di vestito. -Geppetto, che era povero e non aveva in tasca nemmeno un centesimo, gli fece allora un vestituccio di carta fiorita, un paio di scarpe di scorza di albero e un berrettino di midolla di pane. -Pinocchio corse subito a specchiarsi in una catinella piena d’acqua e rimase così contento di sé, che disse pavoneggiandosi: -– Paio proprio un signore! -– Davvero, – replicò Geppetto, – perché, tienlo a mente, non è il vestito bello che fa il signore. ma è piuttosto il vestito pulito. -– A proposito, – soggiunse il burattino, – per andare alla scuola mi manca sempre qualcosa: anzi mi manca il più e il meglio. -– Cioè? -– Mi manca l’Abbecedario. -– Hai ragione: ma come si fa per averlo? -– È facilissimo: si va da un libraio e si compra. -– E i quattrini? -– Io non ce l’ho. -– Nemmeno io, – soggiunse il buon vecchio, facendosi tristo. -E Pinocchio, sebbene fosse un ragazzo allegrissimo, si fece tristo anche lui: perché la miseria, quando è miseria davvero, la intendono tutti: anche i ragazzi. -– Pazienza! – gridò Geppetto tutt’a un tratto rizzandosi in piedi; e infilatasi la vecchia casacca di fustagno, tutta toppe e rimendi, uscì correndo di casa. -Dopo poco tornò: e quando tornò aveva in mano l’Abbecedario per il figliuolo, ma la casacca non l’aveva più. Il pover’uomo era in maniche di camicia, e fuori nevicava. -– E la casacca, babbo? -– L’ho venduta. -– Perché l’avete venduta? -– Perché mi faceva caldo. -Pinocchio capì questa risposta a volo, e non potendo frenare l’impeto del suo buon cuore, saltò al collo di Geppetto e cominciò a baciarlo per tutto il viso. - -IX Pinocchio vende l’Abbecedario per andare a vedere il teatrino dei burattini. - -Smesso che fu di nevicare, Pinocchio col suo bravo Abbecedario nuovo sotto il braccio, prese la strada che menava alla scuola: e strada facendo, fantasticava nel suo cervellino mille ragionamenti e mille castelli in aria, uno più bello dell’altro. -E discorrendo da sé solo diceva: -– Oggi, alla scuola, voglio subito imparare a leggere: domani poi imparerò a scrivere e domani l’altro imparerò a fare i numeri. Poi, colla mia abilità, guadagnerò molti quattrini e coi primi quattrini che mi verranno in tasca, voglio subito fare al mio babbo una bella casacca di panno. Ma che dico di panno? Gliela voglio fare tutta d’argento e d’oro, e coi bottoni di brillanti. E quel pover’uomo se la merita davvero: perché, insomma, per comprarmi i libri e per farmi istruire, è rimasto in maniche di camicia... a questi freddi! Non ci sono che i babbi che sieno capaci di certi sacrifizi!... -Mentre tutto commosso diceva così gli parve di sentire in lontananza una musica di pifferi e di colpi di grancassa: pì-pì-pì, pì-pì-pì zum, zum, zum, zum. -Si fermò e stette in ascolto. Quei suoni venivano di fondo a una lunghissima strada traversa, che conduceva a un piccolo paesetto fabbricato sulla spiaggia del mare. -– Che cosa sia questa musica? Peccato che io debba andare a scuola, se no... -E rimase lì perplesso. A ogni modo, bisognava prendere una risoluzione: o a scuola, o a sentire i pifferi. -– Oggi anderò a sentire i pifferi, e domani a scuola: per andare a scuola c’è sempre tempo, – disse finalmente quel monello facendo una spallucciata. -Detto fatto, infilò giù per la strada traversa, e cominciò a correre a gambe. Più correva e più sentiva distinto il suono dei pifferi e dei tonfi della grancassa: pì-pì-pì, pì-pì-pì… zum, zum, zum, zum. -Quand’ecco che si trovò in mezzo a una piazza tutta piena di gente, la quale si affollava intorno a un gran baraccone di legno e di tela dipinta di mille colori. -– Che cos’è quel baraccone? – domandò Pinocchio, voltandosi a un ragazzetto che era lì del paese. -– Leggi il cartello, che c’è scritto, e lo saprai. -– Lo leggerei volentieri, ma per l’appunto oggi non so leggere. -– Bravo bue! Allora te lo leggerò io. Sappi dunque che in quel cartello a lettere rosse come il fuoco c’è scritto: GRAN TEATRO DEI BURATTINI... -– È molto che è incominciata la commedia? -– Comincia ora. -– E quanto si spende per entrare? -– Quattro soldi. -Pinocchio, che aveva addosso la febbre della curiosità, perse ogni ritegno, e disse senza vergognarsi al ragazzetto, col quale parlava: -– Mi daresti quattro soldi fino a domani? -– Te li darei volentieri, – gli rispose l’altro canzonandolo, – ma oggi per l’appunto non te li posso dare. -– Per quattro soldi, ti vendo la mia giacchetta, – gli disse allora il burattino. -– Che vuoi che mi faccia di una giacchetta di carta fiorita? Se ci piove su, non c’è più verso di cavartela da dosso. -– Vuoi comprare le mie scarpe? -– Sono buone per accendere il fuoco. -– Quanto mi dai del berretto? -– Bell’acquisto davvero! Un berretto di midolla di pane! C’è il caso che i topi me lo vengano a mangiare in capo! -Pinocchio era sulle spine. Stava lì lì per fare un’ultima offerta: ma non aveva coraggio; esitava, tentennava, pativa. Alla fine disse: -– Vuoi darmi quattro soldi di quest’Abbecedario nuovo? -– Io sono un ragazzo, e non compro nulla dai ragazzi, – gli rispose il suo piccolo interlocutore, che aveva molto più giudizio di lui. -– Per quattro soldi l’Abbecedario lo prendo io, – gridò un rivenditore di panni usati, che s’era trovato presente alla conversazione. -E il libro fu venduto lì sui due piedi. E pensare che quel pover’uomo di Geppetto era rimasto a casa, a tremare dal freddo in maniche di camicia, per comprare l’Abbecedario al figliuolo! - -X I burattini riconoscono il loro fratello Pinocchio e gli fanno una grandissima festa; ma sul più bello, esce fuori il burattinaio Mangiafoco, e Pinocchio corre il pericolo di fare una brutta fine. - -Quando Pinocchio entrò nel teatrino delle marionette, accadde un fatto che destò mezza rivoluzione. -Bisogna sapere che il sipario era tirato su e la commedia era già incominciata. -Sulla scena si vedevano Arlecchino e Pulcinella, che bisticciavano fra di loro e, secondo il solito, minacciavano da un momento all’altro di scambiarsi un carico di schiaffi e di bastonate. -La platea, tutta attenta, si mandava a male dalle grandi risate, nel sentire il battibecco di quei due burattini, che gestivano e si trattavano d’ogni vitupero con tanta verità, come se fossero proprio due animali ragionevoli e due persone di questo mondo. -Quando all’improvviso, che è che non è, Arlecchino smette di recitare, e voltandosi verso il pubblico e accennando colla mano qualcuno in fondo alla platea, comincia a urlare in tono drammatico: -– Numi del firmamento! sogno o son desto? Eppure quello laggiù è Pinocchio!... -– È Pinocchio davvero! – grida Pulcinella. -– È proprio lui! – strilla la signora Rosaura, facendo capolino di fondo alla scena. -– È Pinocchio! è Pinocchio! – urlano in coro tutti i burattini, uscendo a salti fuori delle quinte. -– È Pinocchio! è il nostro fratello Pinocchio! Evviva Pinocchio. -– Pinocchio, vieni quassù da me, – grida Arlecchino, – vieni a gettarti fra le braccia dei tuoi fratelli di legno! -A questo affettuoso invito Pinocchio spicca un salto, e di fondo alla platea va nei posti distinti; poi con un altro salto, dai posti distinti monta sulla testa del direttore d’orchestra, e di lì schizza sul palcoscenico. -È impossibile figurarsi gli abbracciamenti, gli strizzoni di collo, i pizzicotti dell’amicizia e le zuccate della vera e sincera fratellanza, che Pinocchio ricevé in mezzo a tanto arruffio dagli attori e dalle attrici di quella compagnia drammatico-vegetale. -Questo spettacolo era commovente, non c’è che dire: ma il pubblico della platea, vedendo che la commedia non andava più avanti, s’impazientì e prese a gridare: -– Vogliamo la commedia, vogliamo la commedia! -Tutto fiato buttato via, perché i burattini, invece di continuare la recita, raddoppiarono il chiasso e le grida, e, postosi Pinocchio sulle spalle, se lo portarono in trionfo davanti ai lumi della ribalta. -Allora uscì fuori il burattinaio, un omone così brutto, che metteva paura soltanto a guardarlo. Aveva una barbaccia nera come uno scarabocchio d’inchiostro, e tanto lunga che gli scendeva dal mento fino a terra: basta dire che, quando camminava, se la pestava coi piedi. La sua bocca era larga come un forno, i suoi occhi parevano due lanterne di vetro rosso, col lume acceso di dietro, e con le mani faceva schioccare una grossa frusta, fatta di serpenti e di code di volpe attorcigliate insieme. -All’apparizione inaspettata del burattinaio, ammutolirono tutti: nessuno fiatò più. Si sarebbe sentito volare una mosca. Quei poveri burattini, maschi e femmine, tremavano tutti come tante foglie. -– Perché sei venuto a mettere lo scompiglio nel mio teatro? – domandò il burattinaio a Pinocchio, con un vocione d’Orco gravemente infreddato di testa. -– La creda, illustrissimo, che la colpa non è stata mia!... -– Basta così! Stasera faremo i nostri conti. -Difatti, finita la recita della commedia, il burattinaio andò in cucina, dov’egli s’era preparato per cena un bel montone, che girava lentamente infilato nello spiedo. E perché gli mancavano la legna per finirlo di cuocere e di rosolare, chiamò Arlecchino e Pulcinella e disse loro: -– Portatemi di qua quel burattino che troverete attaccato al chiodo. Mi pare un burattino fatto di un legname molto asciutto, e sono sicuro che, a buttarlo sul fuoco, mi darà una bellissima fiammata all’arrosto. -Arlecchino e Pulcinella da principio esitarono; ma impauriti da un’occhiataccia del loro padrone, obbedirono: e dopo poco tornarono in cucina, portando sulle braccia il povero Pinocchio, il quale, divincolandosi come un’anguilla fuori dell’acqua, strillava disperatamente: -– Babbo mio, salvatemi! Non voglio morire, non voglio morire!... - -XI Mangiafoco starnutisce e perdona a Pinocchio, il quale poi difende dalla morte il suo amico Arlecchino. - -Il burattinaio Mangiafoco che (questo era il suo nome) pareva un uomo spaventoso, non dico di no, specie con quella sua barbaccia nera che, a uso grembiale, gli copriva tutto il petto e tutte le gambe; ma nel fondo poi non era un cattiv’uomo. Prova ne sia che quando vide portarsi davanti quel povero Pinocchio, che si dibatteva per ogni verso, urlando «Non voglio morire, non voglio morire!», principiò subito a commuoversi e a impietosirsi e, dopo aver resistito un bel pezzo, alla fine non ne poté più, e lasciò andare un sonorissimo starnuto. -A quello starnuto, Arlecchino, che fin allora era stato afflitto e ripiegato come un salcio piangente, si fece tutto allegro in viso, e chinatosi verso Pinocchio, gli bisbigliò sottovoce: -– Buone nuove, fratello. Il burattinaio ha starnutito, e questo è segno che s’è mosso a compassione per te, e oramai sei salvo. -Perché bisogna sapere che, mentre tutti gli uomini, quando si sentono impietositi per qualcuno, o piangono o per lo meno fanno finta di rasciugarsi gli occhi, Mangiafoco, invece, ogni volta che s’inteneriva davvero, aveva il vizio di starnutire. Era un modo come un altro, per dare a conoscere agli altri la sensibilità del suo cuore. -Dopo aver starnutito, il burattinaio, seguitando a fare il burbero, gridò a Pinocchio: -– Finiscila di piangere! I tuoi lamenti mi hanno messo un’uggiolina in fondo allo stomaco... Sento uno spasimo, che quasi quasi... Etcì! etcì! – e fece altri due starnuti. -– Felicità! – disse Pinocchio. -– Grazie! E il tuo babbo e la tua mamma sono sempre vivi? – gli domandò Mangiafoco. -– Il babbo, sì la mamma non l’ho mai conosciuta. -– Chi lo sa che dispiacere sarebbe per il tuo vecchio padre, se ora ti facessi gettare fra quei carboni ardenti! Povero vecchio! lo compatisco!.. Etcì, etcì, etcì, – e fece altri tre starnuti. -– Felicità! – disse Pinocchio. -– Grazie! Del resto bisogna compatire anche me, perché, come vedi, non ho più legna per finire di cuocere quel montone arrosto, e tu, dico la verità, in questo caso mi avresti fatto un gran comodo! Ma oramai mi sono impietosito e ci vuol pazienza. Invece di te, metterò a bruciare sotto lo spiedo qualche burattino della mia Compagnia... Olà, giandarmi! -A questo comando comparvero subito due giandarmi di legno, lunghi lunghi, secchi secchi, col cappello a lucerna in testa e colla sciabola sfoderata in mano. -Allora il burattinaio disse loro con voce rantolosa: -– Pigliatemi lì quell’Arlecchino, legatelo ben bene, e poi gettatelo a bruciare sul fuoco. Io voglio che il mio montone sia arrostito bene! -Figuratevi il povero Arlecchino! Fu tanto il suo spavento, che le gambe gli si ripiegarono e cadde bocconi per terra. -Pinocchio, alla vista di quello spettacolo straziante, andò a gettarsi ai piedi del burattinaio e piangendo dirottamente e bagnandogli di lacrime tutti i peli della lunghissima barba, cominciò a dire con voce supplichevole: -– Pietà, signor Mangiafoco!... -– Qui non ci son signori! – replicò duramente il burattinaio. -– Pietà, signor Cavaliere!... -– Qui non ci son cavalieri! -– Pietà, signor Commendatore!... -– Qui non ci son commendatori! -– Pietà, Eccellenza!... -A sentirsi chiamare Eccellenza il burattinaio fece subito il bocchino tondo, e diventato tutt’a un tratto più umano e più trattabile, disse a Pinocchio: -– Ebbene, che cosa vuoi da me? -– Vi domando grazia per il povero Arlecchino!... -– Qui non c’è grazia che tenga. Se ho risparmiato te, bisogna che faccia mettere sul fuoco lui, perché io voglio che il mio montone sia arrostito bene. -– In questo caso, – gridò fieramente Pinocchio, rizzandosi e gettando via il suo berretto di midolla di pane, – in questo caso conosco qual è il mio dovere. Avanti, signori giandarmi! Legatemi e gettatemi là fra quelle fiamme. No, non è giusta che il povero Arlecchino, il vero amico mio, debba morire per me!... -Queste parole, pronunziate con voce alta e con accento eroico, fecero piangere tutti i burattini che erano presenti a quella scena. Gli stessi giandarmi, sebbene fossero di legno, piangevano come due agnellini di latte. -Mangiafoco, sul principio, rimase duro e immobile come un pezzo di ghiaccio: ma poi, adagio adagio, cominciò anche lui a commuoversi e a starnutire. E fatti quattro o cinque starnuti, aprì affettuosamente le braccia e disse a Pinocchio: -– Tu sei un gran bravo ragazzo! Vieni qua da me e dammi un bacio. -Pinocchio corse subito, e arrampicandosi come uno scoiattolo su per la barba del burattinaio, andò a posargli un bellissimo bacio sulla punta del naso. -– Dunque la grazia è fatta? – domandò il povero Arlecchino, con un fil di voce che si sentiva appena. -– La grazia è fatta! – rispose Mangiafoco: poi soggiunse sospirando e tentennando il capo: – Pazienza! Per questa sera mi rassegnerò a mangiare il montone mezzo crudo, ma un’altra volta, guai a chi toccherà!... -Alla notizia della grazia ottenuta, i burattini corsero tutti sul palcoscenico e, accesi i lumi e i lampadari come in serata di gala, cominciarono a saltare e a ballare. Era l’alba e ballavano sempre. - -XII Il burattinaio Mangiafoco regala cinque monete d’oro a Pinocchio, perché le porti al suo babbo Geppetto: e Pinocchio, invece, si lascia abbindolare dalla Volpe e dal Gatto e se ne va con loro. - -Il giorno dipoi Mangiafoco chiamò in disparte Pinocchio e gli domandò: -– Come si chiama tuo padre? -– Geppetto. -– E che mestiere fa? -– Il povero. -– Guadagna molto? -– Guadagna tanto, quanto ci vuole per non aver mai un centesimo in tasca. Si figuri che per comprarmi l’Abbecedario della scuola dové vendere l’unica casacca che aveva addosso: una casacca che, fra toppe e rimendi, era tutta una piaga. -– Povero diavolo! Mi fa quasi compassione. Ecco qui cinque monete d’oro. Vai subito a portargliele e salutalo tanto da parte mia. -Pinocchio, com’è facile immaginarselo, ringraziò mille volte il burattinaio, abbracciò, a uno a uno, tutti i burattini della Compagnia, anche i giandarmi: e fuori di sé dalla contentezza, si mise in viaggio per tornarsene a casa sua. -Ma non aveva fatto ancora mezzo chilometro, che incontrò per la strada una Volpe zoppa da un piede e un Gatto cieco da tutt’e due gli occhi, che se ne andavano là là, aiutandosi fra di loro, da buoni compagni di sventura. La Volpe che era zoppa, camminava appoggiandosi al Gatto: e il Gatto, che era cieco, si lasciava guidare dalla Volpe. -– Buon giorno, Pinocchio, – gli disse la Volpe, salutandolo garbatamente. -– Com’è che sai il mio nome? – domandò il burattino. -– Conosco bene il tuo babbo. -– Dove l’hai veduto? -– L’ho veduto ieri sulla porta di casa sua. -– E che cosa faceva? -– Era in maniche di camicia e tremava dal freddo. -– Povero babbo! Ma, se Dio vuole, da oggi in poi non tremerà più!... -– Perché? -– Perché io sono diventato un gran signore. -– Un gran signore tu? – disse la Volpe, e cominciò a ridere di un riso sguaiato e canzonatore: e il Gatto rideva anche lui, ma per non darlo a vedere, si pettinava i baffi colle zampe davanti. -– C’è poco da ridere, – gridò Pinocchio impermalito. – Mi dispiace davvero di farvi venire l’acquolina in bocca, ma queste qui, se ve ne intendete, sono cinque bellissime monete d’oro. -E tirò fuori le monete avute in regalo da Mangiafoco. -Al simpatico suono di quelle monete la Volpe, per un moto involontario, allungò la gamba che pareva rattrappita, e il Gatto spalancò tutt’e due gli occhi, che parvero due lanterne verdi: ma poi li richiuse subito, tant’è vero che Pinocchio non si accorse di nulla. -– E ora, – gli domandò la Volpe, – che cosa vuoi farne di codeste monete? -– Prima di tutto, – rispose il burattino, – voglio comprare per il mio babbo una bella casacca nuova, tutta d’oro e d’argento e coi bottoni di brillanti: e poi voglio comprare un Abbecedario per me. -– Per te? -– Davvero: perché voglio andare a scuola e mettermi a studiare a buono. -– Guarda me! – disse la Volpe. – Per la passione sciocca di studiare ho perduto una gamba. -– Guarda me! – disse il Gatto. – Per la passione sciocca di studiare ho perduto la vista di tutti e due gli occhi. -In quel mentre un Merlo bianco, che se ne stava appollaiato sulla siepe della strada, fece il solito verso e disse: -– Pinocchio, non dar retta ai consigli dei cattivi compagni: se no, te ne pentirai! -Povero Merlo, non l’avesse mai detto! Il Gatto, spiccando un gran salto, gli si avventò addosso, e senza dargli nemmeno il tempo di dire ohi se lo mangiò in un boccone, con le penne e tutto. -Mangiato che l’ebbe e ripulitasi la bocca, chiuse gli occhi daccapo e ricominciò a fare il cieco, come prima. -– Povero Merlo! – disse Pinocchio al Gatto, – perché l’hai trattato così male? -– Ho fatto per dargli una lezione. Così un’altra volta imparerà a non metter bocca nei discorsi degli altri. -Erano giunti più che a mezza strada, quando la Volpe, fermandosi di punto in bianco, disse al burattino: -– Vuoi raddoppiare le tue monete d’oro? -– Cioè? -– Vuoi tu, di cinque miserabili zecchini, farne cento, mille, duemila? -– Magari! E la maniera? -– La maniera è facilissima. Invece di tornartene a casa tua, dovresti venire con noi. -– E dove mi volete condurre? -– Nel paese dei Barbagianni. -Pinocchio ci pensò un poco, e poi disse risolutamente: -– No, non ci voglio venire. Oramai sono vicino a casa, e voglio andarmene a casa, dove c’è il mio babbo che m’aspetta. Chi lo sa, povero vecchio, quanto ha sospirato ieri, a non vedermi tornare. Pur troppo io sono stato un figliolo cattivo, e il Grillo-parlante aveva ragione quando diceva: «I ragazzi disobbedienti non possono aver bene in questo mondo». E io l’ho provato a mie spese, Perché mi sono capitate dimolte disgrazie, e anche ieri sera in casa di Mangiafoco, ho corso pericolo... Brrr! mi viene i bordoni soltanto a pensarci! -– Dunque, – disse la Volpe, – vuoi proprio andare a casa tua? Allora vai pure, e tanto peggio per te! -– Tanto peggio per te! – ripeté il Gatto. -– Pensaci bene, Pinocchio, perché tu dai un calcio alla fortuna. -– Alla fortuna! – ripeté il Gatto. -– I tuoi cinque zecchini, dall’oggi al domani sarebbero diventati duemila. -– Duemila! – ripeté il Gatto. -– Ma com’è mai possibile che diventino tanti? – domandò Pinocchio, restando a bocca aperta dallo stupore. -– Te lo spiego subito, – disse la Volpe. – Bisogna sapere che nel paese dei Barbagianni c’è un campo benedetto, chiamato da tutti il Campo dei miracoli. Tu fai in questo campo una piccola buca e ci metti dentro per esempio uno zecchino d’oro. Poi ricuopri la buca con un po’ di terra: l’annaffi con due secchie d’acqua di fontana, ci getti sopra una presa di sale, e la sera te ne vai tranquillamente a letto. Intanto, durante la notte, lo zecchino germoglia e fiorisce, e la mattina dopo, di levata, ritornando nel campo, che cosa trovi? Trovi un bell’albero carico di tanti zecchini d’oro, quanti chicchi di grano può avere una bella spiga nel mese di giugno. -– Sicché dunque, – disse Pinocchio sempre più sbalordito, – se io sotterrassi in quel campo i miei cinque zecchini, la mattina dopo quanti zecchini ci troverei? -– È un conto facilissimo, – rispose la Volpe, – un conto che puoi farlo sulla punta delle dita. Poni che ogni zecchino ti faccia un grappolo di cinquecento zecchini: moltiplica il cinquecento per cinque e la mattina dopo ti trovi in tasca duemila cinquecento zecchini lampanti e sonanti. -– Oh che bella cosa! – gridò Pinocchio, ballando dall’allegrezza. – Appena che questi zecchini gli avrò raccolti, ne prenderò per me duemila e gli altri cinquecento di più li darò in regalo a voi altri due. -– Un regalo a noi? – gridò la Volpe sdegnandosi e chiamandosi offesa. – Dio te ne liberi! -– Te ne liberi! – ripeté il Gatto. -– Noi, – riprese la Volpe, – non lavoriamo per il vile interesse: noi lavoriamo unicamente per arricchire gli altri. -– Gli altri! – ripeté il Gatto. -– Che brave persone! – pensò dentro di sé Pinocchio: e dimenticandosi lì sul tamburo, del suo babbo, della casacca nuova, dell’Abbecedario e di tutti i buoni proponimenti fatti, disse alla Volpe e al Gatto: -– Andiamo pure. Io vengo con voi. - -XIII L’osteria del Gambero Rosso. - -Cammina, cammina, cammina, alla fine sul far della sera arrivarono stanchi morti all’osteria del Gambero Rosso. -– Fermiamoci un po’ qui, – disse la Volpe, – tanto per mangiare un boccone e per riposarci qualche ora. A mezzanotte poi ripartiremo per essere domani, all’alba, nel Campo dei miracoli. -Entrati nell’osteria, si posero tutti e tre a tavola: ma nessuno di loro aveva appetito. -Il povero Gatto, sentendosi gravemente indisposto di stomaco, non poté mangiare altro che trentacinque triglie con salsa di pomodoro e quattro porzioni di trippa alla parmigiana: e perché la trippa non gli pareva condita abbastanza, si rifece tre volte a chiedere il burro e il formaggio grattato! -La Volpe avrebbe spelluzzicato volentieri qualche cosa anche lei: ma siccome il medico le aveva ordinato una grandissima dieta, così dové contentarsi di una semplice lepre dolce e forte con un leggerissimo contorno di pollastre ingrassate e di galletti di primo canto. Dopo la lepre si fece portare per tornagusto un cibreino di pernici, di starne, di conigli, di ranocchi, di lucertole e d’uva paradisa; e poi non volle altro. Aveva tanta nausea per il cibo, diceva lei, che non poteva accostarsi nulla alla bocca. -Quello che mangiò meno di tutti fu Pinocchio. Chiese uno spicchio di noce e un cantuccino di pane, e lasciò nel piatto ogni cosa. Il povero figliuolo col pensiero sempre fisso al Campo dei miracoli, aveva preso un’indigestione anticipata di monete d’oro. -Quand’ebbero cenato, la Volpe disse all’oste: -– Dateci due buone camere, una per il signor Pinocchio e un’altra per me e per il mio compagno. Prima di ripartire schiacceremo un sonnellino. Ricordatevi però che a mezzanotte vogliamo essere svegliati per continuare il nostro viaggio. -– Sissignori, – rispose l’oste e strizzò l’occhio alla Volpe e al Gatto, come dire: «Ho mangiata la foglia e ci siamo intesi!...». -Appena che Pinocchio fu entrato nel letto, si addormentò a colpo e principiò a sognare. E sognando gli pareva di essere in mezzo a un campo, e questo campo era pieno di arboscelli carichi di grappoli, e questi grappoli erano carichi di zecchini d’oro che, dondolandosi mossi dal vento, facevano zin, zin, zin, quasi volessero dire: «Chi ci vuole venga a prenderci». Ma quando Pinocchio fu sul più bello, quando, cioè, allungò la mano per prendere a manciate tutte quelle belle monete e mettersele in tasca, si trovò svegliato all’improvviso da tre violentissimi colpi dati nella porta di camera. -Era l’oste che veniva a dirgli che la mezzanotte era suonata. -– E i miei compagni sono pronti? – gli domandò il burattino. -– Altro che pronti! Sono partiti due ore fa. -– Perché mai tanta fretta? -– Perché il Gatto ha ricevuto un’imbasciata, che il suo gattino maggiore, malato di geloni ai piedi, stava in pericolo di vita. -– E la cena l’hanno pagata? -– Che vi pare? Quelle lì sono persone troppo educate perché facciano un affronto simile alla signoria vostra. -– Peccato! Quest’affronto mi avrebbe fatto tanto piacere! – disse Pinocchio, grattandosi il capo. Poi domandò: -– E dove hanno detto di aspettarmi quei buoni amici? -– Al Campo dei miracoli, domattina, allo spuntare del giorno. -Pinocchio pagò uno zecchino per la cena sua e per quella dei suoi compagni, e dopo partì. -Ma si può dire che partisse a tastoni, perché fuori dell’osteria c’era un buio così buio, che non ci si vedeva da qui a lì. Nella campagna all’intorno non si sentiva alitare una foglia. Solamente alcuni uccellacci notturni, traversando la strada da una siepe all’altra, venivano a sbattere le ali sul naso di Pinocchio, il quale, facendo un salto indietro per la paura, gridava: – Chi va là? – e l’eco delle colline circostanti ripeteva in lontananza: – Chi va là? chi va là? chi va là? -Intanto, mentre camminava, vide sul tronco di un albero un piccolo animaletto che riluceva di una luce pallida e opaca, come un lumino da notte dentro una lampada di porcellana trasparente. -– Chi sei? – gli domandò Pinocchio. -– Sono l’ombra del Grillo-parlante, – rispose l’animaletto, con una vocina fioca fioca, che pareva venisse dal mondo di là. -– Che vuoi da me? – disse il burattino. -– Voglio darti un consiglio. Ritorna indietro e porta i quattro zecchini, che ti sono rimasti, al tuo povero babbo che piange e si dispera per non averti più veduto. -– Domani il mio babbo sarà un gran signore, perché questi quattro zecchini diventeranno duemila. -– Non ti fidare, ragazzo mio, di quelli che promettono di farti ricco dalla mattina alla sera. Per il solito, o sono matti o imbroglioni! Dai retta a me, ritorna indietro. -– E io, invece, voglio andare avanti. -– L’ora è tarda!... -– Voglio andare avanti. -– La nottata è scura... -– Voglio andare avanti. -– La strada è pericolosa... -– Voglio andare avanti. -– Ricordati che i ragazzi che vogliono fare di loro capriccio e a modo loro, prima o poi se ne pentono. -– Le solite storie. Buona notte, Grillo. -– Buona notte, Pinocchio, e che il cielo ti salvi dalla guazza e dagli assassini! -Appena dette queste ultime parole, il Grillo-parlante si spense a un tratto, come si spenge un lume soffiandoci sopra, e la strada rimase più buia di prima. - -XIV Pinocchio, per non aver dato retta ai buoni consigli del Grillo-parlante, s’imbatte negli assassini. - -– Davvero, – disse fra sé il burattino rimettendosi in viaggio, – come siamo disgraziati noialtri poveri ragazzi! Tutti ci sgridano, tutti ci ammoniscono, tutti ci danno consigli. A lasciarli dire, tutti si metterebbero in capo di essere i nostri babbi e i nostri maestri; tutti: anche i Grilli-parlanti. Ecco qui: perché io non ho voluto dar retta a quell’uggioso di Grillo, chi lo sa quante disgrazie, secondo lui, mi dovrebbero accadere! Dovrei incontrare anche gli assassini! Meno male che agli assassini io non ci credo, né ci ho creduto mai. Per me gli assassini sono stati inventati apposta dai babbi, per far paura ai ragazzi che vogliono andare fuori la notte. E poi se anche li trovassi qui sulla strada, mi darebbero forse soggezione? Neanche per sogno. Anderei loro sul viso, gridando: «Signori assassini, che cosa vogliono da me? Si rammentino che con me non si scherza! Se ne vadano dunque per i fatti loro, e zitti!». A questa parlantina fatta sul serio, quei poveri assassini, mi par di vederli, scapperebbero via come il vento. Caso poi fossero tanto ineducati da non voler scappare, allora scapperei io, e così la farei finita... -Ma Pinocchio non poté finire il suo ragionamento, perché in quel punto gli parve di sentire dietro di sé un leggerissimo fruscio di foglie. -Si voltò a guardare e vide nel buio due figuracce nere tutte imbacuccate in due sacchi da carbone, le quali correvano dietro a lui a salti e in punta di piedi, come se fossero due fantasmi. -– Eccoli davvero! – disse dentro di sé: e non sapendo dove nascondere i quattro zecchini, se li nascose in bocca e precisamente sotto la lingua. -Poi si provò a scappare. Ma non aveva ancor fatto il primo passo, che sentì agguantarsi per le braccia e intese due voci orribili e cavernose, che gli dissero: -– O la borsa o la vita! -Pinocchio non potendo rispondere con le parole, a motivo delle monete che aveva in bocca, fece mille salamelecchi e mille pantomime per dare ad intendere a quei due incappati, di cui si vedevano soltanto gli occhi attraverso i buchi dei sacchi, che lui era un povero burattino, e che non aveva in tasca nemmeno un centesimo falso. -– Via, via! Meno ciarle e fuori i denari! – gridavano minacciosamente i due briganti. -E il burattino fece col capo e colle mani un segno come dire: «Non ne ho». -– Metti fuori i denari o sei morto, - disse l’assassino più alto di statura. -- Morto! - ripeté l’altro. -– E dopo ammazzato te, ammazzeremo anche tuo padre! -– Anche tuo padre! -– No, no, no, il mio povero babbo no! – gridò Pinocchio con accento disperato: ma nel gridare così, gli zecchini gli suonarono in bocca. -– Ah! furfante! Dunque i denari te li sei nascosti sotto la lingua? Sputali subito! -E Pinocchio, duro! -– Ah! tu fai il sordo? Aspetta un poco, che penseremo noi a farteli sputare! -Difatti, uno di loro afferrò il burattino per la punta del naso e quell’altro lo prese per la bazza, e lì cominciarono a tirare screanzatamente, uno per in qua e l’altro per in là, tanto da costringerlo a spalancare la bocca: ma non ci fu verso. La bocca del burattino pareva inchiodata e ribadita. -Allora l’assassino più piccolo di statura, cavato fuori un coltellaccio, provò a conficcarglielo, a guisa di leva e di scalpello, fra le labbra: ma Pinocchio, lesto come un lampo, gli azzannò la mano coi denti, e dopo avergliela con un morso staccata di netto, la sputò; e figuratevi la sua maraviglia quando, invece di una mano, si accorse di aver sputato in terra uno zampetto di gatto. -Incoraggiato da questa prima vittoria, si liberò a forza dalle unghie degli assassini e, saltata la siepe della strada, cominciò a fuggire per la campagna. E gli assassini a correre dietro a lui, come due cani dietro una lepre: e quello che aveva perduto uno zampetto correva con una gamba sola, né si è saputo mai come facesse. -Dopo una corsa di quindici chilometri, Pinocchio non ne poteva più. Allora, vistosi perso, si arrampicò su per il fusto di un altissimo pino e si pose a sedere in vetta ai rami. Gli assassini tentarono di arrampicarsi anche loro, ma giunti a metà del fusto sdrucciolarono e, ricascando a terra, si spellarono le mani e i piedi. -Non per questo si dettero per vinti: che anzi, raccolto un fastello di legna secche a piè del pino, vi appiccarono il fuoco. In men che non si dice, il pino cominciò a bruciare e a divampare, come una candela agitata dal vento. Pinocchio, vedendo che le fiamme salivano sempre più, e non volendo far la fine del piccione arrosto, spiccò un bel salto di vetta all’albero, e via a correre daccapo attraverso ai campi e ai vigneti. E gli assassini dietro, sempre dietro, senza stancarsi mai. -Intanto cominciava a baluginare il giorno e si rincorrevano sempre; quand’ecco che Pinocchio si trovò sbarrato il passo da un fosso largo e profondissimo, tutto pieno di acquaccia sudicia, color del caffè e latte. Che fare? «Una, due, tre!» gridò il burattino, e slanciandosi con una gran rincorsa, saltò dall’altra parte. E gli assassini saltarono anche loro, ma non avendo preso bene la misura, patatunfete!... cascarono giù nel bel mezzo del fosso. Pinocchio che sentì il tonfo e gli schizzi dell’acqua, urlò ridendo e seguitando a correre: -– Buon bagno, signori assassini. -E già si figurava che fossero bell’e affogati, quando invece, voltandosi a guardare, si accòrse che gli correvano dietro tutti e due, sempre imbacuccati nei loro sacchi e grondanti acqua come due panieri sfondati. - -XV Gli assassini inseguono Pinocchio; e, dopo averlo raggiunto, lo impiccano a un ramo della Quercia grande. - -Allora il burattino, perdutosi d’animo, fu proprio sul punto di gettarsi in terra e di darsi per vinto, quando nel girare gli occhi all’intorno vide fra mezzo al verde cupo degli alberi biancheggiare in lontananza una casina candida come la neve. -– Se io avessi tanto fiato da arrivare fino a quella casa, forse sarei salvo, – disse dentro di sé. -E senza indugiare un minuto riprese a correre per il bosco a carriera distesa. E gli assassini sempre dietro. -E dopo una corsa disperata di quasi due ore, finalmente tutto trafelato arrivò alla porta di quella casina e bussò. -Nessuno rispose. -Tornò a bussare con maggior violenza, perché sentiva avvicinarsi il rumore dei passi e il respiro grosso e affannoso de’ suoi persecutori. -Lo stesso silenzio. -Avvedutosi che il bussare non giovava a nulla, cominciò per disperazione a dare calci e zuccate nella porta. Allora si affacciò alla finestra una bella bambina, coi capelli turchini e il viso bianco come un’immagine di cera, gli occhi chiusi e le mani incrociate sul petto, la quale senza muovere punto le labbra, disse con una vocina che pareva venisse dall’altro mondo: -– In questa casa non c’è nessuno. Sono tutti morti. -– Aprimi almeno tu! – gridò Pinocchio piangendo e raccomandandosi. -– Sono morta anch’io. -– Morta? e allora che cosa fai costì alla finestra? -– Aspetto la bara che venga a portarmi via. -Appena detto così, la bambina disparve, e la finestra si richiuse senza far rumore. -– O bella bambina dai capelli turchini, – gridava Pinocchio, – aprimi per carità! Abbi compassione di un povero ragazzo inseguito dagli assass... -Ma non poté finir la parola, perché sentì afferrarsi per il collo, e le solite due vociaccie che gli brontolarono minacciosamente: -– Ora non ci scappi più! -Il burattino, vedendosi balenare la morte dinanzi agli occhi, fu preso da un tremito così forte, che nel tremare, gli sonavano le giunture delle sue gambe di legno e i quattro zecchini che teneva nascosti sotto la lingua. -– Dunque? – gli domandarono gli assassini, – vuoi aprirla la bocca, sì o no? Ah! non rispondi?... Lascia fare: ché questa volta te la faremo aprir noi!... -E cavato fuori due coltellacci lunghi lunghi e affilati come rasoi, zaff... gli affibbiarono due colpi nel mezzo alle reni. -Ma il burattino per sua fortuna era fatto d’un legno durissimo, motivo per cui le lame, spezzandosi, andarono in mille schegge e gli assassini rimasero col manico dei coltelli in mano, a guardarsi in faccia. -– Ho capito, – disse allora uno di loro, – bisogna impiccarlo! Impicchiamolo! -– Impicchiamolo, – ripeté l’altro. -Detto fatto, gli legarono le mani dietro le spalle e passatogli un nodo scorsoio intorno alla gola, lo attaccarono penzoloni al ramo di una grossa pianta detta la Quercia grande. -Poi si posero là, seduti sull’erba, aspettando che il burattino facesse l’ultimo sgambetto: ma il burattino, dopo tre ore, aveva sempre gli occhi aperti, la bocca chiusa e sgambettava più che mai. -Annoiati finalmente di aspettare, si voltarono a Pinocchio e gli dissero sghignazzando: -– Addio a domani. Quando domani torneremo qui, si spera che ci farai la garbatezza di farti trovare bell’e morto e con la bocca spalancata. -E se ne andarono. -Intanto s’era levato un vento impetuoso di tramontana, che soffiando e mugghiando con rabbia, sbatacchiava in qua e in là il povero impiccato, facendolo dondolare violentemente come il battaglio di una campana che suona a festa. E quel dondolìo gli cagionava acutissimi spasimi, e il nodo scorsoio, stringendosi sempre più alla gola, gli toglieva il respiro. -A poco a poco gli occhi gli si appannavano; e sebbene sentisse avvicinarsi la morte, pure sperava sempre che da un momento all’altro sarebbe capitata qualche anima pietosa a dargli aiuto. Ma quando, aspetta aspetta, vide che non compariva nessuno, proprio nessuno, allora gli tornò in mente il suo povero babbo... e balbettò quasi moribondo: -– Oh babbo mio! se tu fossi qui!... -E non ebbe fiato per dir altro. Chiuse gli occhi, aprì la bocca, stirò le gambe e, dato un grande scrollone, rimase lì come intirizzito. - -XVI La bella Bambina dai capelli turchini fa raccogliere il burattino: lo mette a letto, e chiama tre medici per sapere se sia vivo o morto. - -In quel mentre che il povero Pinocchio impiccato dagli assassini a un ramo della Quercia grande, pareva oramai più morto che vivo, la bella Bambina dai capelli turchini si affacciò daccapo alla finestra, e impietositasi alla vista di quell’infelice che, sospeso per il collo, ballava il trescone alle ventate di tramontana, batté per tre volte le mani insieme, e fece tre piccoli colpi. -A questo segnale si sentì un gran rumore di ali che volavano con foga precipitosa, e un grosso falco venne a posarsi sul davanzale della finestra. -– Che cosa comandate, mia graziosa Fata? – disse il Falco abbassando il becco in atto di reverenza (perché bisogna sapere che la Bambina dai capelli turchini non era altro, in fin dei conti, che una buonissima Fata, che da più di mill’anni abitava nelle vicinanze di quel bosco): -– Vedi tu quel burattino attaccato penzoloni a un ramo della Quercia grande? -– Lo vedo. -– Orbene: vola subito laggiù: rompi col tuo fortissimo becco il nodo che lo tiene sospeso in aria e posalo delicatamente sdraiato sull’erba a piè della Quercia. -Il Falco volò via e dopo due minuti tornò dicendo: -– Quel che mi avete comandato, è fatto. -– E come l’hai trovato? Vivo o morto? -– A vederlo, pareva morto, ma non dev’essere ancora morto perbene, perché, appena gli ho sciolto il nodo scorsoio che lo stringeva intorno alla gola, ha lasciato andare un sospiro, balbettando a mezza voce: «Ora mi sento meglio!». -Allora la Fata, battendo le mani insieme, fece due piccoli colpi, e apparve un magnifico Can-barbone, che camminava ritto sulle gambe di dietro, tale e quale come se fosse un uomo. -Il Can-barbone era vestito da cocchiere in livrea di gala. Aveva in capo un nicchiettino a tre punte gallonato d’oro, una parrucca bianca coi riccioli che gli scendevano giù per il collo, una giubba color di cioccolata coi bottoni di brillanti e con due grandi tasche per tenervi gli ossi che gli regalava a pranzo la padrona, un paio di calzoni corti di velluto cremisi, le calze di seta, gli scarpini scollati, e di dietro una specie di fodera da ombrelli, tutta di raso turchino, per mettervi dentro la coda, quando il tempo cominciava a piovere. -– Su da bravo, Medoro! – disse la Fata al Can-barbone; – Fai subito attaccare la più bella carrozza della mia scuderia e prendi la via del bosco. Arrivato che sarai sotto la Quercia grande, troverai disteso sull’erba un povero burattino mezzo morto. Raccoglilo con garbo, posalo pari pari su i cuscini della carrozza e portamelo qui. Hai capito? -Il Can-barbone, per fare intendere che aveva capito, dimenò tre o quattro volte la fodera di raso turchino, che aveva dietro, e partì come un barbero. -Di lì a poco, si vide uscire dalla scuderia una bella carrozzina color dell’aria, tutta imbottita di penne di canarino e foderata nell’interno di panna montata e di crema coi savoiardi. La carrozzina era tirata da cento pariglie di topini bianchi, e il Can-barbone, seduto a cassetta, schioccava la frusta a destra e a sinistra, come un vetturino quand’ha paura di aver fatto tardi. -Non era ancora passato un quarto d’ora, che la carrozzina tornò, e la Fata, che stava aspettando sull’uscio di casa, prese in collo il povero burattino, e portatolo in una cameretta che aveva le pareti di madreperla, mandò subito a chiamare i medici più famosi del vicinato. -E i medici arrivarono subito, uno dopo l’altro: arrivò, cioè, un Corvo, una Civetta e un Grillo-parlante. -– Vorrei sapere da lor signori, – disse la Fata, rivolgendosi ai tre medici riuniti intorno al letto di Pinocchio, – vorrei sapere da lor signori se questo disgraziato burattino sia morto o vivo!... -A quest’invito, il Corvo, facendosi avanti per il primo, tastò il polso a Pinocchio: poi gli tastò il naso, poi il dito mignolo dei piedi: e quand’ebbe tastato ben bene, pronunziò solennemente queste parole: -– A mio credere il burattino è bell’e morto: ma se per disgrazia non fosse morto, allora sarebbe indizio sicuro che è sempre vivo! -– Mi dispiace, – disse la Civetta, – di dover contraddire il Corvo, mio illustre amico e collega: per me, invece, il burattino è sempre vivo; ma se per disgrazia non fosse vivo, allora sarebbe segno che è morto davvero! -– E lei non dice nulla? – domandò la Fata al Grillo-parlante. -– Io dico che il medico prudente quando non sa quello che dice, la miglior cosa che possa fare, è quella di stare zitto. Del resto quel burattino lì non m’è fisonomia nuova: io lo conosco da un pezzo!... -Pinocchio, che fin allora era stato immobile come un vero pezzo di legno, ebbe una specie di fremito convulso, che fece scuotere tutto il letto. -– Quel burattino lì, – seguitò a dire il Grillo-parlante, – è una birba matricolata... -Pinocchio aprì gli occhi e li richiuse subito. -– È un monellaccio, uno svogliato, un vagabondo. Pinocchio si nascose la faccia sotto i lenzuoli. -– Quel burattino lì è un figliuolo disubbidiente, che farà morire di crepacuore il suo povero babbo!... -A questo punto si sentì nella camera un suono soffocato di pianti e di singhiozzi. Figuratevi come rimasero tutti, allorché sollevati un poco i lenzuoli, si accorsero che quello che piangeva e singhiozzava era Pinocchio. -– Quando il morto piange, è segno che è in via di guarigione, – disse solennemente il Corvo. -– Mi duole di contraddire il mio illustre amico e collega, – soggiunse la Civetta, – ma per me, quando il morto piange è segno che gli dispiace a morire. - -XVII Pinocchio mangia lo zucchero, ma non vuol purgarsi: Però quando vede i becchini che vengono a portarlo via, allora si purga. Poi dice una bugia e per gastigo gli cresce il naso. - -Appena i tre medici furono usciti di camera, la Fata si accostò a Pinocchio e, dopo averlo toccato sulla fronte, si accòrse che era travagliato da un febbrone da non si dire. -Allora sciolse una certa polverina bianca in un mezzo bicchier d’acqua, e porgendolo al burattino, gli disse amorosamente: -– Bevila, e in pochi giorni sarai guarito. -Pinocchio guardò il bicchiere, storse un po’ la bocca, e poi dimanda con voce di piagnisteo: -– È dolce o amara? -– È amara, ma ti farà bene. -– Se è amara, non la voglio. -– Da’ retta a me: bevila. -– A me l’amaro non mi piace. -– Bevila: e quando l’avrai bevuta, ti darò una pallina di zucchero, per rifarti la bocca. -– Dov’è la pallina di zucchero? -– Eccola qui, – disse la Fata, tirandola fuori da una zuccheriera d’oro. -– Prima voglio la pallina di zucchero, e poi beverò quell’acquaccia amara... -– Me lo prometti? -– Sì... -La fata gli dette la pallina, e Pinocchio, dopo averla sgranocchiata e ingoiata in un attimo, disse leccandosi i labbri: -– Bella cosa se anche lo zucchero fosse una medicina!... Mi purgherei tutti i giorni. -– Ora mantieni la promessa e bevi queste poche gocciole d’acqua, che ti renderanno la salute. -Pinocchio prese di mala voglia il bicchiere in mano e vi ficcò dentro la punta del naso: poi se l’accostò alla bocca: poi tornò a ficcarci la punta del naso: finalmente disse: -– È troppo amara! troppo amara! Io non la posso bere. -– Come fai a dirlo se non l’hai nemmeno assaggiata? -– Me lo figuro! L’ho sentita all’odore. Voglio prima un’altra pallina di zucchero... e poi la beverò!... -Allora la Fata, con tutta la pazienza di una buona mamma, gli pose in bocca un altro po’ di zucchero; e dopo gli presentò daccapo il bicchiere. -– Così non la posso bere! – disse il burattino, facendo mille smorfie. -– Perché? -– Perché mi dà noia quel guanciale che ho laggiù sui piedi. -La Fata gli levò il guanciale. -– È inutile! Nemmeno così la posso bere... -– Che cos’altro ti dà noia? -– Mi dà noia l’uscio di camera, che è mezzo aperto. -La Fata andò e chiuse l’uscio di camera. -– Insomma, – gridò Pinocchio, dando in uno scoppio di pianto, – quest’acquaccia amara, non la voglio bere, no, no, no!... -– Ragazzo mio, te ne pentirai... -– Non me n’importa... -– La tua malattia è grave... -– Non me n’importa... -– La febbre ti porterà in poche ore all’altro mondo... -– Non me n’importa... -– Non hai paura della morte? -– Punto paura!... Piuttosto morire, che bevere quella medicina cattiva. -A questo punto, la porta della camera si spalancò ed entrarono dentro quattro conigli neri come l’inchiostro, che portavano sulle spalle una piccola bara da morto. -– Che cosa volete da me? – gridò Pinocchio, rizzandosi tutto impaurito a sedere sul letto. -– Siamo venuti a prenderti, – rispose il coniglio più grosso. -– A prendermi?... Ma io non sono ancora morto!... -– Ancora no: ma ti restano pochi minuti di vita avendo tu ricusato di bevere la medicina, che ti avrebbe guarito dalla febbre!... -– O Fata, o Fata mia,– cominciò allora a strillare il burattino, – datemi subito quel bicchiere. Spicciatevi, per carità, perché non voglio morire no... non voglio morire... -E preso il bicchiere con tutt’e due le mani, lo votò in un fiato. -– Pazienza! – dissero i conigli. – Per questa volta abbiamo fatto il viaggio a ufo. -E tiratisi di nuovo la piccola bara sulle spalle, uscirono di camera bofonchiando e mormorando fra i denti. -Fatto sta che di lì a pochi minuti, Pinocchio saltò giù dal letto, bell’e guarito; perché bisogna sapere che i burattini di legno hanno il privilegio di ammalarsi di rado e di guarire prestissimo. -E la Fata, vedendolo correre e ruzzare per la camera, vispo e allegro come un gallettino di primo canto, gli disse: -– Dunque la mia medicina t’ha fatto bene davvero? -– Altro che bene! Mi ha rimesso al mondo!... -– E allora come mai ti sei fatto tanto pregare a beverla? -– Egli è che noi ragazzi siamo tutti così! Abbiamo più paura delle medicine che del male. -– Vergogna! I ragazzi dovrebbero sapere che un buon medicamento preso a tempo può salvarli da una grave malattia e fors’anche dalla morte... -– Oh! ma un’altra volta non mi farò tanto pregare! Mi rammenterò di quei conigli neri, colla bara sulle spalle... e allora piglierò subito il bicchiere in mano, e giù!... -– Ora vieni un po’ qui da me e raccontami come andò che ti trovasti fra le mani degli assassini. -– Gli andò che il burattinaio Mangiafoco mi dette alcune monete d’oro, e mi disse: «To’, portale al tuo babbo!» e io, invece, per la strada trovai una Volpe e un Gatto, due persone molto per bene, che mi dissero: «Vuoi che codeste monete diventino mille e duemila? Vieni con noi, e ti condurremo al Campo dei Miracoli». E io dissi: «Andiamo»; e loro dissero: «Fermiamoci qui all’osteria del Gambero Rosso e dopo la mezzanotte ripartiremo». Ed io, quando mi svegliai, loro non c’erano più, perché erano partiti. Allora io cominciai a camminare di notte, che era un buio che pareva impossibile, per cui trovai per la strada due assassini dentro due sacchi da carbone, che mi dissero: «Metti fuori i quattrini»; e io dissi: «Non ce n’ho»; perché le quattro monete d’oro me l’ero nascoste in bocca, e uno degli assassini si provò a mettermi le mani in bocca, e io con un morso gli staccai la mano e poi la sputai, ma invece di una mano sputai uno zampetto di gatto. E gli assassini a corrermi dietro e, io corri che ti corro, finché mi raggiunsero, e mi legarono per il collo a un albero di questo bosco, col dire: «Domani torneremo qui, e allora sarai morto e colla bocca aperta, e così ti porteremo via le monete d’oro che hai nascoste sotto la lingua». -– E ora le quattro monete dove le hai messe? – gli domandò la Fata. -– Le ho perdute! – rispose Pinocchio; ma disse una bugia, perché invece le aveva in tasca. Appena detta la bugia, il suo naso, che era già lungo, gli crebbe subito due dita di più. -– E dove le hai perdute? -– Nel bosco qui vicino. -A questa seconda bugia il naso seguitò a crescere. -– Se le hai perdute nel bosco vicino, – disse la Fata, – le cercheremo e le ritroveremo: perché tutto quello che si perde nel vicino bosco, si ritrova sempre. -– Ah! ora che mi rammento bene, – replicò il burattino, imbrogliandosi, – le quattro monete non le ho perdute, ma senza avvedermene le ho inghiottite mentre bevevo la vostra medicina. -A questa terza bugia, il naso gli si allungò in un modo così straordinario, che il povero Pinocchio non poteva più girarsi da nessuna parte. Se si voltava di qui batteva il naso nel letto o nei vetri della finestra, se si voltava di là, lo batteva nelle pareti o nella porta di camera, se alzava un po’ di più il capo, correva il rischio di ficcarlo in un occhio alla Fata. -E la Fata lo guardava e rideva. -– Perché ridete? – gli domandò il burattino, tutto confuso e impensierito di quel suo naso che cresceva a occhiate. -– Rido della bugia che hai detto. -– Come mai sapete che ho detto una bugia? -– Le bugie, ragazzo mio, si riconoscono subito! perché ve ne sono di due specie: vi sono le bugie che hanno le gambe corte, e le bugie che hanno il naso lungo: la tua per l’appunto è di quelle che hanno il naso lungo. -Pinocchio, non sapendo più dove nascondersi per la vergogna, si provò a fuggire di camera; ma non gli riuscì. Il suo naso era cresciuto tanto, che non passava più dalla porta. - -XVIII Pinocchio ritrova la Volpe e il Gatto, e va con loro a seminare le quattro monete nel Campo de’ Miracoli. - -Come potete immaginarvelo, la Fata lasciò che il burattino piangesse e urlasse una buona mezz’ora, a motivo di quel suo naso che non passava più dalla porta di camera; e lo fece per dargli una severa lezione perché si correggesse dal brutto vizio di dire le bugie, il più brutto vizio che possa avere un ragazzo. Ma quando lo vide trasfigurato e cogli occhi fuori della testa dalla gran disperazione, allora, mossa a pietà, batté le mani insieme, e a quel segnale entrarono in camera dalla finestra un migliaio di grossi uccelli chiamati Picchi, i quali, posatisi tutti sul naso di Pinocchio, cominciarono a beccarglielo tanto e poi tanto, che in pochi minuti quel naso enorme e spropositato si trovò ridotto alla sua grandezza naturale. -– Quanto siete buona, Fata mia, – disse il burattino, asciugandosi gli occhi, – e quanto bene vi voglio! -– Ti voglio bene anch’io, – rispose la Fata, – e se tu vuoi rimanere con me, tu sarai il mio fratellino e io la tua buona sorellina... -– Io resterei volentieri... ma il mio povero babbo? -– Ho pensato a tutto. Il tuo babbo è stato digià avvertito: e prima che faccia notte, sarà qui. -– Davvero?... – gridò Pinocchio, saltando dall’allegrezza. – Allora, Fatina mia, se vi contentate, vorrei andargli incontro! Non vedo l’ora di poter dare un bacio a quel povero vecchio, che ha sofferto tanto per me! -– Vai pure, ma bada di non ti sperdere. Prendi la via del bosco, e sono sicurissima che lo incontrerai. -Pinocchio partì: e appena entrato nel bosco, cominciò a correre come un capriolo. Ma quando fu arrivato a un certo punto, quasi in faccia alla Quercia grande, si fermò, perché gli parve di aver sentito gente fra mezzo alle frasche. Difatti vide apparire sulla strada, indovinate chi?... la Volpe e il Gatto, ossia i due compagni di viaggio, coi quali aveva cenato all’osteria del Gambero Rosso. -– Ecco il nostro caro Pinocchio! – gridò la Volpe, abbracciandolo e baciandolo. – Come mai sei qui? -– Come mai sei qui? – ripeté il Gatto. -– È una storia lunga, – disse il burattino, – e ve la racconterò a comodo. Sappiate però che l’altra notte, quando mi avete lasciato solo nell’osteria, ho trovato gli assassini per la strada... -– Gli assassini?... O povero amico! E che cosa volevano? -– Mi volevano rubare le monete d’oro. -– Infami!... – disse la Volpe. -– Infamissimi! – ripeté il Gatto. -– Ma io cominciai a scappare, – continuò a dire il burattino, – e loro sempre dietro: finché mi raggiunsero e m’impiccarono a un ramo di quella quercia. -E Pinocchio accennò la Quercia grande, che era lì a due passi. -– Si può sentir di peggio? – disse la Volpe. – In che mondo siamo condannati a vivere? Dove troveremo un rifugio sicuro noi altri galantuomini?... -Nel tempo che parlavano così, Pinocchio si accorse che il Gatto era zoppo dalla gamba destra davanti, perché gli mancava in fondo tutto lo zampetto cogli unghioli: per cui gli domandò: -– Che cosa hai fatto del tuo zampetto? -Il Gatto voleva rispondere qualche cosa, ma s’imbrogliò. Allora la Volpe disse subito: -– Il mio amico è troppo modesto, – e per questo non risponde. Risponderò io per lui. Sappi dunque che un’ora fa abbiamo incontrato sulla strada un vecchio lupo, quasi svenuto dalla fame, che ci ha chiesto un po’ d’elemosina. Non avendo noi da dargli nemmeno una lisca di pesce, che cosa ha fatto l’amico mio, che ha davvero un cuore di Cesare?... Si è staccato coi denti uno zampetto delle sue gambe davanti e l’ha gettato a quella povera bestia, perché potesse sdigiunarsi. -E la Volpe nel dir così, si asciugò una lacrima. -Pinocchio, commosso anche lui, si avvicinò al Gatto, sussurrandogli negli orecchi: -– Se tutti i gatti ti somigliassero, fortunati i topi!... -– E ora che cosa fai in questi luoghi? – domandò la Volpe al burattino. -– Aspetto il mio babbo, che deve arrivare qui di momento in momento. -– E le tue monete d’oro? -– Le ho sempre in tasca, meno una che la spesi all’osteria del Gambero Rosso. -– E pensare che, invece di quattro monete, potrebbero diventare domani mille e duemila! Perché non dai retta al mio consiglio? Perché non vai a seminarle nel Campo dei miracoli? -– Oggi è impossibile: vi anderò un altro giorno. -– Un altro giorno sarà tardi, – disse la Volpe. -– Perché? -– Perché quel campo è stato comprato da un gran signore e da domani in là non sarà più permesso a nessuno di seminarvi i denari. -– Quant’è distante di qui il Campo dei miracoli? -– Due chilometri appena. Vuoi venire con noi? Fra mezz’ora sei là: semini subito le quattro monete: dopo pochi minuti ne raccogli duemila e stasera ritorni qui colle tasche piene. Vuoi venire con noi? -Pinocchio esitò un poco a rispondere, perché gli tornò in mente la buona Fata, il vecchio Geppetto e gli avvertimenti del Grillo-parlante; ma poi finì col fare come fanno tutti i ragazzi senza un fil di giudizio e senza cuore; finì, cioè, col dare una scrollatina di capo, e disse alla Volpe e al Gatto: -– Andiamo pure: io vengo con voi. -E partirono. -Dopo aver camminato una mezza giornata arrivarono a una città che aveva nome «Acchiappa-citrulli». Appena entrato in città, Pinocchio vide tutte le strade popolate di cani spelacchiati, che sbadigliavano dall’appetito, di pecore tosate che tremavano dal freddo, di galline rimaste senza cresta e senza bargigli, che chiedevano l’elemosina d’un chicco di granturco, di grosse farfalle, che non potevano più volare, perché avevano venduto le loro bellissime ali colorite, di pavoni tutti scodati, che si vergognavano a farsi vedere, e di fagiani che zampettavano cheti cheti, rimpiangendo le loro scintillanti penne d’oro e d’argento, oramai perdute per sempre. -In mezzo a questa folla di accattoni e di poveri vergognosi passavano di tanto in tanto alcune carrozze signorili con dentro o qualche volpe, o qualche gazza ladra o qualche uccellaccio di rapina. -– E il Campo dei miracoli dov’è? – domandò Pinocchio. -– È qui a due passi. -Detto fatto traversarono la città e, usciti fuori dalle mura, si fermarono in un campo solitario che, su per giù, somigliava a tutti gli altri campi. -– Eccoci giunti, – disse la Volpe al burattino. – Ora chinati giù a terra, scava con le mani una piccola buca nel campo e mettici dentro le monete d’oro. -Pinocchio ubbidì. Scavò la buca, ci pose le quattro monete d’oro che gli erano rimaste: e dopo ricoprì la buca con un po’ di terra. -– Ora poi, – disse la Volpe, – vai alla gora qui vicina, prendi una secchia d’acqua e annaffia il terreno dove hai seminato. -Pinocchio andò alla gora, e perché non aveva lì per lì una secchia, si levò di piedi una ciabatta e, riempitala d’acqua, annaffiò la terra che copriva la buca. Poi domandò: -– C’è altro da fare? -– Nient’altro, – rispose la Volpe. – Ora possiamo andar via. Tu poi ritorna qui fra una ventina di minuti e troverai l’arboscello già spuntato dal suolo e coi rami tutti carichi di monete. -Il povero burattino, fuori di sé dalla contentezza, ringraziò mille volte la Volpe e il Gatto, e promise loro un bellissimo regalo. -– Noi non vogliamo regali, – risposero quei due malanni. – A noi ci basta di averti insegnato il modo di arricchire senza durar fatica, e siamo contenti come pasque. -Ciò detto salutarono Pinocchio, e augurandogli una buona raccolta, se ne andarono per i fatti loro. - -XIX Pinocchio è derubato delle sue monete d’oro e, per gastigo, si busca quattro mesi di prigione. - -Il burattino, ritornato in città, cominciò a contare i minuti a uno a uno; e, quando gli parve che fosse l’ora, riprese subito la strada che menava al Campo dei miracoli. -E mentre camminava con passo frettoloso, il cuore gli batteva forte e gli faceva tic, tac, tic, tac, come un orologio da sala, quando corre davvero. E intanto pensava dentro di sé: -– E se invece di mille monete, ne trovassi su i rami dell’albero duemila?... E se invece di duemila, ne trovassi cinquemila?... E se invece di cinquemila ne trovassi centomila? Oh che bel signore, allora, che diventerei!... Vorrei avere un bel palazzo, mille cavallini di legno e mille scuderie, per potermi baloccare, una cantina di rosoli e di alchermes, e una libreria tutta piena di canditi, di torte, di panettoni, di mandorlati e di cialdoni colla panna. -Così fantasticando, giunse in vicinanza del campo, e lì si fermò a guardare se per caso avesse potuto scorgere qualche albero coi rami carichi di monete: ma non vide nulla. Fece altri cento passi in avanti, e nulla: entrò sul campo... andò proprio su quella piccola buca, dove aveva sotterrato i suoi zecchini, e nulla. Allora diventò pensieroso e, dimenticando le regole del Galateo e della buona creanza, tirò fuori una mano di tasca e si dette una lunghissima grattatina di capo. -In quel mentre sentì fischiare negli orecchi una gran risata: e voltatosi in su, vide sopra un albero un grosso pappagallo che si spollinava le poche penne che aveva addosso. -– Perché ridi? – gli domandò Pinocchio con voce di bizza. -– Rido, perché nello spollinarmi mi son fatto il solletico sotto le ali. -Il burattino non rispose. Andò alla gora e riempita d’acqua la solita ciabatta, si pose nuovamente ad annaffiare la terra che ricuopriva le monete d’oro. -Quand’ecco che un’altra risata, anche più impertinente della prima, si fece sentire nella solitudine silenziosa di quel campo. -– Insomma, – gridò Pinocchio, arrabbiandosi, – si può sapere, Pappagallo mal educato, di che cosa ridi? -– Rido di quei barbagianni, che credono a tutte le scioccherie e che si lasciano trappolare da chi è più furbo di loro. -– Parli forse di me? -– Sì, parlo di te, povero Pinocchio, di te che sei così dolce di sale, da credere che i denari si possano seminare e raccogliere nei campi, come si seminano i fagioli e le zucche. Anch’io l’ho creduto una volta, e oggi ne porto le pene. Oggi (ma troppo tardi!) mi son dovuto persuadere che per mettere insieme onestamente pochi soldi, bisogna saperseli guadagnare o col lavoro delle proprie mani o coll’ingegno della propria testa. -– Non ti capisco, – disse il burattino, che già cominciava a tremare dalla paura. -– Pazienza! Mi spiegherò meglio, – soggiunse il Pappagallo. – Sappi dunque che, mentre tu eri in città, la Volpe e il Gatto sono tornati in questo campo: hanno preso le monete d’oro sotterrate, e poi sono fuggiti come il vento. E ora chi li raggiunge, è bravo! -Pinocchio restò a bocca aperta, e non volendo credere alle parole del Pappagallo, cominciò colle mani e colle unghie a scavare il terreno che aveva annaffiato. E scava, scava, scava, fece una buca così profonda, che ci sarebbe entrato per ritto un pagliaio: ma le monete non ci erano più. -Allora, preso dalla disperazione, tornò di corsa in città e andò difilato in tribunale, per denunziare al giudice i due malandrini, che lo avevano derubato. -Il giudice era uno scimmione della razza dei Gorilla: un vecchio scimmione rispettabile per la sua grave età, per la sua barba bianca e specialmente per i suoi occhiali d’oro, senza vetri, che era costretto a portare continuamente, a motivo di una flussione d’occhi, che lo tormentava da parecchi anni. -Pinocchio, alla presenza del giudice, raccontò per filo e per segno l’iniqua frode, di cui era stato vittima; dette il nome, il cognome e i connotati dei malandrini, e finì col chiedere giustizia. -Il giudice lo ascoltò con molta benignità: prese vivissima parte al racconto: s’intenerì, si commosse: e quando il burattino non ebbe più nulla da dire, allungò la mano e suonò il campanello. -A quella scampanellata comparvero subito due can mastini vestiti da giandarmi. -Allora il giudice, accennando Pinocchio ai giandarmi, disse loro: -– Quel povero diavolo è stato derubato di quattro monete d’oro: pigliatelo dunque e mettetelo subito in prigione. -Il burattino, sentendosi dare questa sentenza fra capo e collo, rimase di princisbecco e voleva protestare: ma i giandarmi, a scanso di perditempi inutili, gli tapparono la bocca e lo condussero in gattabuia. -E lì v’ebbe a rimanere quattro mesi: quattro lunghissimi mesi: e vi sarebbe rimasto anche di più, se non si fosse dato un caso fortunatissimo. Perché bisogna sapere che il giovane Imperatore che regnava nella città di Acchiappa-citrulli, avendo riportato una gran vittoria contro i suoi nemici, ordinò grandi feste pubbliche, luminarie, fuochi artificiali, corse di barberi e velocipedi, e in segno di maggiore esultanza, volle che fossero aperte le carceri e mandati fuori tutti i malandrini. -– Se escono di prigione gli altri, voglio uscire anch’io, – disse Pinocchio al carceriere. -– Voi no, – rispose il carceriere, – perché voi non siete del bel numero... -– Domando scusa, – replicò Pinocchio, – sono un malandrino anch’io. -– In questo caso avete mille ragioni, – disse il carceriere; e levandosi il berretto rispettosamente e salutandolo, gli aprì le porte della prigione e lo lasciò scappare. - -XX Liberato dalla prigione, si avvia per tornare a casa della Fata; ma lungo la strada trova un serpente orribile, e poi rimane preso alla tagliuola. - -Figuratevi l’allegrezza di Pinocchio, quando si sentì libero. Senza stare a dire che è e che non è, uscì subito fuori della città e riprese la strada che doveva ricondurlo alla Casina della Fata. -A motivo del tempo piovigginoso, la strada era diventata tutta un pantano e ci si andava fino a mezza gamba. -Ma il burattino non se ne dava per inteso. -Tormentato dalla passione di rivedere il suo babbo e la sua sorellina dai capelli turchini, correva a salti come un cane levriero, e nel correre le pillacchere gli schizzavano fin sopra il berretto. Intanto andava dicendo fra sé e sé: -– Quante disgrazie mi sono accadute... E me le merito! perché io sono un burattino testardo e piccoso... e voglio far sempre tutte le cose a modo mio, senza dar retta a quelli che mi voglion bene e che hanno mille volte più giudizio di me!... Ma da questa volta in là, faccio proponimento di cambiar vita e di diventare un ragazzo ammodo e ubbidiente... Tanto ormai ho bell’e visto che i ragazzi, a essere disubbidienti, ci scapitano sempre e non ne infilano mai una per il su’ verso. E il mio babbo mi avrà aspettato?... Ce lo troverò a casa della Fata? è tanto tempo, pover’uomo, che non lo vedo più, che mi struggo di fargli mille carezze e di finirlo dai baci! E la Fata mi perdonerà la brutta azione che le ho fatto?... E pensare che ho ricevuto da lei tante attenzioni e tante cure amorose... e pensare che se oggi son sempre vivo, lo debbo a lei! Ma si può dare un ragazzo più ingrato e più senza cuore di me?... -Nel tempo che diceva così, si fermò tutt’a un tratto spaventato e fece quattro passi indietro. -Che cosa aveva veduto?... -Aveva veduto un grosso Serpente, disteso attraverso alla strada, che aveva la pelle verde, gli occhi di fuoco e la coda appuntuta, che gli fumava come una cappa di camino. -Impossibile immaginarsi la paura del burattino: il quale, allontanatosi più di mezzo chilometro, si mise a sedere sopra un monticello di sassi, aspettando che il Serpente se ne andasse una buona volta per i fatti suoi e lasciasse libero il passo della strada. -Aspettò un’ora; due ore; tre ore; ma il Serpente era sempre là, e, anche di lontano, si vedeva il rosseggiare de’ suoi occhi di fuoco e la colonna di fumo che gli usciva dalla punta della coda. -Allora Pinocchio, figurandosi di aver coraggio, si avvicinò a pochi passi di distanza, e facendo una vocina dolce, insinuante e sottile, disse al Serpente: -– Scusi, signor Serpente, che mi farebbe il piacere di tirarsi un pochino da una parte, tanto da lasciarmi passare? -Fu lo stesso che dire al muro. Nessuno si mosse. -Allora riprese colla solita vocina: -– Deve sapere, signor Serpente, che io vado a casa, dove c’è il mio babbo che mi aspetta e che è tanto tempo che non lo vedo più!... Si contenta dunque che io seguiti per la mia strada? -Aspettò un segno di risposta a quella dimanda: ma la risposta non venne: anzi il Serpente, che fin allora pareva arzillo e pieno di vita, diventò immobile e quasi irrigidito. Gli occhi gli si chiusero e la coda gli smesse di fumare. -– Che sia morto davvero?... – disse Pinocchio, dandosi una fregatina di mani dalla gran contentezza: e senza mettere tempo in mezzo, fece l’atto di scavalcarlo, per passare dall’altra parte della strada. Ma non aveva ancora finito di alzare la gamba, che il Serpente si rizzò all’improvviso, come una molla scattata: e il burattino, nel tirarsi indietro, spaventato, inciampò e cadde per terra. -E per l’appunto cadde così male, che restò col capo conficcato nel fango della strada e con le gambe ritte su in aria. -Alla vista di quel burattino, che sgambettava a capofitto con una velocità incredibile il Serpente fu preso da una tal convulsione di risa, che ridi, ridi, ridi, alla fine, dallo sforzo del troppo ridere, gli si strappò una vena sul petto: e quella volta morì davvero. -Allora Pinocchio ricominciò a correre per arrivare a casa della Fata prima che si facesse buio. Ma lungo la strada non potendo più reggere ai morsi terribili della fame, saltò in un campo coll’intenzione di cogliere poche ciocche d’uva moscadella. Non l’avesse mai fatto! -Appena giunto sotto la vite, crac... sentì stringersi le gambe da due ferri taglienti, che gli fecero vedere quante stelle c’erano in cielo. -Il povero burattino era rimasto preso da una tagliuola appostata là da alcuni contadini per beccarvi alcune grosse faine, che erano il flagello di tutti i pollai del vicinato. - -XXI Pinocchio è preso da un contadino, il quale lo costringe a far da can da guardia a un pollaio. - -Pinocchio, come potete figurarvelo, si dette a piangere, a strillare, a raccomandarsi: ma erano pianti e grida inutili, perché lì all’intorno non si vedevano case, e dalla strada non passava anima viva. -Intanto si fece notte. -Un po’ per lo spasimo della tagliuola, che gli segava gli stinchi, e un po’ per la paura di trovarsi solo e al buio in mezzo a quei campi, il burattino principiava quasi a svenirsi; quando a un tratto vedendosi passare una Lucciola di sul capo, la chiamò e le disse: -– O Lucciolina, mi faresti la carità di liberarmi da questo supplizio?... -– Povero figliuolo! – replicò la Lucciola, fermandosi impietosita a guardarlo. – Come mai sei rimasto colle gambe attanagliate fra codesti ferri arrotati? -– Sono entrato nel campo per cogliere due grappoli di quest’uva moscadella, e... -– Ma l’uva era tua? -– No... -– E allora chi t’ha insegnato a portar via la roba degli altri?... -– Avevo fame... -– La fame, ragazzo mio, non è una buona ragione per potere appropriarsi la roba che non è nostra... -– È vero, è vero! – gridò Pinocchio piangendo, – ma un’altra volta non lo farò più. -A questo punto il dialogo fu interrotto da un piccolissimo rumore di passi, che si avvicinavano. -Era il padrone del campo che veniva in punta di piedi a vedere se qualcuna di quelle faine, che mangiavano di nottetempo i polli, fosse rimasta al trabocchetto della tagliuola. -E la sua maraviglia fu grandissima quando, tirata fuori la lanterna di sotto il pastrano, s’accorse che, invece di una faina, c’era rimasto preso un ragazzo. -– Ah, ladracchiòlo! – disse il contadino incollerito, – dunque sei tu che mi porti via le galline? -– Io no, io no! – gridò Pinocchio, singhiozzando. – Io sono entrato nel campo per prendere soltanto due grappoli d’uva!... -– Chi ruba l’uva è capacissimo di rubare anche i polli. Lascia fare a me, che ti darò una lezione da ricordartene per un pezzo. -E aperta la tagliuola, afferrò il burattino per la collottola e lo portò di peso fino a casa, come si porterebbe un agnellino di latte. -Arrivato che fu sull’aia dinanzi alla casa, lo scaraventò in terra: e tenendogli un piede sul collo, gli disse: -– Oramai è tardi e voglio andare a letto. I nostri conti li aggiusteremo domani. Intanto, siccome oggi mi è morto il cane che mi faceva la guardia di notte, tu prenderai subito il suo posto. Tu mi farai da cane di guardia. -Detto fatto, gl’infilò al collo un grosso collare tutto coperto di spunzoni di ottone, e glielo strinse in modo da non poterselo levare passandoci la testa dentro. Al collare c’era attaccata una lunga catenella di ferro: e la catenella era fissata nel muro. -– Se questa notte, – disse il contadino, – cominciasse a piovere, tu puoi andare a cuccia in quel casotto di legno, dove c’è sempre la paglia che ha servito di letto per quattr’anni al mio povero cane. E se per disgrazia venissero i ladri, ricordati di stare a orecchi ritti e di abbaiare. -Dopo quest’ultimo avvertimento, il contadino entrò in casa chiudendo la porta con tanto di catenaccio: e il povero Pinocchio rimase accovacciato sull’aia, più morto che vivo, a motivo del freddo, della fame e della paura. E di tanto in tanto, cacciandosi rabbiosamente le mani dentro al collare, che gli serrava la gola, diceva piangendo: -– Mi sta bene!... Pur troppo mi sta bene! Ho voluto fare lo svogliato, il vagabondo... ho voluto dar retta ai cattivi compagni, e per questo la sfortuna mi perseguita sempre. Se fossi stato un ragazzino per bene, come ce n’è tanti, se avessi avuto voglia di studiare e di lavorare, se fossi rimasto in casa col mio povero babbo, a quest’ora non mi troverei qui, in mezzo ai campi, a fare il cane di guardia alla casa d’un contadino. Oh, se potessi rinascere un’altra volta!... Ma oramai è tardi, e ci vuol pazienza! -Fatto questo piccolo sfogo, che gli venne proprio dal cuore, entrò dentro il casotto e si addormentò. - -XXII Pinocchio scuopre i ladri e, in ricompensa di essere stato fedele, vien posto in libertà. - -Ed era già più di due ore che dormiva saporitamente; quando verso la mezzanotte fu svegliato da un bisbiglio e da un pissi-pissi di vocine strane, che gli parve di sentire nell’aia. Messa fuori la punta del naso dalla buca del casotto, vide riunite a consiglio quattro bestiuole di pelame scuro, che parevano gatti. Ma non erano gatti: erano faine, animaletti carnivori, ghiottissimi specialmente di uova e di pollastrine giovani. Una di queste faine, staccandosi dalle sue compagne, andò alla buca del casotto e disse sottovoce: -– Buona sera, Melampo. -– Io non mi chiamo Melampo, – rispose il burattino. -– O dunque chi sei? -– Io sono Pinocchio. -– E che cosa fai costì? -– Faccio il cane di guardia. -– O Melampo dov’è? dov’è il vecchio cane, che stava in questo casotto? -– È morto questa mattina. -– Morto? Povera bestia! Era tanto buono!... Ma giudicandoti alla fisonomia, anche te mi sembri un cane di garbo. -– Domando scusa, io non sono un cane!... -– O chi sei? -– Io sono un burattino. -– E fai da cane di guardia? -– Purtroppo: per mia punizione!... -– Ebbene, io ti propongo gli stessi patti, che avevo col defunto Melampo: e sarai contento. -– E questi patti sarebbero? -– Noi verremo una volta la settimana, come per il passato, a visitare di notte questo pollaio, e porteremo via otto galline. Di queste galline, sette le mangeremo noi, e una la daremo a te, a condizione, s’intende bene, che tu faccia finta di dormire e non ti venga mai l’estro di abbaiare e di svegliare il contadino. -– E Melampo faceva proprio così? – domandò Pinocchio. -– Faceva così, e fra noi e lui siamo andati sempre d’accordo. Dormi dunque tranquillamente, e stai sicuro che prima di partire di qui, ti lasceremo sul casotto una gallina bell’e pelata, per la colazione di domani. Ci siamo intesi bene? -– Anche troppo bene!... – rispose Pinocchio: e tentennò il capo in un certo modo minaccioso, come se avesse voluto dire: «Fra poco ci riparleremo!». -Quando le quattro faine si credettero sicure del fatto loro, andarono difilato al pollaio, che rimaneva appunto vicinissimo al casotto del cane, e aperta a furia di denti e di unghioli la porticina di legno, che ne chiudeva l’entratina, vi sgusciarono dentro, una dopo l’altra. Ma non erano ancora finite d’entrare, che sentirono la porticina richiudersi con grandissima violenza. -Quello che l’aveva richiusa era Pinocchio; il quale, non contento di averla richiusa, vi posò davanti per maggior sicurezza una grossa pietra, a guisa di puntello. -E poi cominciò ad abbaiare: e, abbaiando proprio come se fosse un cane di guardia, faceva colla voce bu-bu-bu-bu. -A quell’abbaiata, il contadino saltò dal letto e, preso il fucile e affacciatosi alla finestra, domandò: -– Che c’è di nuovo? -– Ci sono i ladri! – rispose Pinocchio. -– Dove sono? -– Nel pollaio. -– Ora scendo subito. -E infatti, in men che non si dice amen, il contadino scese: entrò di corsa nel pollaio e, dopo avere acchiappate e rinchiuse in un sacco le quattro faine, disse loro con accento di vera contentezza: -– Alla fine siete cascate nelle mie mani! Potrei punirvi, ma sì vil non sono! Mi contenterò, invece, di portarvi domani all’oste del vicino paese, il quale vi spellerà e vi cucinerà a uso lepre dolce e forte. È un onore che non vi meritate, ma gli uomini generosi come me non badano a queste piccolezze!... -Quindi, avvicinatosi a Pinocchio, cominciò a fargli molte carezze, e, fra le altre cose, gli domandò: -– Com’hai fatto a scuoprire il complotto di queste quattro ladroncelle? E dire che Melampo, il mio fido Melampo, non s’era mai accorto di nulla... -Il burattino, allora, avrebbe potuto raccontare quel che sapeva: avrebbe potuto, cioè, raccontare i patti vergognosi che passavano fra il cane e le faine: ma ricordatosi che il cane era morto, pensò subito dentro di sé: – A che serve accusare i morti?... I morti son morti, e la miglior cosa che si possa fare è quella di lasciarli in pace!... -– All’arrivo delle faine sull’aia, eri sveglio o dormivi? – continuò a chiedergli il contadino. -– Dormivo, – rispose Pinocchio, – ma le faine mi hanno svegliato coi loro chiacchiericci, e una è venuta fin qui al casotto per dirmi: «Se prometti di non abbaiare e di non svegliare il padrone, noi ti regaleremo una pollastra bell’e pelata!...». Capite, eh? Avere la sfacciataggine di fare a me una simile proposta! Perché bisogna sapere che io sono un burattino, che avrò tutti i difetti di questo mondo: ma non avrò mai quello di star di balla e di reggere il sacco alla gente disonesta! -– Bravo ragazzo! – gridò il contadino, battendogli sur una spalla. – Cotesti sentimenti ti fanno onore: e per provarti la mia grande soddisfazione, ti lascio libero fin d’ora di tornare a casa. -E gli levò il collare da cane. - -XXIII Pinocchio piange la morte della bella Bambina dai capelli turchini: poi trova un Colombo che lo porta sulla riva del mare, e lì si getta nell’acqua per andare in aiuto del suo babbo Geppetto. - -Appena Pinocchio non sentì più il peso durissimo e umiliante di quel collare intorno al collo, si pose a scappare attraverso i campi, e non si fermò un solo minuto, finché non ebbe raggiunta la strada maestra, che doveva ricondurlo alla Casina della Fata. -Arrivato sulla strada maestra, si voltò in giù a guardare nella sottoposta pianura, e vide benissimo a occhio nudo il bosco, dove disgraziatamente aveva incontrato la Volpe e il Gatto: vide, fra mezzo agli alberi, inalzarsi la cima di quella Quercia grande, alla quale era stato appeso ciondoloni per il collo: ma guarda di qua, guarda di là, non gli fu possibile di vedere la piccola casa della bella Bambina dai capelli turchini. -Allora ebbe una specie di tristo presentimento e datosi a correre con quanta forza gli rimaneva nelle gambe, si trovò in pochi minuti sul prato, dove sorgeva una volta la Casina bianca. Ma la Casina bianca non c’era più. C’era, invece, una piccola pietra di marmo sulla quale si leggevano in carattere stampatello queste dolorose parole: -QUI GIACE -LA BAMBINA DAI CAPELLI TURCHINI -MORTA DI DOLORE PER ESSERE STATA ABBANDONATA DAL SUO FRATELLINO PINOCCHIO -Come rimanesse il burattino, quand’ebbe compitate alla peggio quelle parole, lo lascio pensare a voi. Cadde bocconi a terra e coprendo di mille baci quel marmo mortuario, dette in un grande scoppio di pianto. Pianse tutta la notte, e la mattina dopo, sul far del giorno, piangeva sempre, sebbene negli occhi non avesse più lacrime: e le sue grida e i suoi lamenti erano così strazianti e acuti, che tutte le colline all’intorno ne ripetevano l’eco. -E piangendo diceva: -– O Fatina mia, perché sei morta?... perché, invece di te, non sono morto io, che sono tanto cattivo, mentre tu eri tanto buona?... E il mio babbo, dove sarà? O Fatina mia, dimmi dove posso trovarlo, che voglio stare sempre con lui, e non lasciarlo più! più! più!... O Fatina mia, dimmi che non è vero che sei morta!... Se davvero mi vuoi bene... se vuoi bene al tuo fratellino, rivivisci... ritorna viva come prima!... Non ti dispiace a vedermi solo e abbandonato da tutti? Se arrivano gli assassini. mi attaccheranno daccapo al ramo dell’albero... e allora morirò per sempre. Che vuoi che faccia qui, solo in questo mondo? Ora che ho perduto te e il mio babbo, chi mi darà da mangiare? Dove anderò a dormire la notte? Chi mi farà la giacchettina nuova? Oh! sarebbe meglio, cento volte meglio, che morissi anch’io! Sì, voglio morire!... ih! ih! ih!... -E mentre si disperava a questo modo, fece l’atto di volersi strappare i capelli: ma i suoi capelli, essendo di legno, non poté nemmeno levarsi il gusto di ficcarci dentro le dita. -Intanto passò su per aria un grosso Colombo, il quale soffermatosi, a ali distese, gli gridò da una grande altezza: -– Dimmi, bambino, che cosa fai costaggiù? -– Non lo vedi? piango! – disse Pinocchio alzando il capo verso quella voce e strofinandosi gli occhi colla manica della giacchetta. -– Dimmi, – soggiunse allora il Colombo – non conosci per caso fra i tuoi compagni, un burattino, che ha nome Pinocchio? -– Pinocchio?... Hai detto Pinocchio? – ripeté il burattino saltando subito in piedi. – Pinocchio sono io! -Il Colombo, a questa risposta, si calò velocemente e venne a posarsi a terra. Era più grosso di un tacchino. -– Conoscerai dunque anche Geppetto? – domandò al burattino. -– Se lo conosco? È il mio povero babbo! Ti ha forse parlato di me? Mi conduci da lui? Ma è sempre vivo? Rispondimi per carità: è sempre vivo? -– L’ho lasciato tre giorni fa sulla spiaggia del mare. -– Che cosa faceva? -– Si fabbricava da sé una piccola barchetta per traversare l’Oceano. Quel pover’uomo sono più di quattro mesi che gira per il mondo in cerca di te: e non avendoti potuto trovare, ora si è messo in capo di cercarti nei paesi lontani del nuovo mondo. -– Quanto c’è di qui alla spiaggia? – domandò Pinocchio con ansia affannosa. -– Più di mille chilometri. -– Mille chilometri? O Colombo mio, che bella cosa potessi avere le tue ali!... -– Se vuoi venire, ti ci porto io. -– Come? -– A cavallo sulla mia groppa. Sei peso di molto?... -– Peso? tutt’altro! Son leggiero come una foglia. -E lì, senza stare a dir altro, Pinocchio saltò sulla groppa al Colombo e messa una gamba di qua e l’altra di là, come fanno i cavallerizzi, gridò tutto contento: – Galoppa, galoppa, cavallino, ché mi preme di arrivar presto!... -Il Colombo prese l’aire e in pochi minuti arrivò col volo tanto in alto, che toccava quasi le nuvole. Giunto a quell’altezza straordinaria, il burattino ebbe la curiosità di voltarsi in giù a guardare: e fu preso da tanta paura e da tali giracapi che, per evitare il pericolo di venir disotto, si avviticchiò colle braccia, stretto stretto, al collo della sua piumata cavalcatura. -Volarono tutto il giorno. Sul far della sera, il Colombo disse: -– Ho una gran sete! -– E io una gran fame! – soggiunse Pinocchio. -– Fermiamoci a questa colombaia pochi minuti; e dopo ci rimetteremo in viaggio, per essere domattina all’alba sulla spiaggia del mare. -Entrarono in una colombaia deserta, dove c’era soltanto una catinella piena d’acqua e un cestino ricolmo di veccie. -Il burattino, in tempo di vita sua, non aveva mai potuto patire le veccie: a sentir lui, gli facevano nausea, gli rivoltavano lo stomaco: ma quella sera ne mangiò a strippapelle, e quando l’ebbe quasi finite, si voltò al Colombo e gli disse: -– Non avrei mai creduto che le veccie fossero così buone! -– Bisogna persuadersi, ragazzo mio, – replicò il Colombo, – che quando la fame dice davvero e non c’è altro da mangiare, anche le veccie diventano squisite! La fame non ha capricci né ghiottonerie! -Fatto alla svelta un piccolo spuntino, si riposero in viaggio, e via! La mattina dopo arrivarono sulla spiaggia del mare. -Il Colombo posò a terra Pinocchio, e non volendo nemmeno la seccatura di sentirsi ringraziare per aver fatto una buona azione, riprese subito il volo e sparì. -La spiaggia era piena di gente che urlava e gesticolava guardando il mare. -– Che cos’è accaduto? – domandò Pinocchio a una vecchina. -– Gli è accaduto che un povero babbo, avendo perduto il figliolo, gli è voluto entrare in una barchetta per andare a cercarlo di là dal mare; e il mare oggi è molto cattivo e la barchetta sta per andare sott’acqua... -– Dov’è la barchetta? -– Eccola laggiù, diritta al mio dito, – disse la vecchia, accennando una piccola barca che, veduta in quella distanza, pareva un guscio di noce con dentro un omino piccino piccino. -Pinocchio appuntò gli occhi da quella parte, e dopo aver guardato attentamente, cacciò un urlo acutissimo gridando: -– Gli è il mi’ babbo! gli è il mi’ babbo! -Intanto la barchetta, sbattuta dall’infuriare dell’onde, ora spariva fra i grossi cavalloni, ora tornava a galleggiare: e Pinocchio ritto sulla punta di un alto scoglio non finiva più dal chiamare il suo babbo per nome e dal fargli molti segnali colle mani e col moccichino da naso e perfino col berretto che aveva in capo. -E parve che Geppetto, sebbene fosse molto lontano dalla spiaggia, riconoscesse il figliuolo, perché si levò il berretto anche lui e lo salutò e, a furia di gesti, gli fece capire che sarebbe tornato volentieri indietro, ma il mare era tanto grosso, che gl’impediva di lavorare col remo e di potersi avvicinare alla terra. -Tutt’a un tratto, venne una terribile ondata, e la barca sparì. -Aspettarono che la barca tornasse a galla: ma la barca non si vide più tornare. -– Pover’omo! – dissero allora i pescatori, che erano raccolti sulla spiaggia: e brontolando sottovoce una preghiera si mossero per tornarsene alle loro case. -Quand’ecco che udirono un urlo disperato, e, voltandosi indietro, videro un ragazzetto che, di vetta a uno scoglio, si gettava in mare gridando: -– Voglio salvare il mio babbo! -Pinocchio, essendo tutto di legno, galleggiava facilmente e nuotava come un pesce. Ora si vedeva sparire sott’acqua, portato dall’impeto dei flutti, ora riappariva fuori con una gamba o con un braccio, a grandissima distanza dalla terra. Alla fine lo persero d’occhio e non lo videro più. -– Povero ragazzo! - dissero allora i pescatori, che erano raccolti sulla spiaggia: e brontolando sottovoce una preghiera tornarono alle loro case. - -XXIV Pinocchio arriva all’isola delle Api industriose e ritrova la Fata. - -Pinocchio, animato dalla speranza di arrivare in tempo a dare aiuto al suo povero babbo, nuotò tutta quanta la notte. -E che orribile nottata fu quella! Diluviò, grandinò, tuonò spaventosamente, e con certi lampi che pareva di giorno. -Sul far del mattino, gli riuscì di vedere poco distante una lunga striscia di terra. Era un’isola in mezzo al mare. -Allora fece di tutto per arrivare a quella spiaggia: ma inutilmente. Le onde, rincorrendosi e accavallandosi, se lo abballottavano fra di loro, come se fosse stato un fuscello o un filo di paglia. Alla fine, e per sua buona fortuna, venne un’ondata tanto prepotente e impetuosa, che lo scaraventò di peso sulla rena del lido. -Il colpo fu così forte che, battendo in terra, gli crocchiarono tutte le costole e tutte le congiunture: ma si consolò subito col dire: -– Anche per questa volta l’ho proprio scampata bella! -Intanto a poco a poco il cielo si rasserenò; il sole apparve fuori in tutto il suo splendore e il mare diventò tranquillissimo e buono come un olio. -Allora il burattino distese i suoi panni al sole per rasciugarli e si pose a guardare di qua e di là se per caso avesse potuto scorgere su quella immensa spianata d’acqua una piccola barchetta con un omino dentro. Ma dopo aver guardato ben bene, non vide altro dinanzi a sé che cielo, mare e qualche vela di bastimento, ma così lontana, che pareva una mosca. -– Sapessi almeno come si chiama quest’isola! – andava dicendo. – Sapessi almeno se quest’isola è abitata da gente di garbo, voglio dire da gente che non abbia il vizio di attaccare i ragazzi ai rami degli alberi; ma a chi mai posso domandarlo? A chi, se non c’è nessuno?... -Quest’idea di trovarsi solo, solo, solo in mezzo a quel gran paese disabitato, gli messe addosso tanta malinconia, che stava lì lì per piangere; quando tutt’a un tratto vide passare, a poca distanza dalla riva, un grosso pesce, che se ne andava tranquillamente per i fatti suoi, con tutta la testa fuori dell’acqua. -Non sapendo come chiamarlo per nome, il burattino gli gridò a voce alta, per farsi sentire: -– Ehi, signor pesce, che mi permetterebbe una parola? -– Anche due, – rispose il pesce, il quale era un Delfino così garbato, come se ne trovano pochi in tutti i mari del mondo. -– Mi farebbe il piacere di dirmi se in quest’isola vi sono dei paesi dove si possa mangiare, senza pericolo d’esser mangiati? -– Ve ne sono sicuro, – rispose il Delfino. – Anzi, ne troverai uno poco lontano di qui. -– E che strada si fa per andarvi? -– Devi prendere quella viottola là, a mancina, e camminare sempre diritto al naso. Non puoi sbagliare. -– Mi dica un’altra cosa. Lei che passeggia tutto il giorno e tutta la notte per il mare, non avrebbe incontrato per caso una piccola barchettina con dentro il mi’ babbo? -– E chi è il tuo babbo? -– Gli è il babbo più buono del mondo, come io sono il figliuolo più cattivo che si possa dare. -– Colla burrasca che ha fatto questa notte, – rispose il delfino, – la barchettina sarà andata sott’acqua. -– E il mio babbo? -– A quest’ora l’avrà inghiottito il terribile Pesce-cane, che da qualche giorno è venuto a spargere lo sterminio e la desolazione nelle nostre acque. -– Che è grosso di molto questo Pesce-cane? – domandò Pinocchio, che digià cominciava a tremare dalla paura. -– Se gli è grosso!... – replicò il Delfino. – Perché tu possa fartene un’idea, ti dirò che è più grosso di un casamento di cinque piani, ed ha una boccaccia così larga e profonda, che ci passerebbe comodamente tutto il treno della strada ferrata colla macchina accesa. -– Mamma mia! – gridò spaventato il burattino: e rivestitosi in fretta e furia, si voltò al delfino e gli disse: – Arrivedella, signor pesce: scusi tanto l’incomodo e mille grazie della sua garbatezza. -Detto ciò, prese subito la viottola e cominciò a camminare di un passo svelto; tanto svelto, che pareva quasi che corresse. E a ogni più piccolo rumore che sentiva, si voltava subito a guardare indietro, per la paura di vedersi inseguire da quel terribile pesce-cane grosso come una casa di cinque piani e con un treno della strada ferrata in bocca. -Dopo mezz’ora di strada, arrivò a un piccolo paese detto «Il paese delle Api industriose». Le strade formicolavano di persone che correvano di qua e di là per le loro faccende: tutti lavoravano, tutti avevano qualche cosa da fare. Non si trovava un ozioso o un vagabondo nemmeno a cercarlo col lumicino. -– Ho capito, – disse subito quello svogliato di Pinocchio, – questo paese non è fatto per me! Io non son nato per lavorare! -Intanto la fame lo tormentava, perché erano oramai passate ventiquattr’ore che non aveva mangiato più nulla; nemmeno una pietanza di veccie. -Che fare? -Non gli restavano che due modi per potersi sdigiunare: o chiedere un po’ di lavoro, o chiedere in elemosina un soldo o un boccone di pane. -A chiedere l’elemosina si vergognava: perché il suo babbo gli aveva predicato sempre che l’elemosina hanno il diritto di chiederla solamente i vecchi e gl’infermi. I veri poveri, in questo mondo, meritevoli di assistenza e di compassione, non sono altro che quelli che, per ragione d’età o di malattia, si trovano condannati a non potersi più guadagnare il pane col lavoro delle proprie mani. Tutti gli altri hanno l’obbligo di lavorare: e se non lavorano e patiscono la fame, tanto peggio per loro. -In quel frattempo, passò per la strada un uomo tutto sudato e trafelato, il quale da sé tirava con gran fatica due carretti carichi di carbone. -Pinocchio, giudicandolo dalla fisonomia per un buon uomo, gli si accostò e, abbassando gli occhi dalla vergogna, gli disse sottovoce: -– Mi fareste la carità di darmi un soldo, perché mi sento morir dalla fame? -– Non un soldo solo, – rispose il carbonaio, – ma te ne do quattro, a patto che tu m’aiuti a tirare fino a casa questi due carretti di carbone. -– Mi meraviglio! – rispose il burattino quasi offeso, – per vostra regola io non ho fatto mai il somaro: io non ho mai tirato il carretto!... -– Meglio per te! – rispose il carbonaio. – Allora, ragazzo mio, se ti senti davvero morir dalla fame, mangia due belle fette della tua superbia e bada di non prendere un’indigestione. -Dopo pochi minuti passò per la via un muratore, che portava sulle spalle un corbello di calcina. -– Fareste, galantuomo, la carità d’un soldo a un povero ragazzo, che sbadiglia dall’appetito? -– Volentieri; vieni con me a portar calcina, – rispose il muratore, – e invece d’un soldo, te ne darò cinque. -– Ma la calcina è pesa, – replicò Pinocchio, – e io non voglio durar fatica. -– Se non vuoi durar fatica, allora, ragazzo mio, – divertiti a sbadigliare, e buon pro ti faccia. -In men di mezz’ora passarono altre venti persone, e a tutte Pinocchio chiese un po’ d’elemosina, ma tutte gli risposero: -– Non ti vergogni? Invece di fare il bighellone per la strada, và piuttosto a cercarti un po’ di lavoro, e impara a guadagnarti il pane! -Finalmente passò una buona donnina che portava due brocche d’acqua. -– Vi contentate, buona donna, che io beva una sorsata d’acqua alla vostra brocca? – disse Pinocchio, che bruciava dall’arsione della sete. -– Bevi pure, ragazzo mio! – disse la donnina, posando le due brocche in terra. -Quando Pinocchio ebbe bevuto come una spugna, borbottò a mezza voce, asciugandosi la bocca: -– La sete me la sono levata! Così mi potessi levar la fame!... -La buona donnina, sentendo queste parole, soggiunse subito: -– Se mi aiuti a portare a casa una di queste brocche d’acqua, ti darò un bel pezzo di pane. -Pinocchio guardò la brocca, e non rispose né sì né no. -– E insieme col pane ti darò un bel piatto di cavolfiore condito coll’olio e coll’aceto, – soggiunse la buona donna. -Pinocchio dette un’altra occhiata alla brocca, e non rispose né sì né no. -– E dopo il cavolfiore ti darò un bel confetto ripieno di rosolio. -Alle seduzioni di quest’ultima ghiottoneria, Pinocchio non seppe più resistere e, fatto un animo risoluto, disse: -– Pazienza! Vi porterò la brocca fino a casa! -La brocca era molto pesa, e il burattino, non avendo forza da portarla colle mani, si rassegnò a portarla in capo. -Arrivati a casa, la buona donnina fece sedere Pinocchio a una piccola tavola apparecchiata e gli pose davanti il pane, il cavolfiore condito e il confetto. -Pinocchio non mangiò, ma diluviò. Il suo stomaco pareva un quartiere rimasto vuoto e disabitato da cinque mesi. -Calmati a poco a poco i morsi rabbiosi della fame, allora alzò il capo per ringraziare la sua benefattrice; ma non aveva ancora finito di fissarla in volto, che cacciò un lunghissimo ohhh!... di maraviglia e rimase là incantato, cogli occhi spalancati, colla forchetta per aria e colla bocca piena di pane e di cavolfiore. -– Che cos’è mai tutta questa maraviglia? – disse ridendo la buona donna. -– Egli è... – rispose balbettando Pinocchio, – egli è... egli è... che voi somigliate... voi mi rammentate... sì, sì, sì, la stessa voce... gli stessi occhi.. gli stessi capelli... sì, sì, sì... anche voi avete i capelli turchini... come lei!... O Fatina mia!... O Fatina mia!... ditemi che siete voi, proprio voi!... Non mi fate più piangere! Se sapeste!... Ho pianto tanto, ho patito tanto.. -E nel dir così, Pinocchio piangeva dirottamente, e gettandosi ginocchioni per terra, abbracciava i ginocchi di quella donnina misteriosa. - -XXV Pinocchio promette alla Fata di essere buono e di studiare, perché è stufo di fare il burattino e vuol diventare un bravo ragazzo. - -In sulle prime la buona donnina cominciò col dire che lei non era la piccola Fata dai capelli turchini: ma poi, vedendosi oramai scoperta e non volendo mandare più a lungo la commedia, fini col farsi riconoscere, e disse a Pinocchio: -– Birba d’un burattino! Come mai ti sei accorto che ero io? -– Gli è il gran bene che vi voglio quello che me l’ha detto. -– Ti ricordi? Mi lasciasti bambina e ora mi ritrovi donna; tanto donna, che potrei quasi farti da mamma. -– L’ho caro dimolto, perché così, invece di sorellina, vi chiamerò la mia mamma. Gli è tanto tempo che mi struggo di avere una mamma come tutti gli altri ragazzi!... Ma come avete fatto a crescere così presto? -– È un segreto. -– Insegnatemelo: vorrei crescere un poco anch’io. Non lo vedete? Sono sempre rimasto alto come un soldo di cacio. -– Ma tu non puoi crescere, – replicò la Fata. -– Perché? -– Perché i burattini non crescono mai. Nascono burattini, vivono burattini e muoiono burattini. -– Oh! sono stufo di far sempre il burattino! – gridò Pinocchio, dandosi uno scappellotto. – Sarebbe ora che diventassi anch’io un uomo come tutti gli altri. -– E lo diventerai, se saprai meritartelo... -– Davvero? E che posso fare per meritarmelo? -– Una cosa facilissima: avvezzarti a essere un ragazzino perbene. -– O che forse non sono? -– Tutt’altro! I ragazzi perbene sono ubbidienti, e tu invece... -– E io non ubbidisco mai. -– I ragazzi perbene prendono amore allo studio e al lavoro, e tu... -– E io, invece, faccio il bighellone e il vagabondo tutto l’anno. -– I ragazzi perbene dicono sempre la verità... -– E io sempre le bugie. -– I ragazzi perbene vanno volentieri alla scuola... -– E a me la scuola mi fa venire i dolori di corpo. Ma da oggi in poi voglio mutar vita. -– Me lo prometti? -– Lo prometto. Voglio diventare un ragazzino perbene e voglio essere la consolazione del mio babbo... Dove sarà il mio povero babbo a quest’ora? -– Non lo so. -– Avrò mai la fortuna di poterlo rivedere e abbracciare? -– Credo di sì: anzi ne sono sicura. -A questa risposta fu tale e tanta la contentezza di Pinocchio, che prese le mani alla Fata e cominciò a baciargliele con tanta foga, che pareva quasi fuori di sé. Poi, alzando il viso e guardandola amorosamente, le domandò: -– Dimmi, mammina: dunque non è vero che tu sia morta? -– Par di no, – rispose sorridendo la Fata. -– Se tu sapessi, che dolore e che serratura alla gola che provai, quando lessi qui giace... -– Lo so: ed è per questo che ti ho perdonato. La sincerità del tuo dolore mi fece conoscere che tu avevi il cuore buono: e dai ragazzi buoni di cuore, anche se sono un po’ monelli e avvezzati male, c’è sempre da sperar qualcosa: ossia, c’è sempre da sperare che rientrino sulla vera strada. Ecco perché son venuta a cercarti fin qui. Io sarò la tua mamma... -– Oh! che bella cosa! – gridò Pinocchio saltando dall’allegrezza. -– Tu mi ubbidirai e farai sempre quello che ti dirò io. -– Volentieri, volentieri, volentieri! -– Fino da domani, – soggiunse la Fata, – tu comincerai coll’andare a scuola. -Pinocchio diventò subito un po’ meno allegro. -– Poi sceglierai a tuo piacere un’arte o un mestiere... -Pinocchio diventò serio. -– Che cosa brontoli fra i denti? – domandò la Fata con accento risentito. -– Dicevo... – mugolò il burattino a mezza voce, – che oramai per andare a scuola mi pare un po’ tardi... -– Nossignore. Tieni a mente che per istruirsi e per imparare non è mai tardi. -– Ma io non voglio fare né arti né mestieri... -– Perché? -– Perché a lavorare mi par fatica. -– Ragazzo mio, – disse la Fata, – quelli che dicono così, finiscono quasi sempre o in carcere o all’ospedale. L’uomo, per tua regola, nasca ricco o povero, è obbligato in questo mondo a far qualcosa, a occuparsi, a lavorare. Guai a lasciarsi prendere dall’ozio! L’ozio è una bruttissima malattia, e bisogna guarirla subito, fin da ragazzi: se no, quando siamo grandi, non si guarisce più. -Queste parole toccarono l’animo di Pinocchio, il quale rialzando vivacemente la testa disse alla Fata: -– Io studierò, io lavorerò, io farò tutto quello che mi dirai, perché, insomma, la vita del burattino mi è venuta a noia, e voglio diventare un ragazzo a tutti i costi. Me l’hai promesso, non è vero? -– Te l’ho promesso, e ora dipende da te. - -XXVI Pinocchio va co’ suoi compagni di scuola in riva al mare, per vedere il terribile Pescecane. - -Il giorno dopo Pinocchio andò alla scuola comunale. -Figuratevi quelle birbe di ragazzi, quando videro entrare nella loro scuola un burattino! Fu una risata, che non finiva più. Chi gli faceva uno scherzo, chi un altro; chi gli levava il berretto di mano; chi gli tirava il giubbettino di dietro; chi si provava a fargli coll’inchiostro due grandi baffi sotto il naso; e chi si attentava perfino a legargli dei fili ai piedi e alle mani per farlo ballare. -Per un poco Pinocchio usò disinvoltura e tirò via; ma finalmente, sentendosi scappar la pazienza, si rivolse a quelli, che più lo tafanavano e si pigliavano gioco di lui, e disse loro a muso duro: -– Badate, ragazzi: io non son venuto qui per essere il vostro buffone. Io rispetto gli altri e voglio essere rispettato. -– Bravo berlicche! Hai parlato come un libro stampato! – urlarono quei monelli, buttandosi via dalle matte risate: e uno di loro, più impertinente degli altri allungò la mano coll’idea di prendere il burattino per la punta del naso. -Ma non fece a tempo: perché Pinocchio stese la gamba sotto la tavola e gli consegnò una pedata negli stinchi. -– Ohi! che piedi duri! – urlò il ragazzo stropicciandosi il livido che gli aveva fatto il burattino. -– E che gomiti!... anche più duri dei piedi! – disse un altro che, per i suoi scherzi sguaiati, s’era beccata una gomitata nello stomaco. -Fatto sta che dopo quel calcio e quella gomitata Pinocchio acquistò subito la stima e la simpatia di tutti i ragazzi di scuola: e tutti gli facevano mille carezze e tutti gli volevano un bene dell’anima. -E anche il maestro se ne lodava, perché lo vedeva attento, studioso, intelligente, sempre il primo a entrare nella scuola, sempre l’ultimo a rizzarsi in piedi, a scuola finita. -Il solo difetto che avesse era quello di bazzicare troppi compagni: e fra questi, c’erano molti monelli conosciutissimi per la loro poca voglia di studiare e di farsi onore. -Il maestro lo avvertiva tutti i giorni, e anche la buona Fata non mancava di dirgli e di ripetergli più volte: -– Bada, Pinocchio! Quei tuoi compagnacci di scuola finiranno prima o poi col farti perdere l’amore allo studio e, forse forse, col tirarti addosso qualche grossa disgrazia. -– Non c’è pericolo! – rispondeva il burattino, facendo una spallucciata e toccandosi coll’indice in mezzo alla fronte, come per dire: «C’è tanto giudizio qui dentro!». -Ora avvenne che un bel giorno, mentre camminava verso scuola, incontrò un branco dei soliti compagni, che andandogli incontro, gli dissero: -– Sai la gran notizia? -– No. -– Qui nel mare vicino è arrivato un Pesce-cane, grosso come una montagna. -– Davvero?... Che sia quel medesimo Pesce-cane di quando affogò il mio povero babbo? -– Noi andiamo alla spiaggia per vederlo. Vieni anche tu? -– Io, no: voglio andare a scuola. -– Che t’importa della scuola? Alla scuola ci anderemo domani. Con una lezione di più o con una di meno, si rimane sempre gli stessi somari. -– E il maestro che dirà? -– Il maestro si lascia dire. È pagato apposta per brontolare tutto il giorno. -– E la mia mamma?... -– Le mamme non sanno mai nulla, – risposero quei malanni. -– Sapete che cosa farò? – disse Pinocchio. – Il Pesce-cane voglio vederlo per certe mie ragioni... ma anderò a vederlo dopo la scuola. -– Povero giucco! – ribatté uno del branco. – Che credi che un pesce di quella grossezza voglia star lì a fare il comodo tuo? Appena s’è annoiato, piglia il dirizzone per un’altra parte, e allora chi s’è visto s’è visto. -– Quanto tempo ci vuole di qui alla spiaggia? – domandò il burattino. -– Fra un’ora, siamo bell’e andati e tornati. -– Dunque, via! e chi più corre, è più bravo! – gridò Pinocchio. -Dato così il segnale della partenza, quel branco di monelli, coi loro libri e i loro quaderni sotto il braccio, si messero a correre attraverso ai campi; e Pinocchio era sempre avanti a tutti: pareva che avesse le ali ai piedi. -Di tanto in tanto, voltandosi indietro, canzonava i suoi compagni rimasti a una bella distanza, e nel vederli, ansanti, trafelati, polverosi e con tanto di lingua fuori, se la rideva proprio di cuore. Lo sciagurato in quel momento non sapeva a quali paure e a quali orribili disgrazie andava incontro!... - -XXVII Gran combattimento fra Pinocchio e i suoi compagni: uno de’ quali essendo rimasto ferito, Pinocchio viene arrestato dai carabinieri. - -Giunto che fu sulla spiaggia, Pinocchio dette subito una grande occhiata sul mare; ma non vide nessun Pesce-cane. -Il mare era tutto liscio come un gran cristallo da specchio. -– O il Pesce-cane dov’è? – domandò, voltandosi ai compagni. -– Sarà andato a far colazione, – rispose uno di loro, ridendo. -– O si sarà buttato sul letto per far un sonnellino, – soggiunse un altro, ridendo più forte che mai. -Da quelle risposte sconclusionate e da quelle risatacce grulle, Pinocchio capì che i suoi compagni gli avevano fatto una brutta celia, dandogli ad intendere una cosa che non era vera; e pigliandosela a male, disse a loro con voce di bizza: -– E ora? Che sugo ci avete trovato a darmi ad intendere la storiella del Pesce-cane? -– Il sugo c’è sicuro!... – risposero in coro quei monelli. -– E sarebbe?... -– Quello di farti perdere la scuola e di farti venire con noi. Non ti vergogni a mostrarti tutti i giorni così preciso e così diligente alle lezioni? Non ti vergogni a studiar tanto, come fai? -– E se io studio, che cosa ve ne importa? -– A noi ce ne importa moltissimo perché ci costringi a fare una brutta figura col maestro... -– Perché? -– Perché gli scolari che studiano fanno sempre scomparire quelli, come noi, che non hanno voglia di studiare. E noi non vogliamo scomparire! Anche noi abbiamo il nostro amor proprio!... -– E allora che cosa devo fare per contentarvi? -– Devi prendere a noia, anche tu, la scuola, la lezione e il maestro, che sono i nostri tre grandi nemici. -– E se io volessi seguitare a studiare? -– Noi non ti guarderemo più in faccia, e alla prima occasione ce la pagherai!... -– In verità mi fate quasi ridere, – disse il burattino con una scrollatina di capo. -– Ehi, Pinocchio! – gridò allora il più grande di quei ragazzi, andandogli sul viso. – Non venir qui a fare lo smargiasso: non venir qui a far tanto il galletto!... Perché se tu non hai paura di noi, noi non abbiamo paura di te! Ricordati che tu sei solo e noi siamo in sette. -– Sette come i peccati mortali, – disse Pinocchio con una gran risata. -– Avete sentito? Ci ha insultati tutti! Ci ha chiamati col nome di peccati mortali!... -– Pinocchio! chiedici scusa dell’offesa... se no, guai a te!... -– Cucù! – fece il burattino, battendosi coll’indice sulla punta del naso, in segno di canzonatura. -– Pinocchio! la finisce male!... -– Cucù! -– Ne toccherai quanto un somaro!... -– Cucù! -– Ritornerai a casa col naso rotto!... -– Cucù! -– Ora il cucù te lo darò io! – gridò il più ardito di quei monelli. – Prendi intanto quest’acconto e serbalo per la cena di stasera. -E nel dir così gli appiccicò un pugno sul capo. -Ma fu, come si suol dire, botta e risposta; perché il burattino, come c’era da aspettarselo, rispose con un altro pugno: e lì, da un momento all’altro, il combattimento diventò generale e accanito. -Pinocchio, sebbene fosse solo, si difendeva come un eroe. Con quei suoi piedi di legno durissimo lavorava così bene, da tener sempre i suoi nemici a rispettosa distanza. Dove i suoi piedi potevano arrivare e toccare, ci lasciavano sempre un livido per ricordo. -Allora i ragazzi, indispettiti di non potersi misurare col burattino a corpo a corpo, pensarono bene di metter mano ai proiettili, e sciolti i fagotti de’ loro libri di scuola, cominciarono a scagliare contro di lui i Sillabari, le Grammatiche, i Giannettini, i Minuzzoli, i Racconti del Thouar, il Pulcino della Baccini e altri libri scolastici: ma il burattino, che era d’occhio svelto e ammalizzito, faceva sempre civetta a tempo, sicché i volumi, passandogli di sopra al capo, andavano tutti a cascare nel mare. -Figuratevi i pesci! I pesci, credendo che quei libri fossero roba da mangiare, correvano a frotte a fior d’acqua; ma dopo avere abboccata qualche pagina o qualche frontespizio, la risputavano subito facendo con la bocca una certa smorfia, che pareva volesse dire: «Non è roba per noi: noi siamo avvezzi a cibarci molto meglio!» -Intanto il combattimento s’inferociva sempre più, quand’ecco che un grosso Granchio, che era uscito fuori dell’acqua e s’era adagio adagio arrampicato fin sulla spiaggia, gridò con una vociaccia di trombone infreddato: -– Smettetela, birichini che non siete altro! Queste guerre manesche fra ragazzi e ragazzi raramente vanno a finir bene. Qualche disgrazia accade sempre!... -Povero Granchio! Fu lo stesso che avesse predicato al vento. Anzi quella birba di Pinocchio, voltandosi indietro a guardarlo in cagnesco, gli disse sgarbatamente: -– Chétati, Granchio dell’uggia!... Faresti meglio a succiare due pasticche di lichene per guarire da codesta infreddatura di gola. Vai piuttosto a letto e cerca di sudare! -In quel frattempo i ragazzi, che avevano finito oramai di tirare tutti i loro libri, occhiarono lì a poca distanza il fagotto dei libri del burattino, e se ne impadronirono in men che non si dice. -Fra questi libri, v’era un volume rilegato in cartoncino grosso, colla costola e colle punte di cartapecora. Era un Trattato di Aritmetica. Vi lascio immaginare se era peso dimolto! -Uno di quei monelli agguantò quel volume e, presa di mira la testa di Pinocchio, lo scagliò con quanta forza aveva nel braccio: ma invece di cogliere il burattino, colse nella testa uno dei compagni; il quale diventò bianco come un panno lavato, e non disse altro che queste parole: -– O mamma mia, aiutatemi... perché muoio! -Poi cadde disteso sulla rena del lido. -Alla vista di quel morticino, i ragazzi spaventati si dettero a scappare a gambe e in pochi minuti non si videro più. -Ma Pinocchio rimase lì, e sebbene per il dolore e per lo spavento, anche lui fosse più morto che vivo, nondimeno corse a inzuppare il suo fazzoletto nell’acqua del mare e si pose a bagnare la tempia del suo povero compagno di scuola. E intanto piangendo dirottamente e disperandosi, lo chiamava per nome e gli diceva: -– Eugenio!... povero Eugenio mio!... apri gli occhi, e guardami!... Perché non mi rispondi? Non sono stato io, sai, che ti ho fatto tanto male! Credilo, non sono stato io!... Apri gli occhi, Eugenio... Se tieni gli occhi chiusi, mi farai morire anche me... O Dio mio! come farò ora a tornare a casa?... Con che coraggio potrò presentarmi alla mia buona mamma? Che sarà di me?... Dove fuggirò?... Dove andrò a nascondermi?... Oh! quant’era meglio, mille volte meglio che fossi andato a scuola!... Perché ho dato retta a questi compagni, che sono la mia dannazione?... E il maestro me l’aveva detto!... e la mia mamma me lo aveva ripetuto: «Guàrdati dai cattivi compagni!». Ma io sono un testardo... un caparbiaccio... lascio dir tutti, e poi fo sempre a modo mio!... E dopo mi tocca a scontarle... E così, da che sono al mondo, non ho mai avuto un quarto d’ora di bene. Dio mio! Che sarà di me, che sarà di me, che sarà di me?... -E Pinocchio continuava a piangere, e berciare, a darsi pugni nel capo e a chiamar per nome il povero Eugenio: quando sentì a un tratto un rumore sordo di passi che si avvicinavano. -Si voltò: erano due carabinieri -– Che cosa fai così sdraiato per terra? – domandarono a Pinocchio. -– Assisto questo mio compagno di scuola. -– Che gli è venuto male? -– Par di sì!.. -– Altro che male! – disse uno dei carabinieri, chinandosi e osservando Eugenio da vicino. – Questo ragazzo è stato ferito in una tempia: chi è che l’ha ferito? -– Io no, – balbettò il burattino che non aveva più fiato in corpo. -– Se non sei stato tu, chi è stato dunque che l’ha ferito? -– Io no, – ripeté Pinocchio. -– E con che cosa è stato ferito? -– Con questo libro. – E il burattino raccattò di terra il Trattato di Aritmetica, rilegato in cartone e cartapecora, per mostrarlo al carabiniere. -– E questo libro di chi è? -– Mio. -– Basta così: non occorre altro. Rìzzati subito e vieni via con noi. -– Ma io... -– Via con noi! -– Ma io sono innocente... -– Via con noi! -Prima di partire, i carabinieri chiamarono alcuni pescatori, che in quel momento passavano per l’appunto colla loro barca vicino alla spiaggia, e dissero loro: -– Vi affidiamo questo ragazzetto ferito nel capo. Portatelo a casa vostra e assistetelo. Domani torneremo a vederlo. -Quindi si volsero a Pinocchio, e dopo averlo messo in mezzo a loro due, gl’intimarono con accento soldatesco: -– Avanti! e cammina spedito! se no, peggio per te! -Senza farselo ripetere, il burattino cominciò a camminare per quella viottola, che conduceva al paese. Ma il povero diavolo non sapeva più nemmeno lui in che mondo si fosse. Gli pareva di sognare, e che brutto sogno! Era fuori di sé. I suoi occhi vedevano tutto doppio: le gambe gli tremavano: la lingua gli era rimasta attaccata al palato e non poteva più spiccicare una sola parola. Eppure, in mezzo a quella specie di stupidità e di rintontimento, una spina acutissima gli bucava il cuore: il pensiero, cioè, di dover passare sotto le finestre di casa della sua buona Fata, in mezzo ai carabinieri. Avrebbe preferito piuttosto di morire. -Erano già arrivati e stavano per entrare in paese, quando una folata di vento strapazzone levò di testa a Pinocchio il berretto, portandoglielo lontano una decina di passi. -– Si contentano, – disse il burattino ai carabinieri, – che vada a riprendere il mio berretto? -– Vai pure: ma facciamo una cosa lesta. -Il burattino andò, raccattò il berretto... ma invece di metterselo in capo, se lo mise in bocca fra i denti, e poi cominciò a correre di gran carriera verso la spiaggia del mare. Andava via come una palla di fucile. -I carabinieri, giudicando che fosse difficile raggiungerlo, gli aizzarono dietro un grosso cane mastino, che aveva guadagnato il primo premio in tutte le corse dei cani. Pinocchio correva, e il cane correva più di lui: per cui tutta la gente si affacciava alle finestre e si affollava in mezzo alla strada, ansiosa di veder la fine di questo palio feroce. -Ma non poté levarsi questa voglia, perché il cane mastino e Pinocchio sollevarono lungo la strada un tal polverone, che dopo pochi minuti non fu più possibile di veder nulla. - -XXVIII Pinocchio corre pericolo di essere fritto in padella come un pesce. - -Durante quella corsa disperata, vi fu un momento terribile, un momento in cui Pinocchio si credé perduto: perché bisogna sapere che Alidoro (era questo il nome del can-mastino) a furia di correre e correre, l’aveva quasi raggiunto. -Basti dire che il burattino sentiva dietro di sé, alla distanza d’un palmo, l’ansare affannoso di quella bestiaccia e ne sentiva perfino la vampa calda delle fiatate. -Per buona fortuna la spiaggia era oramai vicina e il mare si vedeva lì a pochi passi. -Appena fu sulla spiaggia, il burattino spiccò un bellissimo salto, come avrebbe potuto fare un ranocchio, e andò a cascare in mezzo all’acqua. Alidoro invece voleva fermarsi; ma trasportato dall’impeto della corsa, entrò nell’acqua anche lui. E quel disgraziato non sapeva nuotare; per cui cominciò subito ad annaspare colle zampe per reggersi a galla: ma più annaspava e più andava col capo sott’acqua. -Quando torno a rimettere il capo fuori, il povero cane aveva gli occhi impauriti e stralunati, e, abbaiando, gridava. -– Affogo! Affogo! -– Crepa! – gli rispose Pinocchio da lontano, il quale si vedeva oramai sicuro da ogni pericolo. -– Aiutami, Pinocchio mio!... salvami dalla morte!... -A quelle grida strazianti, il burattino, che in fondo aveva un cuore eccellente, si mosse a compassione, e voltosi al cane gli disse: -– Ma se io ti aiuto a salvarti, mi prometti di non darmi più noia e di non corrermi dietro? -– Te lo prometto! Te lo prometto! Spicciati per carità, perché se indugi un altro mezzo minuto, son bell’e morto. -Pinocchio esitò un poco: ma poi ricordandosi che il suo babbo gli aveva detto tante volte che a fare una buona azione non ci si scapita mai, andò nuotando a raggiungere Alidoro, e, presolo per la coda con tutte e due le mani, lo portò sano e salvo sulla rena asciutta del lido. -Il povero cane non si reggeva più in piedi. Aveva bevuto, senza volerlo, tant’acqua salata, che era gonfiato come un pallone. Per altro il burattino, non volendo fare a fidarsi troppo, stimò cosa prudente di gettarsi novamente in mare; e, allontanandosi dalla spiaggia, gridò all’amico salvato: -– Addio, Alidoro, fai buon viaggio e tanti saluti a casa. -– Addio, Pinocchio, – rispose il cane; – mille grazie di avermi liberato dalla morte. Tu mi hai fatto un gran servizio: e in questo mondo quel che è fatto è reso. Se capita l’occasione, ci riparleremo. -Pinocchio seguitò a nuotare, tenendosi sempre vicino alla terra. Finalmente gli parve di esser giunto in un luogo sicuro; e dando un’ occhiata alla spiaggia, vide sugli scogli una specie di grotta, dalla quale usciva un lunghissimo pennacchio di fumo. -– In quella grotta, – disse allora fra sé, – ci deve essere del fuoco. Tanto meglio! Anderò a rasciugarmi e a riscaldarmi, e poi?... E poi sarà quel che sarà. -Presa questa risoluzione, si avvicinò alla scogliera; ma quando fu lì per arrampicarsi, sentì qualche cosa sotto l’acqua che saliva, saliva, saliva e lo portava per aria. Tentò subito di fuggire, ma oramai era tardi, perché con sua grandissima maraviglia si trovò rinchiuso dentro a una grossa rete in mezzo a un brulichio di pesci d’ogni forma e grandezza, che scodinzolando si dibattevano come tant’anime disperate. -E nel tempo stesso vide uscire dalla grotta un pescatore così brutto, ma tanto brutto, che pareva un mostro marino. Invece di capelli aveva sulla testa un cespuglio foltissimo di erba verde; verde era la pelle del suo corpo, verdi gli occhi, verde la barba lunghissima, che gli scendeva fin quaggiù. Pareva un grosso ramarro ritto su i piedi di dietro. -Quando il pescatore ebbe tirata fuori la rete dal mare, gridò tutto contento: -– Provvidenza benedetta! Anch’oggi potrò fare una bella scorpacciata di pesce! -– Manco male, che io non sono un pesce! – disse Pinocchio dentro di sé, ripigliando un po’ di coraggio. -La rete piena di pesci fu portata dentro la grotta, una grotta buia e affumicata, in mezzo alla quale friggeva una gran padella d’olio, che mandava un odorino di moccolaia da mozzare il respiro. -– Ora vediamo un po’ che pesci abbiamo presi! – disse il pescatore verde; e ficcando nella rete una manona così spropositata, che pareva una pala da fornai, tirò fuori una manciata di triglie. -– Buone queste triglie! – disse, guardandole e annusandole con compiacenza. E dopo averle annusate, le scaraventò in una conca senz’acqua. -Poi ripeté più volte la solita operazione; e via via che cavava fuori gli altri pesci, sentiva venirsi l’acquolina in bocca e gongolando diceva: -– Buoni questi naselli!... -– Squisiti questi muggini!... -– Deliziose queste sogliole!... -– Prelibati questi ragnotti!... -– Carine queste acciughe col capo!... -Come potete immaginarvelo, i naselli, i muggini, le sogliole, i ragnotti e le acciughe, andarono tutti alla rinfusa nella conca, a tener compagnia alle triglie. -L’ultimo che restò nella rete fu Pinocchio. -Appena il pescatore l’ebbe cavato fuori, sgranò dalla maraviglia i suoi occhioni verdi, gridando quasi impaurito: -– Che razza di pesce è questo? Dei pesci fatti a questo modo non mi ricordo di averne mai mangiati! -E tornò a guardarlo attentamente, e dopo averlo guardato ben bene per ogni verso, finì col dire: -– Ho già capito: dev’essere un granchio di mare. -Allora Pinocchio mortificato di sentirsi scambiare per un granchio, disse con accento risentito: -– Ma che granchio e non granchio? Guardi come lei mi tratta! Io per sua regola sono un burattino. -– Un burattino? – replicò il pescatore. – Dico la verità, il pesce burattino è per me un pesce nuovo! Meglio così! Ti mangerò più volentieri. -– Mangiarmi? Ma la vuol capire che io non sono un pesce? O non sente che parlo, e ragiono come lei? -– È verissimo, – soggiunse il pescatore, – e siccome vedo che sei un pesce, che hai la fortuna di parlare e di ragionare, come me, così voglio usarti anch’io i dovuti riguardi. -– E questi riguardi sarebbero?... -– In segno di amicizia e di stima particolare, lascerò a te la scelta del come vuoi essere cucinato. Desideri essere fritto in padella, oppure preferisci di essere cotto nel tegame colla salsa di pomidoro? -– A dir la verità, – rispose Pinocchio, – se io debbo scegliere, preferisco piuttosto di essere lasciato libero, per potermene tornare a casa mia. -– Tu scherzi? Ti pare che io voglia perdere l’occasione di assaggiare un pesce così raro? Non capita mica tutti i giorni un pesce burattino in questi mari. Lascia fare a me: ti friggerò in padella assieme a tutti gli altri pesci, e te ne troverai contento. L’esser fritto in compagnia è sempre una consolazione. -L’infelice Pinocchio, a quest’antifona, cominciò a piangere, a strillare, a raccomandarsi e piangendo diceva: – Quant’era meglio, che fossi andato a scuola!... Ho voluto dar retta ai compagni, e ora la pago! Ih!... Ih!... Ih!... -E perché si divincolava come un anguilla e faceva sforzi incredibili, per isgusciare dalle grinfie del pescatore verde, questi prese una bella buccia di giunco, e dopo averlo legato per le mani e per i piedi, come un salame, lo gettò in fondo alla conca cogli altri. -Poi, tirato fuori un vassoiaccio di legno, pieno di farina, si dette a infarinare tutti quei pesci; e man mano che li aveva infarinati, li buttava a friggere dentro la padella. -I primi a ballare nell’olio bollente furono i poveri naselli: poi toccò ai ragnotti, poi ai muggini, poi alle sogliole e alle acciughe, e poi venne la volta di Pinocchio. Il quale a vedersi così vicino alla morte (e che brutta morte!) fu preso da tanto tremito e da tanto spavento, che non aveva più né voce né fiato per raccomandarsi. -Il povero figliuolo si raccomandava cogli occhi! Ma il pescatore verde, senza badarlo neppure, lo avvoltolò cinque o sei volte nella farina, infarinandolo così bene dal capo ai piedi, che pareva diventato un burattino di gesso. -Poi lo prese per il capo, e... - -XXIX Ritorna a casa della Fata, la quale gli promette che il giorno dopo non sarà più un burattino, ma diventerà un ragazzo. Gran colazione di caffè-e-latte per festeggiare questo grande avvenimento. - -Mentre il pescatore era proprio sul punto di buttar Pinocchio nella padella, entrò nella grotta un grosso cane condotto là dall’odore acutissimo e ghiotto della frittura. -– Passa via! – gli gridò il pescatore minacciandolo e tenendo sempre in mano il burattino infarinato. -Ma il povero cane aveva una fame per quattro, e mugolando e dimenando la coda, pareva che dicesse: «Dammi un boccon di frittura e ti lascio in pace». -– Passa via, ti dico! – gli ripeté il pescatore; e allungò la gamba per tirargli una pedata. -Allora il cane che, quando aveva fame davvero, non era avvezzo a lasciarsi posar mosche sul naso, si rivoltò ringhioso al pescatore, mostrandogli le sue terribili zanne. -In quel mentre si udì nella grotta una vocina fioca fioca, che disse: -– Salvami, Alidoro!... Se non mi salvi, son fritto! -Il cane riconobbe subito la voce di Pinocchio e si accorse con sua grandissima maraviglia che la vocina era uscita da quel fagotto infarinato che il pescatore teneva in mano. -Allora che cosa fa? Spicca un gran lancio da terra, abbocca quel fagotto infarinato e tenendolo leggermente coi denti, esce correndo dalla grotta, e via come un baleno! -Il pescatore, arrabbiatissimo di vedersi strappar di mano un pesce, che egli avrebbe mangiato tanto volentieri, si provò a rincorrere il cane; ma fatti pochi passi, gli venne un nodo di tosse e dové tornarsene indietro. -Intanto Alidoro, ritrovata che ebbe la viottola che conduceva al paese, si fermò e posò delicatamente in terra l’amico Pinocchio. -– Quanto ti debbo ringraziare! – disse il burattino. -– Non c’è bisogno, – replicò il cane. – Tu salvasti me, e quel che è fatto, è reso. Si sa: in questo mondo bisogna tutti aiutarsi l’uno coll’altro. -– Ma come mai sei capitato in quella grotta? -– Ero sempre qui disteso sulla spiaggia più morto che vivo, quando il vento mi ha portato da lontano un odorino di frittura. Quell’odorino mi ha stuzzicato l’appetito, e io gli sono andato dietro. Se arrivavo un minuto più tardi!... -– Non me lo dire! – urlò Pinocchio che tremava ancora dalla paura. – Non me lo dire! Se tu arrivavi un minuto più tardi, a quest’ora io ero bell’e fritto, mangiato e digerito. Brrr!... mi vengono i brividi soltanto a pensarvi!... -Alidoro, ridendo, stese la zampa destra verso il burattino, il quale gliela strinse forte forte in segno di grande amicizia: e dopo si lasciarono. -Il cane riprese la strada di casa: e Pinocchio, rimasto solo, andò a una capanna lì poco distante, e domandò a un vecchietto che stava sulla porta a scaldarsi al sole: -– Dite, galantuomo, sapete nulla di un povero ragazzo ferito nel capo e che si chiamava Eugenio?... -– Il ragazzo è stato portato da alcuni pescatori in questa capanna, e ora... -Ora sarà morto!... – interruppe Pinocchio con gran dolore. -– No: ora è vivo, ed è già ritornato a casa sua. -– Davvero, davvero? – gridò il burattino, saltando dall’allegrezza. – Dunque la ferita non era grave? -– Ma poteva riuscire gravissima e anche mortale, – rispose il vecchietto, – perché gli tirarono sul capo un grosso libro rilegato in cartone. -– E chi glielo tirò? -– Un suo compagno di scuola: un certo Pinocchio... -– E chi è questo Pinocchio? – domandò il burattino facendo lo gnorri. -– Dicono che sia un ragazzaccio, un vagabondo, un vero rompicollo... -– Calunnie! Tutte calunnie! -– Lo conosci tu questo Pinocchio? -– Di vista! – rispose il burattino. -– E tu che concetto ne hai? – gli chiese il vecchietto. -– A me mi pare un gran buon figliuolo, pieno di voglia di studiare, ubbidiente, affezionato al suo babbo e alla sua famiglia... -Mentre il burattino sfilava a faccia fresca tutte queste bugie, si toccò il naso e si accorse che il naso gli s’era allungato più d’un palmo. Allora tutto impaurito cominciò a gridare: -– Non date retta, galantuomo, a tutto il bene che ve ne ho detto: perché conosco benissimo Pinocchio e posso assicurarvi anch’io che è davvero un ragazzaccio, un disubbidiente e uno svogliato, che invece di andare a scuola, va coi compagni a fare lo sbarazzino! -Appena ebbe pronunziate queste parole, il suo naso raccorcì e tornò della grandezza naturale, come era prima. -– E perché sei tutto bianco a codesto modo? – gli domandò a un tratto il vecchietto. -– Vi dirò... senza avvedermene, mi sono strofinato a un muro, che era imbiancato di fresco, – rispose il burattino, vergognandosi a confessare che lo avevano infarinato come un pesce, per poi friggerlo in padella. -– O della tua giacchetta, de’ tuoi calzoncini e del tuo berretto che cosa ne hai fatto? -– Ho incontrato i ladri e mi hanno spogliato. Dite, buon vecchio, non avreste per caso da darmi un po’ di vestituccio, tanto perché io possa ritornare a casa? -– Ragazzo mio, in fatto di vestiti, io non ho che un piccolo sacchetto, dove ci tengo i lupini. Se vuoi, piglialo: eccolo là. -E Pinocchio non se lo fece dire due volte: prese subito il sacchetto dei lupini che era vuoto, e dopo averci fatto colle forbici una piccola buca nel fondo e due buche dalle parti, se lo infilò a uso camicia. E vestito leggerino a quel modo, si avviò verso il paese. -Ma, lungo la strada, non si sentiva punto tranquillo; tant’è vero che faceva un passo avanti e uno indietro e, discorrendo da se solo, andava dicendo: -– Come farò a presentarmi alla mia buona Fatina? Che dirà quando mi vedrà?... Vorrà perdonarmi questa seconda birichinata?... Scommetto che non me la perdona!... Oh! Non me la perdona di certo... E mi sta il dovere: perché io sono un monello che prometto sempre di correggermi, e non mantengo mai!... -Arrivò al paese che era già notte buia, e perché faceva tempaccio e l’acqua veniva giù a catinelle, andò diritto diritto alla casa della Fata coll’animo risoluto di bussare alla porta e di farsi aprire. -Ma, quando fu lì, sentì mancarsi il coraggio, e invece di bussare si allontanò, correndo, una ventina di passi. Si avvicinò una seconda volta alla porta, e non concluse nulla: si avvicinò una terza volta, e nulla: la quarta volta prese, tremando, il battente di ferro in mano, e bussò un piccolo colpettino. -Aspetta, aspetta, finalmente dopo mezz’ora si aprì una finestra dell’ultimo piano (la casa era di quattro piani) e Pinocchio vide affacciarsi una grossa Lumaca, che aveva un lumicino acceso sul capo, la quale disse: -– Chi è a quest’ora? -– La Fata è in casa? – domandò il burattino. -– La Fata dorme e non vuol essere svegliata: ma tu chi sei? -– Sono io! -– Chi io? -– Pinocchio. -– Chi Pinocchio? -– Il burattino, quello che sta in casa colla Fata. -– Ah! ho capito, – disse la Lumaca. – Aspettami costì, che ora scendo giù e ti apro subito. -– Spicciatevi, per carità, perché io muoio dal freddo. -– Ragazzo mio, io sono una lumaca, e le lumache non hanno mai fretta. -Intanto passò un’ora, ne passarono due, e la porta non si apriva: per cui Pinocchio, che tremava dal freddo, dalla paura e dall’acqua che aveva addosso, si fece cuore e bussò una seconda volta, e bussò più forte. A quel secondo colpo si aprì una finestra del piano di sotto e si affacciò la solita Lumaca. -– Lumachina bella, – gridò Pinocchio dalla strada, – sono due ore che aspetto! E due ore, a questa serataccia, diventano più lunghe di due anni. Spicciatevi, per carità. -– Ragazzo mio – gli rispose dalla finestra quella bestiola tutta pace e tutta flemma, – ragazzo mio, io sono una lumaca, e le lumache non hanno mai fretta. -E la finestra si richiuse. -Di lì a poco suonò la mezzanotte: poi il tocco, poi le due dopo mezzanotte, e la porta era sempre chiusa. -Allora Pinocchio, perduta la pazienza, afferrò con rabbia il battente della porta per bussare un gran colpo da far rintronare tutto il casamento: ma il battente che era di ferro, diventò a un tratto un’anguilla viva, che sgusciandogli dalle mani sparì nel rigagnolo d’acqua in mezzo alla strada. -– Ah, sì? – gridò Pinocchio sempre più accecato dalla collera. – Se il battente è sparito, io seguiterò a bussare a furia di calci. -E tiratosi un poco indietro, lasciò andare una solennissima pedata nell’uscio della casa. Il colpo fu così forte, che il piede penetrò nel legno fino a mezzo: e quando il burattino si provò a ricavarlo fuori, fu tutta fatica inutile: perché il piede c’era rimasto conficcato dentro, come un chiodo ribadito. -Figuratevi il povero Pinocchio! Dové passare tutto il resto della notte con un piede in terra e con quell’altro per aria. -La mattina, sul far del giorno, finalmente la porta si aprì. -Quella brava bestiola della Lumaca, a scendere dal quarto piano fino all’uscio di strada, ci aveva messo solamente nove ore. Bisogna proprio dire che avesse fatto una sudata! -– Che cosa fate con codesto piede conficcato nell’uscio? – domandò ridendo al burattino. -– È stata una disgrazia. Vedete un po’, Lumachina bella, se vi riesce di liberarmi da questo supplizio. -– Ragazzo mio, così ci vuole un legnaiolo, e io non ho mai fatto la legnaiola. -– Pregate la Fata da parte mia!... -– La Fata dorme e non vuol essere svegliata. -– Ma che cosa volete che io faccia inchiodato tutto il giorno a questa porta? -– Divèrtiti a contare le formicole che passano per la strada. -– Portatemi almeno qualche cosa da mangiare, perché mi sento rifinito. -– Subito! – disse la Lumaca. -Difatti dopo tre ore e mezzo Pinocchio la vide tornare con un vassoio d’argento in capo. Nel vassoio c’era un pane, un pollastro arrosto e quattro albicocche mature. -– Ecco la colazione che vi manda la Fata, – disse la Lumaca. -Alla vista di quella grazia di Dio, il burattino sentì consolarsi tutto. -Ma quale fu il suo disinganno, quando incominciando a mangiare, si dové accorgere che il pane era di gesso, il pollastro di cartone e le quattro albicocche di alabastro, colorite al naturale. -Voleva piangere, voleva darsi alla disperazione, voleva buttar via il vassoio e quel che c’era dentro: ma invece, o fosse il gran dolore o la gran languidezza di stomaco, fatto sta che cadde svenuto. -Quando si riebbe, si trovò disteso sopra un sofà, e la Fata era accanto a lui. -– Anche per questa volta ti perdono, – gli disse la Fata, – ma guai a te se me ne fai un’altra delle tue!... -Pinocchio promise e giurò che avrebbe studiato, e che si sarebbe condotto sempre bene. E mantenne la parola per tutto il resto dell’anno. Difatti, agli esami delle vacanze, ebbe l’onore di essere il più bravo della scuola; e i suoi portamenti, in generale, furono giudicati così lodevoli e soddisfacenti, che la Fata, tutta contenta, gli disse: -– Domani finalmente il tuo desiderio sarà appagato! -– Cioè? -– Domani finirai di essere un burattino di legno, e diventerai un ragazzo perbene. -Chi non ha veduto la gioia di Pinocchio, a questa notizia tanto sospirata, non potrà mai figurarsela. Tutti i suoi amici e compagni di scuola dovevano essere invitati per il giorno dopo a una gran colazione in casa della Fata, per festeggiare insieme il grande avvenimento: e la Fata aveva fatto preparare dugento tazze di caffè-e-latte e quattrocento panini imburrati di sotto e di sopra. Quella giornata prometteva d’essere molto bella e molto allegra, ma... -Disgraziatamente, nella vita dei burattini c’è sempre un ma, che sciupa ogni cosa. - -XXX Pinocchio, invece di diventare un ragazzo, parte di nascosto col suo amico Lucignolo per il Paese dei Balocchi. - -Com’è naturale, Pinocchio chiese subito alla Fata il permesso di andare in giro per la città a fare gli inviti: e la Fata gli disse: -– Vai pure a invitare i tuoi compagni per la colazione di domani: ma ricordati di tornare a casa prima che faccia notte. Hai capito? -– Fra un’ora prometto di essere bell’e ritornato, – replicò il burattino. -– Bada, Pinocchio! I ragazzi fanno presto a promettere: ma il più delle volte, fanno tardi a mantenere. -– Ma io non sono come gli altri: io, quando dico una cosa, la mantengo. -– Vedremo. Caso poi tu disubbidissi, tanto peggio per te. -– Perché? -– Perché i ragazzi che non danno retta ai consigli di chi ne sa più di loro, vanno sempre incontro a qualche disgrazia. -– E io l’ho provato! – disse Pinocchio. – Ma ora non ci ricasco più! -– Vedremo se dici il vero. -Senza aggiungere altre parole, il burattino salutò la sua buona Fata, che era per lui una specie di mamma, e cantando e ballando uscì fuori della porta di casa. -In poco più d’un’ora, tutti i suoi amici furono invitati. Alcuni accettarono subito e di gran cuore: altri da principio si fecero un po’ pregare; ma quando seppero che i panini da inzuppare nel caffè-e-latte sarebbero stati imburrati anche dalla parte di fuori, finirono tutti col dire: «Verremo anche noi, per farti piacere». -Ora bisogna sapere che Pinocchio, fra i suoi amici e compagni di scuola, ne aveva uno prediletto e carissimo, il quale si chiamava di nome Romeo: ma tutti lo chiamavano col soprannome di Lucignolo, per via del suo personalino asciutto, secco e allampanato, tale e quale come il lucignolo nuovo di un lumino da notte. -Lucignolo era il ragazzo più svogliato e più birichino di tutta la scuola: ma Pinocchio gli voleva un gran bene. Difatti andò subito a cercarlo a casa, per invitarlo alla colazione, e non lo trovò: tornò una seconda volta, e Lucignolo non c’era: tornò una terza volta, e fece la strada invano. -Dove poterlo ripescare? Cerca di qua, cerca di là, finalmente lo vide nascosto sotto il portico di una casa di contadini. -– Che cosa fai costì? – gli domandò Pinocchio, avvicinandosi. -– Aspetto la mezzanotte, per partire... -– Dove vai? -– Lontano, lontano, lontano! -– E io che son venuto a cercarti a casa tre volte!... -– Che cosa volevi da me? -– Non sai il grande avvenimento? Non sai la fortuna che mi è toccata? -– Quale? -– Domani finisco di essere un burattino e divento un ragazzo come te, e come tutti gli altri. -– Buon pro ti faccia. -– Domani, dunque, ti aspetto a colazione a casa mia. -– Ma se ti dico che parto questa sera. -– A che ora? -– Fra poco. -– E dove vai? -– Vado ad abitare in un paese... che è il più bel paese di questo mondo: una vera cuccagna!... -– E come si chiama? -– Si chiama il Paese dei Balocchi. Perché non vieni anche tu? -– Io? no davvero! -– Hai torto, Pinocchio! Credilo a me che, se non vieni, te ne pentirai. Dove vuoi trovare un paese più salubre per noialtri ragazzi? Lì non vi sono scuole: lì non vi sono maestri: lì non vi sono libri. In quel paese benedetto non si studia mai. Il giovedì non si fa scuola: e ogni settimana è composta di sei giovedì e di una domenica. Figùrati che le vacanze dell’autunno cominciano col primo di gennaio e finiscono coll’ultimo di dicembre. Ecco un paese, come piace veramente a me! Ecco come dovrebbero essere tutti i paesi civili!... -– Ma come si passano le giornate nel Paese dei Balocchi? -– Si passano baloccandosi e divertendosi dalla mattina alla sera. La sera poi si va a letto, e la mattina dopo si ricomincia daccapo. Che te ne pare? -– Uhm!... – fece Pinocchio: e tentennò leggermente il capo, come dire: «È una vita che farei volentieri anch’io!». -– Dunque, vuoi partire con me? Sì o no? Risolviti. -– No, no, no e poi no. Oramai ho promesso alla mia buona Fata di diventare un ragazzo perbene, e voglio mantenere la promessa. Anzi, siccome vedo che il sole va sotto, così ti lascio subito e scappo via. Dunque addio e buon viaggio. -– Dove corri con tanta furia? -– A casa. La mia buona Fata vuole che ritorni prima di notte. -– Aspetta altri due minuti. -– Faccio troppo tardi. -– Due minuti soli. -– E se poi la Fata mi grida? -– Lasciala gridare. Quando avrà gridato ben bene, si cheterà, – disse quella birba di Lucignolo. -– E come fai? Parti solo o in compagnia? -– Solo? Saremo più di cento ragazzi. -– E il viaggio lo fate a piedi? -– A mezzanotte passerà di qui il carro che ci deve prendere e condurre fin dentro ai confini di quel fortunatissimo paese. -– Che cosa pagherei che ora fosse mezzanotte!... -– Perché? -– Per vedervi partire tutti insieme. -– Rimani qui un altro poco e ci vedrai. -– No, no: voglio ritornare a casa. -– Aspetta altri due minuti. -– Ho indugiato anche troppo. La Fata starà in pensiero per me. -– Povera Fata! Che ha paura forse che ti mangino i pipistrelli? -– Ma dunque, – soggiunse Pinocchio, – tu sei veramente sicuro che in quel paese non ci sono punte scuole?... -– Neanche l’ombra. -– E nemmeno maestri?... -– Nemmen’uno. -– E non c’è mai l’obbligo di studiare? -– Mai, mai, mai! -– Che bel paese! – disse Pinocchio, sentendo venirsi l’acquolina in bocca. – Che bel paese! Io non ci sono stato mai, ma me lo figuro!... -– Perché non vieni anche tu? -– È inutile che tu mi tenti! Oramai ho promesso alla mia buona Fata di diventare un ragazzo di giudizio, e non voglio mancare alla parola. -– Dunque addio, e salutami tanto le scuole ginnasiali!... E anche quelle liceali, se le incontri per la strada. -– Addio, Lucignolo: fai buon viaggio, divertiti e rammentati qualche volta degli amici. -Ciò detto, il burattino fece due passi in atto di andarsene: ma poi, fermandosi e voltandosi all’amico, gli domandò: -– Ma sei proprio sicuro che in quel paese tutte le settimane sieno composte di sei giovedì e di una domenica? -– Sicurissimo. -– Ma lo sai di certo che le vacanze abbiano principio col primo di gennaio e finiscano coll’ultimo di dicembre? -– Di certissimo! -– Che bel paese! – ripeté Pinocchio, sputando dalla soverchia consolazione. -Poi, fatto un animo risoluto, soggiunse in fretta e furia: -– Dunque, addio davvero: e buon viaggio. -– Addio. -– Fra quanto partirete? -– Fra due ore! -– Peccato! Se alla partenza mancasse un’ora sola, sarei quasi quasi capace di aspettare. -– E la Fata?... -– Oramai ho fatto tardi!... E tornare a casa un’ora prima o un’ora dopo, è lo stesso. -– Povero Pinocchio! E se la Fata ti grida? -– Pazienza! La lascerò gridare. Quando avrà gridato ben bene, si cheterà. -Intanto si era già fatta notte e notte buia: quando a un tratto videro muoversi in lontananza un lumicino... e sentirono un suono di bubboli e uno squillo di trombetta, così piccolino e soffocato, che pareva il sibilo di una zanzara! -– Eccolo! – gridò Lucignolo, rizzandosi in piedi. -– Chi è? – domandò sottovoce Pinocchio. -– È il carro che viene a prendermi. Dunque, vuoi venire, sì o no? -– Ma è proprio vero, – domandò il burattino, – che in quel paese i ragazzi non hanno mai l’obbligo di studiare? -– Mai, mai, mai! -– Che bel paese!... che bel paese!... che bel paese!... - -XXXI Dopo cinque mesi di cuccagna, Pinocchio, con sua grande maraviglia, sente spuntarsi un bel paio d’orecchie asinine e diventa un ciuchino, con la coda e tutto. - -Finalmente il carro arrivò: e arrivò senza fare il più piccolo rumore, perché le sue ruote erano fasciate di stoppa e di cenci. -Lo tiravano dodici pariglie di ciuchini, tutti della medesima grandezza, ma di diverso pelame. -Alcuni erano bigi, altri bianchi, altri brizzolati a uso pepe e sale, e altri rigati a grandi strisce gialle e turchine. Ma la cosa più singolare era questa: che quelle dodici pariglie, ossia quei ventiquattro ciuchini, invece di essere ferrati come tutti le altre bestie da tiro o da soma, avevano ai piedi degli stivali da uomo di vacchetta bianca. -E il conduttore del carro?... -Figuratevi un omino più largo che lungo, tenero e untuoso come una palla di burro, con un visino di melarosa, una bocchina che rideva sempre e una voce sottile e carezzevole, come quella d’un gatto che si raccomanda al buon cuore della padrona di casa. -Tutti i ragazzi, appena lo vedevano, ne restavano innamorati e facevano a gara nel montare sul suo carro, per essere condotti da lui in quella vera cuccagna conosciuta nella carta geografica col seducente nome di Paese dei Balocchi. -Difatti il carro era già tutto pieno di ragazzetti fra gli otto e i dodici anni, ammonticchiati gli uni sugli altri, come tante acciughe nella salamoia. Stavano male, stavano pigiati, non potevano quasi respirare: ma nessuno diceva ohi!, nessuno si lamentava. La consolazione di sapere che fra poche ore sarebbero giunti in un paese, dove non c’erano né libri, né scuole, né maestri, li rendeva così contenti e rassegnati, che non sentivano né i disagi, né gli strapazzi, né la fame, né la sete, né il sonno. -Appena che il carro si fu fermato, l’omino si volse a Lucignolo e con mille smorfie e mille manierine, gli domandò sorridendo: -– Dimmi, mio bel ragazzo, vuoi venire anche tu in quel fortunato paese? -– Sicuro che ci voglio venire. -– Ma ti avverto, carino mio, che nel carro non c’è più posto. Come vedi, è tutto pieno!... -– Pazienza! – replicò Lucignolo, – se non c’è posto dentro, io mi adatterò a star seduto sulle stanghe del carro. -E spiccato un salto, montò a cavalcioni sulle stanghe. -– E tu, amor mio?... – disse l’omino volgendosi tutto complimentoso a Pinocchio. – Che intendi fare? Vieni con noi, o rimani?... -– Io rimango, – rispose Pinocchio. – Io voglio tornarmene a casa mia: voglio studiare e voglio farmi onore alla scuola, come fanno tutti i ragazzi perbene. -– Buon pro ti faccia! -– Pinocchio! – disse allora Lucignolo. – Dai retta a me: vieni via con noi e staremo allegri. -– No, no, no! -– Vieni via con noi e staremo allegri, – gridarono altre quattro voci di dentro al carro. -– Vieni via con noi e staremo allegri, – urlarono tutte insieme un centinaio di voci di dentro al carro. -– E se vengo con voi, che cosa dirà la mia buona Fata? – disse il burattino che cominciava a intenerirsi e a ciurlar nel manico. -– Non ti fasciare il capo con tante melanconie. Pensa che andiamo in un paese dove saremo padroni di fare il chiasso dalla mattina alla sera! -Pinocchio non rispose: ma fece un sospiro: poi fece un altro sospiro: poi un terzo sospiro; finalmente disse: -– Fatemi un po’ di posto: voglio venire anch’io!... -– I posti son tutti pieni, – replicò l’omino, – ma per mostrarti quanto sei gradito, posso cederti il mio posto a cassetta... -– E voi?... -– E io farò la strada a piedi. -– No, davvero, che non lo permetto. Preferisco piuttosto di salire in groppa a qualcuno di questi ciuchini! – gridò Pinocchio. -Detto fatto, si avvicinò al ciuchino manritto della prima pariglia e fece l’atto di volerlo cavalcare: ma la bestiola, voltandosi a secco, gli dette una gran musata nello stomaco e lo gettò a gambe all’aria. -Figuratevi la risatona impertinente e sgangherata di tutti quei ragazzi presenti alla scena. -Ma l’omino non rise. Si accostò pieno di amorevolezza al ciuchino ribelle, e, facendo finta di dargli un bacio, gli staccò con un morso la metà dell’orecchio destro. -Intanto Pinocchio, rizzatosi da terra tutto infuriato, schizzò con un salto sulla groppa di quel povero animale. E il salto fu così bello, che i ragazzi, smesso di ridere, cominciarono a urlare: «Viva Pinocchio!» e a fare una smanacciata di applausi, che non finivano più. -Quand’ecco che all’improvviso il ciuchino alzò tutt’e due le gambe di dietro, e dando una fortissima sgropponata, scaraventò il povero burattino in mezzo alla strada sopra un monte di ghiaia. -Allora grandi risate daccapo: ma l’omino, invece di ridere, si sentì preso da tanto amore per quell’irrequieto asinello, che, con un bacio, gli portò via di netto la metà di quell’altro orecchio. Poi disse al burattino: -– Rimonta pure a cavallo e non aver paura. Quel ciuchino aveva qualche grillo per il capo: ma io gli ho detto due paroline negli orecchi e spero di averlo reso mansueto e ragionevole. -Pinocchio montò: e il carro cominciò a muoversi: ma nel tempo che i ciuchini galoppavano e che il carro correva sui ciotoli della via maestra, gli parve al burattino di sentire una voce sommessa e appena intelligibile, che gli disse: -– Povero gonzo! Hai voluto fare a modo tuo, ma te ne pentirai! -Pinocchio, quasi impaurito, guardò di qua e di là, per conoscere da qual parte venissero queste parole; ma non vide nessuno: i ciuchini galoppavano, il carro correva, i ragazzi dentro al carro dormivano, Lucignolo russava come un ghiro e l’omino seduto a cassetta, canterellava fra i denti: -Tutti la notte dormono -E io non dormo mai... -Fatto un altro mezzo chilometro, Pinocchio sentì la solita vocina fioca che gli disse: -– Tienlo a mente, grullerello! I ragazzi che smettono di studiare e voltano le spalle ai libri, alle scuole e ai maestri, per darsi interamente ai balocchi e ai divertimenti, non possono far altro che una fine disgraziata!... Io lo so per prova!... E te lo posso dire! Verrà un giorno che piangerai anche tu, come oggi piango io... ma allora sarà tardi!... -A queste parole bisbigliate sommessamente, il burattino, spaventato più che mai, saltò giù dalla groppa della cavalcatura e andò a prendere il suo ciuchino per il muso. -E immaginatevi come restò, quando s’accorse che il suo ciuchino piangeva... e piangeva proprio come un ragazzo! -– Ehi, signor omino, – gridò allora Pinocchio al padrone del carro, – sapete che cosa c’è di nuovo? Questo ciuchino piange. -– Lascialo piangere: riderà quando sarà sposo -– Ma che forse gli avete insegnato anche a parlare ? -– No: ha imparato da sé a borbottare qualche parola, essendo stato tre anni in una compagnia di cani ammaestrati. -– Povera bestia!... -– Via, via, – disse l’omino, – non perdiamo il nostro tempo a veder piangere un ciuco. Rimonta a cavallo, e andiamo: la notte è fresca e la strada è lunga. -Pinocchio obbedì senza rifiatare. Il carro riprese la sua corsa: e la mattina, sul far dell’alba, arrivarono felicemente nel Paese dei Balocchi. -Questo paese non somigliava a nessun altro paese del mondo. La sua popolazione era tutta composta di ragazzi. I più vecchi avevano quattordici anni: i più giovani ne avevano otto appena. Nelle strade, un’allegria, un chiasso, uno strillìo da levar di cervello! Branchi di monelli dappertutto. Chi giocava alle noci, chi alle piastrelle, chi alla palla, chi andava in velocipede, chi sopra a un cavallino di legno; questi facevano a mosca-cieca, quegli altri si rincorrevano; altri, vestiti da pagliacci, mangiavano la stoppa accesa: chi recitava, chi cantava, chi faceva i salti mortali, chi si divertiva a camminare colle mani in terra e colle gambe in aria; chi mandava il cerchio, chi passeggiava vestito da generale coll’elmo di foglio e lo squadrone di cartapesta; chi rideva, chi urlava, chi chiamava, chi batteva le mani, chi fischiava, chi rifaceva il verso alla gallina quando ha fatto l’ovo; insomma un tal pandemonio, un tal passeraio, un tal baccano indiavolato, da doversi mettere il cotone negli orecchi per non rimanere assorditi. Su tutte le piazze si vedevano teatrini di tela, affollati di ragazzi dalla mattina alla sera, e su tutti i muri delle case si leggevano scritte col carbone delle bellissime cose come queste: Viva i balocci (invece di balocchi): non voglamo più schole (invece di non vogliamo più scuole): abbasso Larin Metica (invece di l’aritmetica) e altri fiori consimili. -Pinocchio, Lucignolo e tutti gli altri ragazzi, che avevano fatto il viaggio coll’omino, appena ebbero messo il piede dentro la città, si ficcarono subito in mezzo alla gran baraonda, e in pochi minuti, come è facile immaginarselo, diventarono gli amici di tutti. Chi più felice, chi più contento di loro? -In mezzo ai continui spassi e agli svariati divertimenti, le ore, i giorni, le settimane, passavano come tanti baleni. -– Oh! che bella vita! – diceva Pinocchio tutte le volte che per caso s’imbatteva in Lucignolo. -– Vedi, dunque, se avevo ragione?... – ripigliava quest’ultimo. – E dire che tu non volevi partire! E pensare che t’eri messo in capo di tornartene a casa dalla tua Fata, per perdere il tempo a studiare!.... Se oggi ti sei liberato dalla noia dei libri e delle scuole, lo devi a me, ai miei consigli, alle mie premure, ne convieni? Non vi sono che i veri amici che sappiano rendere di questi grandi favori. -– È vero, Lucignolo! Se oggi io sono un ragazzo veramente contento, è tutto merito tuo. E il maestro, invece, sai che cosa mi diceva, parlando di te? Mi diceva sempre: «Non praticare quella birba di Lucignolo perché Lucignolo è un cattivo compagno e non può consigliarti altro che a far del male!...». -– Povero maestro! – replicò l’altro tentennando il capo. – Lo so purtroppo che mi aveva a noia e che si divertiva sempre a calunniarmi, ma io sono generoso e gli perdono! -– Anima grande! – disse Pinocchio, abbracciando affettuosamente l’amico e dandogli un bacio in mezzo agli occhi. -Intanto era già da cinque mesi che durava questa bella cuccagna di baloccarsi e di divertirsi le giornate intere, senza mai vedere in faccia né un libro, né una scuola, quando una mattina Pinocchio, svegliandosi, ebbe, come si suol dire, una gran brutta sorpresa che lo messe proprio di malumore. - -XXXII A Pinocchio gli vengono gli orecchi di ciuco, e poi diventa un ciuchino vero e comincia a ragliare. - -E questa sorpresa quale fu? -Ve lo dirò io, miei cari e piccoli lettori: la sorpresa fu che Pinocchio, svegliandosi, gli venne fatto naturalmente di grattarsi il capo; e nel grattarsi il capo si accorse... -Indovinate un po’ di che cosa si accorse? -Si accorse con sua grandissima maraviglia che gli orecchi gli erano cresciuti più d’un palmo. -Voi sapete che il burattino, fin dalla nascita, aveva gli orecchi piccini piccini: tanto piccini che, a occhio nudo, non si vedevano neppure! Immaginatevi dunque come restò, quando si poté scorgere che i suoi orecchi, durante la notte, erano così allungati, che parevano due spazzole di padule. -Andò subito in cerca di uno specchio, per potersi vedere: ma non trovando uno specchio, empì d’acqua la catinella del lavamano, e specchiandovisi dentro, vide quel che non avrebbe mai voluto vedere: vide, cioè, la sua immagine abbellita di un magnifico paio di orecchi asinini. -Lascio pensare a voi il dolore, la vergogna e la disperazione del povero Pinocchio! -Cominciò a piangere, a strillare, a battere la testa nel muro: ma quanto più si disperava, e più i suoi orecchi crescevano, crescevano e diventavano pelosi verso la cima. Al rumore di quelle grida acutissime, entrò nella stanza una bella Marmottina, che abitava il piano di sopra: la quale, vedendo il burattino in così grandi smanie, gli domandò premurosamente: -– Che cos’hai, mio caro casigliano? -– Sono malato, Marmottina mia, molto malato... e malato d’una malattia che mi fa paura! Te ne intendi tu del polso? -– Un pochino. -– Senti dunque se per caso avessi la febbre. -La Marmottina alzò la zampa destra davanti: e dopo aver tastato il polso di Pinocchio gli disse sospirando: -– Amico mio, mi dispiace doverti dare una cattiva notizia!... -– Cioè? -– Tu hai una gran brutta febbre!... -– E che febbre sarebbe? -– È la febbre del somaro. -– Non la capisco questa febbre! – rispose il burattino, che l’aveva pur troppo capita. -– Allora te la spiegherò io, – soggiunse la Marmottina. – Sappi dunque che fra due o tre ore tu non sarai più burattino, né un ragazzo... -– E che cosa sarò? -– Fra due o tre ore, tu diventerai un ciuchino vero e proprio, come quelli che tirano il carretto e che portano i cavoli e l’insalata al mercato. -– Oh! Povero me! Povero me! – gridò Pinocchio pigliandosi con le mani tutt’e due gli orecchi, e tirandoli e strapazzandoli rabbiosamente, come se fossero gli orecchi di un altro. -– Caro mio, – replicò la Marmottina per consolarlo, – che cosa ci vuoi tu fare? Oramai è destino. Oramai è scritto nei decreti della sapienza, che tutti quei ragazzi svogliati che, pigliando a noia i libri, le scuole e i maestri, passano le loro giornate in balocchi, in giochi e in divertimenti, debbano finire prima o poi col trasformarsi in tanti piccoli somari. -– Ma davvero è proprio così? – domandò singhiozzando il burattino. -– Purtroppo è così! E ora i pianti sono inutili. Bisognava pensarci prima! -– Ma la colpa non è mia: la colpa, credilo, Marmottina, è tutta di Lucignolo!... -– E chi è questo Lucignolo!... -– Un mio compagno di scuola. Io volevo tornare a casa: io volevo essere ubbidiente: io volevo seguitare a studiare e a farmi onore... ma Lucignolo mi disse: «Perché vuoi annoiarti a studiare? Perché vuoi andare alla scuola? Vieni piuttosto con me, nel Paese dei Balocchi: lì non studieremo più: lì ci divertiremo dalla mattina alla sera e staremo sempre allegri». -– E perché seguisti il consiglio di quel falso amico? di quel cattivo compagno? -– Perché?... Perché, Marmottina mia, io sono un burattino senza giudizio... e senza cuore. Oh! se avessi avuto un zinzino di cuore, non avrei mai abbandonato quella buona Fata, che mi voleva bene come una mamma e che aveva fatto tanto per me!... E a quest’ora non sarei più un burattino... ma sarei invece un ragazzino a modo, come ce n’è tanti! Oh!... ma se incontro Lucignolo, guai a lui! Gliene voglio dire un sacco e una sporta! -E fece l’atto di volere uscire. Ma quando fu sulla porta, si ricordò che aveva gli orecchi d’asino, e vergognandosi di mostrarli al pubblico, che cosa inventò?... Prese un gran berretto di cotone, e, ficcatoselo in testa, se lo ingozzò fin sotto la punta del naso. -Poi uscì: e si dette a cercar Lucignolo dappertutto. Lo cercò nelle strade, nelle piazze, nei teatrini, in ogni luogo: ma non lo trovò. Ne chiese notizia a quanti incontrò per la via, ma nessuno l’aveva veduto. -Allora andò a cercarlo a casa: e arrivato alla porta bussò. -– Chi è? – domandò Lucignolo di dentro. -– Sono io! – rispose il burattino. -– Aspetta un poco, e ti aprirò. -Dopo mezz’ora la porta si aprì: e figuratevi come restò Pinocchio quando, entrando nella stanza, vide il suo amico Lucignolo con un gran berretto di cotone in testa, che gli scendeva fin sotto il naso. -Alla vista di quel berretto, Pinocchio sentì quasi consolarsi e pensò subito dentro di sé: -«Che l’amico sia malato della mia medesima malattia? Che abbia anche lui la febbre del ciuchino?...» -E facendo finta di non essersi accorto di nulla, gli domandò sorridendo: -– Come stai, mio caro Lucignolo? -– Benissimo: come un topo in una forma di cacio parmigiano. -– Lo dici proprio sul serio? -– E perché dovrei dirti una bugia? -– Scusami, amico: e allora perché tieni in capo codesto berretto di cotone che ti cuopre tutti gli orecchi? -– Me l’ha ordinato il medico, perché mi sono fatto male a questo ginocchio. E tu, caro burattino, perché porti codesto berretto di cotone ingozzato fin sotto il naso? -– Me l’ha ordinato il medico, perché mi sono sbucciato un piede. -– Oh! povero Pinocchio!... -– Oh! povero Lucignolo!... -A queste parole tenne dietro un lunghissimo silenzio, durante il quale i due amici non fecero altro che guardarsi fra loro in atto di canzonatura. -Finalmente il burattino, con una vocina melliflua e flautata, disse al suo compagno: -– Levami una curiosità, mio caro Lucignolo: hai mai sofferto di malattia agli orecchi? -– Mai!... E tu? -– Mai! Per altro da questa mattina in poi ho un orecchio, che mi fa spasimare. -– Ho lo stesso male anch’io. -– Anche tu?... E qual è l’orecchio che ti duole? -– Tutt’e due. E tu? -– Tutt’e due. Che sia la medesima malattia? -– Ho paura di sì? -– Vuoi farmi un piacere, Lucignolo? -– Volentieri! Con tutto il cuore. -– Mi fai vedere i tuoi orecchi? -– Perché no? Ma prima voglio vedere i tuoi, caro Pinocchio. -– No: il primo devi essere tu. -– No, carino! Prima tu, e dopo io! -– Ebbene, – disse allora il burattino, – facciamo un patto da buoni amici. -– Sentiamo il patto. -– Leviamoci tutt’e due il berretto nello stesso tempo: accetti? -– Accetto. -– Dunque attenti! -E Pinocchio cominciò a contare a voce alta: -– Uno! Due! Tre! -Alla parola tre! i due ragazzi presero i loro berretti di capo e li gettarono in aria. -E allora avvenne una scena, che parrebbe incredibile, se non fosse vera. Avvenne, cioè, che Pinocchio e Lucignolo, quando si videro colpiti tutt’e due dalla medesima disgrazia, invece di restar mortificati e dolenti, cominciarono ad ammiccarsi i loro orecchi smisuratamente cresciuti, e dopo mille sguaiataggini finirono col dare in una bella risata. -E risero, risero, risero da doversi reggere il corpo: se non che, sul più bello del ridere, Lucignolo tutt’a un tratto si chetò, e barcollando e cambiando colore, disse all’amico: -– Aiuto, aiuto, Pinocchio! -– Che cos’hai? -– Ohimè. Non mi riesce più di star ritto sulle gambe. -– Non mi riesce più neanche a me, – gridò Pinocchio, piangendo e traballando. -E mentre dicevano così, si piegarono tutt’e due carponi a terra e, camminando con le mani e coi piedi, cominciarono a girare e a correre per la stanza. E intanto che correvano, i loro bracci diventarono zampe, i loro visi si allungarono e diventarono musi e le loro schiene si coprirono di un pelame grigiolino chiaro, brizzolato di nero. -Ma il momento più brutto per que’ due sciagurati sapete quando fu? Il momento più brutto e più umiliante fu quello quando sentirono spuntarsi di dietro la coda. Vinti allora dalla vergogna e dal dolore, si provarono a piangere e a lamentarsi del loro destino. -Non l’avessero mai fatto! Invece di gemiti e di lamenti, mandavano fuori dei ragli asinini: e ragliando sonoramente, facevano tutt’e due coro: j-a, j-a, j-a. -In quel frattempo fu bussato alla porta, e una voce di fuori disse: -– Aprite! Sono l’Omino, sono il conduttore del carro che vi portò in questo paese. Aprite subito, o guai a voi! - -XXXIII Diventato un ciuchino vero, è portato a vendere, e lo compra il direttore di una compagnia di pagliacci per insegnargli a ballare e a saltare i cerchi; ma una sera azzoppisce e allora lo ricompra un altro, per far con la sua pelle un tamburo. - -Vedendo che la porta non si apriva, l’Omino la spalancò con un violentissimo calcio: ed entrato che fu nella stanza, disse col suo solito risolino a Pinocchio e a Lucignolo: -– Bravi ragazzi! Avete ragliato bene, e io vi ho subito riconosciuti alla voce. E per questo eccomi qui. -A tali parole, i due ciuchini rimasero mogi mogi, colla testa giù, con gli orecchi bassi e con la coda fra le gambe. -Da principio l’Omino li lisciò, li accarezzò, li palpeggiò: poi, tirata fuori la striglia, cominciò a strigliarli perbene. -E quando a furia di strigliarli, li ebbe fatti lustri come due specchi, allora messe loro la cavezza e li condusse sulla piazza del mercato, con la speranza di venderli e di beccarsi un discreto guadagno. -E i compratori, difatti, non si fecero aspettare. -Lucignolo fu comprato da un contadino, a cui era morto il somaro il giorno avanti, e Pinocchio fu venduto al direttore di una compagnia di pagliacci e di saltatori di corda, il quale lo comprò per ammaestrarlo e per farlo poi saltare e ballare insieme con le altre bestie della compagnia. -E ora avete capito, miei piccoli lettori, qual era il bel mestiere che faceva l’Omino? Questo brutto mostriciattolo, che aveva una fisionomia tutta latte e miele, andava di tanto in tanto con un carro a girare per il mondo: strada facendo raccoglieva con promesse e con moine tutti i ragazzi svogliati, che avevano a noia i libri e le scuole: e dopo averli caricati sul suo carro, li conduceva nel Paese dei Balocchi, perché passassero tutto il loro tempo in giochi, in chiassate e in divertimenti. Quando poi quei poveri ragazzi illusi, a furia di baloccarsi sempre e di non studiare mai, diventavano tanti ciuchini, allora tutto allegro e contento s’impadroniva di loro e li portava a vendere sulle fiere e sui mercati. E così in pochi anni aveva fatto fior di quattrini ed era diventato milionario. -Quel che accadesse di Lucignolo, non lo so: so, per altro, che Pinocchio andò incontro fin dai primi giorni a una vita durissima e strapazzata. -Quando fu condotto nella stalla, il nuovo padrone gli empì la greppia di paglia: ma Pinocchio, dopo averne assaggiata una boccata, la risputò. -Allora il padrone, brontolando, gli empì la greppia di fieno: ma neppure il fieno gli piacque. -– Ah! non ti piace neppure il fieno? – gridò il padrone imbizzito. – Lascia fare, ciuchino bello, che se hai dei capricci per il capo, penserò io a levarteli!... -E a titolo di correzione, gli affibbiò subito una frustata nelle gambe. -Pinocchio dal gran dolore, cominciò a piangere e a ragliare, e ragliando, disse: -– J-a, j-a, la paglia non la posso digerire!... -– Allora mangia il fieno! – replicò il padrone che intendeva benissimo il dialetto asinino. -– J-a, j-a, il fieno mi fa dolere il corpo!... -– Pretenderesti, dunque, che un somaro, par tuo, lo dovessi mantenere a petti di pollo e cappone in galantina? – soggiunse il padrone arrabbiandosi sempre più e affibbiandogli una seconda frustata. -A quella seconda frustata Pinocchio, per prudenza, si chetò subito e non disse altro. -Intanto la stalla fu chiusa e Pinocchio rimase solo: e perché erano molte ore che non aveva mangiato cominciò a sbadigliare dal grande appetito. E, sbadigliando, spalancava una bocca che pareva un forno. -Alla fine, non trovando altro nella greppia, si rassegnò a masticare un po’ di fieno: e dopo averlo masticato ben bene, chiuse gli occhi e lo tirò giù. -– Questo fieno non è cattivo, – poi disse dentro di sé, – ma quanto sarebbe stato meglio che avessi continuato a studiare!... A quest’ora, invece di fieno, potrei mangiare un cantuccio di pan fresco e una bella fetta di salame!... Pazienza! -La mattina dopo, svegliandosi, cercò subito nella greppia un altro po’ di fieno; ma non lo trovò perché l’aveva mangiato tutto nella notte. -Allora prese una boccata di paglia tritata: ma in quel mentre che la masticava si dové accorgere che il sapore della paglia tritata non somigliava punto né al risotto alla milanese né ai maccheroni alla napoletana. -– Pazienza! – ripeté, continuando a masticare. – Che almeno la mia disgrazia possa servire di lezione a tutti i ragazzi disobbedienti e che non hanno voglia di studiare. Pazienza!... pazienza! -– Pazienza un corno! – urlò il padrone, entrando in quel momento nella stalla. – Credi forse, mio bel ciuchino, ch’io ti abbia comprato unicamente per darti da bere e da mangiare? Io ti ho comprato perché tu lavori e perché tu mi faccia guadagnare molti quattrini. Su, dunque, da bravo! Vieni con me nel Circo, e là ti insegnerà a saltare i cerchi, a rompere col capo le botti di foglio e a ballare il valzer e la polca, stando ritto sulle gambe di dietro. -Il povero Pinocchio, per amore o per forza, dové imparare tutte queste bellissime cose; ma, per impararle, gli ci vollero tre mesi di lezioni, e molte frustate da levare il pelo. -Venne finalmente il giorno, in cui il suo padrone poté annunziare uno spettacolo veramente straordinario. I cartelloni di vario colore, attaccati alle cantonate delle strade, dicevano così: -GRANDE -SPETTACOLO DI GALA - -PER QUESTA SERA - -AVRANNO LUOGO I SOLITI SALTI ED ESERCIZI SORPRENDENTI ESEGUITI DA TUTTI GLI ARTISTI E DA TUTTI I CAVALLI D’AMBO I SESSI DELLA COMPAGNIA - -E PIÙ SARÀ PRESENTATO PER LA PRIMA VOLTA IL FAMOSO - -CIUCHINO -PINOCCHIO -DETTO -LA STELLA DELLA DANZA - -IL TEATRO SARÀ ILLUMINATO A GIORNO -Quella sera, come potete figurarvelo, un’ora prima che cominciasse lo spettacolo, il teatro era pieno stipato. -Non si trovava più né un posto distinto, né un palco, nemmeno a pagarlo a peso d’oro. -Le gradinate del Circo formicolavano di bambini, di bambine e di ragazzi di tutte le età, che avevano la febbre addosso per la smania di veder ballare il famoso ciuchino Pinocchio. -Finita la prima parte dello spettacolo, il direttore della compagnia, vestito in giubba nera, calzoni bianchi a coscia e stivaloni di pelle fin sopra ai ginocchi, si presentò all’affollatissimo pubblico, e, fatto un grande inchino, recitò con molta solennità il seguente spropositato discorso: -«Rispettabile pubblico, cavalieri e dame!» -«L’umile sottoscritto essendo di passaggio per questa illustre metropolitana, ho voluto procrearmi l’onore nonché il piacere di presentare a questo intelligente e cospicuo uditorio un celebre ciuchino, che ebbe già l’onore di ballare al cospetto di Sua Maestà l’Imperatore di tutte le Corti principali d’Europa.» -«E col ringraziandoli, aiutateci della vostra animatrice presenza e compatiteci!” -Questo discorso fu accolto da molte risate e da molti applausi: ma gli applausi raddoppiarono e diventarono una specie di uragano alla comparsa del ciuchino Pinocchio in mezzo al Circo. Egli era tutto agghindato a festa. Aveva una briglia nuova di pelle lustra, con fibbie e borchie d’ottone; due camelie bianche agli orecchi; la criniera divisa in tanti riccioli legati con fiocchettini d’argento attraverso alla vita, e la coda tutta intrecciata con nastri di velluto amaranto e celeste. Era, insomma, un ciuchino da innamorare! -Il direttore, nel presentarlo al pubblico, aggiunse queste parole: -«Miei rispettabili auditori! Non starò qui a farvi menzogne delle grandi difficoltà da me soppressate per comprendere e soggiogare questo mammifero, mentre pascolava liberamente di montagna in montagna nelle pianure della zona torrida. Osservate, vi prego, quanta selvaggina trasudi dà suoi occhi, conciossiaché essendo riusciti vanitosi tutti i mezzi per addomesticarlo al vivere dei quadrupedi civili, ho dovuto più volte ricorrere all’affabile dialetto della frusta. Ma ogni mia gentilezza invece di farmi da lui benvolere, me ne ha maggiormente cattivato l’animo. Io però, seguendo il sistema di Galles, trovai nel suo cranio una piccola cartagine ossea che la stessa Facoltà Medicea di Parigi riconobbe essere quello il bulbo rigeneratore dei capelli e della danza pirrica. E per questo io lo volli ammaestrare nel ballo nonché nei relativi salti dei cerchi e delle botti foderate di foglio. Ammiratelo, e poi giudicatelo! Prima però di prendere cognato da voi, permettete, o signori, che io v’inviti al diurno spettacolo di domani sera: ma nell’apoteosi che il tempo piovoso minacciasse acqua, allora lo spettacolo invece di domani sera, sarà posticipato a domattina, alle ore undici antimeridiane del pomeriggio». -E qui il direttore fece un’altra profondissima riverenza: quindi rivolgendosi a Pinocchio, gli disse: -– Animo, Pinocchio!... Avanti di dar principio ai vostri esercizi, salutate questo rispettabile pubblico, cavalieri, dame e ragazzi! -Pinocchio, ubbidiente, piegò subito i due ginocchi davanti, fino a terra, e rimase inginocchiato fino a tanto che il direttore, schioccando la frusta, non gli gridò: -– Al passo! -Allora il ciuchino si rizzò sulle quattro gambe, e cominciò a girare intorno al Circo, camminando sempre di passo. -Dopo un poco il direttore grido: -– Al trotto! – e Pinocchio, ubbidiente al comando, cambiò il passo in trotto. -– Al galoppo!... – e Pinocchio staccò il galoppo. -– Alla carriera! – e Pinocchio si dette a correre di gran carriera. -Ma in quella che correva come un barbero, il direttore, alzando il braccio in aria, scaricò un colpo di pistola. -A quel colpo il ciuchino, fingendosi ferito, cadde disteso nel Circo, come se fosse moribondo davvero. -Rizzatosi da terra, in mezzo a uno scoppio di applausi, d’urli e di battimani, che andavano alle stelle, gli venne naturalmente di alzare la testa e di guardare in su... e guardando, vide in un palco una bella signora, che aveva al collo una grossa collana d’oro, dalla quale pendeva un medaglione. -Nel medaglione c’era dipinto il ritratto d’un burattino. -– Quel ritratto è il mio!... quella signora è la Fata! – disse dentro di sé Pinocchio, riconoscendola subito: e lasciandosi vincere dalla gran contentezza, si provò a gridare: -– Oh Fatina mia! oh Fatina mia! -Ma invece di queste parole, gli uscì dalla gola un raglio così sonoro e prolungato, che fece ridere tutti gli spettatori, e segnatamente tutti i ragazzi che erano in teatro. -Allora il direttore, per insegnargli e per fargli intendere che non è buona creanza mettersi a ragliare in faccia al pubblico, gli diè col manico della frusta una bacchettata sul naso. -Il povero ciuchino, tirato fuori un palmo di lingua, durò a leccarsi il naso almeno cinque minuti, credendo forse così di rasciugarsi il dolore che aveva sentito. -Ma quale fu la sua disperazione quando, voltandosi in su una seconda volta, vide che il palco era vuoto e che la Fata era sparita!... -Si sentì come morire: gli occhi gli si empirono di lacrime e cominciò a piangere dirottamente. Nessuno però se ne accorse e, meno degli altri, il direttore, il quale, anzi, schioccando la frusta, gridò: -– Da bravo, Pinocchio! Ora farete vedere a questi signori con quanta grazia sapete saltare i cerchi. -Pinocchio si provò due o tre volte: ma ogni volta che arrivava davanti al cerchio, invece di attraversarlo, ci passava più comodamente di sotto. Alla fine spiccò un salto e l’attraversò: ma le gambe di dietro gli rimasero disgraziatamente impigliate nel cerchio: motivo per cui ricadde in terra dall’altra parte tutto in un fascio. -Quando si rizzò, era azzoppito, e a malapena poté ritornare alla scuderia. -– Fuori Pinocchio! Vogliamo il ciuchino! Fuori il ciuchino! – gridavano i ragazzi dalla platea, impietositi e commossi al tristissimo caso. -Ma il ciuchino per quella sera non si fece rivedere. -La mattina dopo il veterinario, ossia il medico delle bestie, quando l’ebbe visitato, dichiarò che sarebbe rimasto zoppo per tutta la vita. -Allora il direttore disse al suo garzone di stalla: -– Che vuoi tu che mi faccia d’un somaro zoppo? Sarebbe un mangiapane a ufo. Portalo dunque in piazza e rivendilo. -Arrivati in piazza, trovarono subito il compratore, il quale domandò al garzone di stalla: -– Quanto vuoi di cotesto ciuchino zoppo? -– Venti lire. -– Io ti do venti soldi. Non credere che io lo compri per servirmene: lo compro unicamente per la sua pelle. Vedo che ha la pelle molto dura, e con la sua pelle voglio fare un tamburo per la banda musicale del mio paese. -Lascio pensare a voi, ragazzi, il bel piacere che fu per il povero Pinocchio, quando sentì che era destinato a diventare un tamburo! -Fatto sta che il compratore, appena pagati i venti soldi, condusse il ciuchino sopra uno scoglio ch’era sulla riva del mare; e messogli un sasso al collo e legatolo per una zampa con una fune che teneva in mano, gli diè improvvisamente uno spintone e lo gettò nell’acqua. -Pinocchio, con quel macigno al collo, andò subito a fondo; e il compratore, tenendo sempre stretta in mano la fune, si pose a sedere sullo scoglio, aspettando che il ciuchino avesse tutto il tempo di morire affogato, per poi levargli la pelle. - -XXXIV Pinocchio, gettato in mare, è mangiato dai pesci e ritorna ad essere un burattino come prima; ma mentre nuota per salvarsi, è ingoiato dal terribile Pesce-cane. - -Dopo cinquanta minuti che il ciuchino era sott’acqua, il compratore disse, discorrendo da sé solo: -– A quest’ora il mio povero ciuchino zoppo deve essere bell’affogato. Ritiriamolo dunque su, e facciamo con la sua pelle questo bel tamburo. -E cominciò a tirare la fune, con la quale lo aveva legato per una gamba: e tira, tira, tira, alla fine vide apparire a fior d’acqua... indovinate? Invece di un ciuchino morto, vide apparire a fior d’acqua un burattino vivo che scodinzolava come un’anguilla. -Vedendo quel burattino di legno, il pover’uomo credé di sognare e rimase lì intontito, a bocca aperta e con gli occhi fuori della testa. -Riavutosi un poco dal suo primo stupore, disse piangendo e balbettando: -– E il ciuchino che ho gettato in mare dov’è? -– Quel ciuchino son io! – rispose il burattino, ridendo. -– Tu? -– Io. -– Ah! mariuolo! Pretenderesti forse burlarti di me? -– Burlarmi di voi? Tutt’altro, caro padrone: io vi parlo sul serio. -– Ma come mai tu, che poco fa eri un ciuchino, ora, stando nell’acqua sei diventato un burattino di legno?... -– Sarà effetto dell’acqua del mare. Il mare ne fa di questi scherzi. -– Bada, burattino, bada!... Non credere di divertirti alle mie spalle. Guai a te, se mi scappa la pazienza. -– Ebbene, padrone: volete sapere tutta la vera storia? Scioglietemi questa gamba e io ve la racconterò. -Quel buon pasticcione del compratore, curioso di conoscere la vera storia, gli sciolse subito il nodo della fune, che lo teneva legato: e allora Pinocchio, trovandosi libero come un uccello nell’aria prese a dirgli così: -– Sappiate dunque che io ero un burattino di legno come sono oggi: ma mi trovavo a tocco e non tocco di diventare un ragazzo, come in questo mondo ce n’è tanti: se non che per la mia poca voglia di studiare e per dar retta ai cattivi compagni, scappai di casa... e un bel giorno, svegliandomi, mi trovai cambiato in un somaro con tanto di orecchi... e con tanto di coda!... Che vergogna fu quella per me!... Una vergogna, caro padrone, che Sant’Antonio benedetto non la faccia provare neppure a voi! Portato a vendere sul mercato degli asini, fui comprato dal Direttore di una compagnia equestre, il quale si messe in capo di far di me un gran ballerino e un gran saltatore di cerchi; ma una sera durante lo spettacolo, feci in teatro una brutta cascata, e rimasi zoppo da tutt’e due le gambe. Allora il direttore non sapendo che cosa farsi d’un asino zoppo, mi mandò a rivendere, e voi mi avete comprato! -– Pur troppo! E ti ho pagato venti soldi. E ora chi mi rende i miei poveri venti soldi? -– E perché mi avete comprato? Voi mi avete comprato per fare con la mia pelle un tamburo!... un tamburo!... -– Pur troppo!... E ora dove troverò un’altra pelle? -– Non vi date alla disperazione, padrone. Dei ciuchini ce n’è tanti, in questo mondo! -– Dimmi, monello impertinente: e la tua storia finisce qui? -– No, – rispose il burattino, – ci sono altre due parole, e poi è finita. Dopo avermi comprato, mi avete condotto in questo luogo per uccidermi; ma poi, cedendo a un sentimento pietoso d’umanità, avete preferito di legarmi un sasso al collo e di gettarmi in fondo al mare. Questo sentimento di delicatezza vi onora moltissimo, e io ve ne serberò eterna riconoscenza. Per altro, caro padrone, questa volta avete fatto i vostri conti senza la Fata... -– E chi è questa Fata? -– È la mia mamma, la quale somiglia a tutte quelle buone mamme, che vogliono un gran bene ai loro ragazzi e non li perdono mai d’occhio, e li assistono amorosamente in ogni disgrazia, anche quando questi ragazzi, per le loro scapataggini e per i loro cattivi portamenti, meriterebbero di essere abbandonati e lasciati in balia a se stessi. Dicevo, dunque, che la buona Fata, appena mi vide in pericolo di affogare, mandò subito intorno a me un branco infinito di pesci, i quali credendomi davvero un ciuchino bell’e morto, cominciarono a mangiarmi! E che bocconi che facevano! Non avrei mai creduto che i pesci fossero più ghiotti anche dei ragazzi! Chi mi mangiò gli orecchi, chi mi mangiò il muso, chi il collo e la criniera, chi la pelle delle zampe, chi la pelliccia della schiena... e fra gli altri, vi fu un pesciolino così garbato, che si degnò perfino di mangiarmi la coda. -– Da oggi in poi, – disse il compratore inorridito, – faccio giuro di non assaggiar più carne di pesce. Mi dispiacerebbe troppo di aprire una triglia o un nasello fritto e di trovargli in corpo una coda di ciuco! -– Io la penso come voi, – replicò il burattino, ridendo. – Del resto, dovete sapere che quando i pesci ebbero finito di mangiarmi tutta quella buccia asinina, che mi copriva dalla testa ai piedi, arrivarono, – com’è naturale, all’osso... o per dir meglio, arrivarono al legno, perché, come vedete, io son fatto di legno durissimo. Ma dopo dati i primi morsi, quei pesci ghiottoni si accorsero subito che il legno non era ciccia per i loro denti, e nauseati da questo cibo indigesto se ne andarono chi in qua chi in là, senza voltarsi nemmeno a dirmi grazie... Ed eccovi raccontato come qualmente voi, tirando su la fune, avete trovato un burattino vivo, invece d’un ciuchino morto. -– Io mi rido della tua storia, – gridò il compratore imbestialito. – Io so che ho speso venti soldi per comprarti, e rivoglio i miei quattrini. Sai che cosa farò? Ti porterò daccapo al mercato, e ti rivenderò a peso di legno stagionato per accendere il fuoco nel caminetto. -– Rivendetemi pure: io sono contento, – disse Pinocchio. -Ma nel dir così, fece un bel salto e schizzò in mezzo all’acqua. E nuotando allegramente e allontanandosi dalla spiaggia, gridava al povero compratore: -– Addio, padrone; se avete bisogno di una pelle per fare un tamburo, ricordatevi di me. -E poi rideva e seguitava a nuotare: e dopo un poco, rivoltandosi indietro, urlava più forte: -– Addio, padrone: se avete bisogno di un po’ di legno stagionato, per accendere il caminetto, ricordatevi di me. -Fatto sta che in un batter d’occhio si era tanto allontanato, che non si vedeva quasi più: ossia, si vedeva solamente sulla superficie del mare un puntolino nero, che di tanto in tanto rizzava le gambe fuori dell’acqua e faceva capriole e salti, come un delfino in vena di buonumore. -Intanto che Pinocchio nuotava alla ventura, vide in mezzo al mare uno scoglio che pareva di marmo bianco: e su in cima allo scoglio, una bella Caprettina che belava amorosamente e gli faceva segno di avvicinarsi. -La cosa più singolare era questa: che la lana della Caprettina, invece di esser bianca, o nera, o pallata di due colori, come quella delle altre capre, era invece turchina, ma d’un color turchino sfolgorante, che rammentava moltissimo i capelli della bella Bambina. -Lascio pensare a voi se il cuore del povero Pinocchio cominciò a battere più forte! Raddoppiando di forza e di energia si diè a nuotare verso lo scoglio bianco: ed era già a mezza strada, quando ecco uscir fuori dall’acqua e venirgli incontro una orribile testa di mostro marino, con la bocca spalancata, come una voragine, e tre filari di zanne che avrebbero fatto paura anche a vederle dipinte. -E sapete chi era quel mostro marino? -Quel mostro marino era né più né meno quel gigantesco Pesce-cane, ricordato più volte in questa storia, e che per le sue stragi e per la sua insaziabile voracità, veniva soprannominato «l’Attila dei pesci e dei pescatori». -Immaginatevi lo spavento del povero Pinocchio alla vista del mostro. Cercò di scansarlo, di cambiare strada: cercò di fuggire: ma quella immensa bocca spalancata gli veniva sempre incontro con la velocità di una saetta. -– Affréttati, Pinocchio, per carità! – gridava belando la bella Caprettina. -E Pinocchio nuotava disperatamente con le braccia, col petto, con le gambe e coi piedi. -– Corri, Pinocchio, perché il mostro si avvicina! -E Pinocchio, raccogliendo tutte le sue forze, raddoppiava di lena nella corsa. -– Bada, Pinocchio!... il mostro ti raggiunge!... Eccolo!... Eccolo!... Affréttati per carità, o sei perduto!... -E Pinocchio a nuotar più lesto che mai, e via, e via, e via, come andrebbe una palla di fucile. E già era presso lo scoglio, e già la Caprettina, spenzolandosi tutta sul mare, gli porgeva le sue zampine davanti per aiutarlo a uscire dall’acqua! -Ma oramai era tardi! Il mostro lo aveva raggiunto: il mostro, tirando il fiato a sé, si bevve il povero burattino, come avrebbe bevuto un uovo di gallina: e lo inghiottì con tanta violenza e con tanta avidità, che Pinocchio, cascando giù in corpo al Pesce-cane, batté un colpo così screanzato, da restarne sbalordito per un quarto d’ora. -Quando ritornò in sé da quello sbigottimento, non sapeva raccapezzarsi, nemmeno lui, in che mondo si fosse. Intorno a sé c’era da ogni parte un gran buio: ma un buio così nero e profondo, che gli pareva di essere entrato col capo in un calamaio pieno d’inchiostro. Stette in ascolto e non senti nessun rumore: solamente di tanto in tanto sentiva battersi nel viso alcune grandi buffate di vento. Da principio non sapeva intendere da dove quel vento uscisse: ma poi capì che usciva dai polmoni del mostro. Perché bisogna sapere che il Pesce-cane soffriva moltissimo d’asma, e quando respirava, pareva proprio che tirasse la tramontana. -Pinocchio, sulle prime, s’ingegnò di farsi un poco di coraggio: ma quand’ebbe la prova e la riprova di trovarsi chiuso in corpo al mostro marino allora cominciò a piangere e a strillare: e piangendo diceva: -– Aiuto! aiuto! Oh povero me! Non c’è nessuno che venga a salvarmi? -– Chi vuoi che ti salvi, disgraziato?... – disse in quel buio una vociaccia fessa di chitarra scordata. -– Chi è che parla così? – domandò Pinocchio, sentendosi gelare dallo spavento. -– Sono io! sono un povero Tonno, inghiottito dal Pesce-cane insieme con te. E tu che pesce sei? -– Io non ho che vedere nulla coi pesci. Io sono un burattino. -– E allora, se non sei un pesce, perché ti sei fatto inghiottire dal mostro? -– Non son io, che mi son fatto inghiottire: gli è lui che mi ha inghiottito! Ed ora che cosa dobbiamo fare qui al buio?... -– Rassegnarsi e aspettare che il Pesce-cane ci abbia digeriti tutt’e due!... -– Ma io non voglio esser digerito! – urlò Pinocchio, ricominciando a piangere. -– Neppure io vorrei esser digerito, – soggiunse il Tonno, – ma io sono abbastanza filosofo e mi consolo pensando che, quando si nasce Tonni, c’è più dignità a morir sott’acqua che sott’olio!... -– Scioccherie! – gridò Pinocchio. -– La mia è un’opinione, – replicò il Tonno, – e le opinioni, come dicono i Tonni politici, vanno rispettate! -– Insomma... io voglio andarmene di qui... io voglio fuggire... -– Fuggi, se ti riesce!... -– È molto grosso questo Pesce-cane che ci ha inghiottiti? – domandò il burattino. -– Figùrati che il suo corpo è più lungo di un chilometro, senza contare la coda. -Nel tempo che facevano questa conversazione al buio, parve a Pinocchio di veder lontan lontano una specie di chiarore. -– Che cosa sarà mai quel lumicino lontano lontano? – disse Pinocchio. -– Sarà qualche nostro compagno di sventura, che aspetterà come noi il momento di esser digerito!.... -– Voglio andare a trovarlo. Non potrebbe darsi il caso che fosse qualche vecchio pesce capace di insegnarmi la strada per fuggire? -– Io te l’auguro di cuore, caro burattino. -– Addio, Tonno. -– Addio, burattino; e buona fortuna. -– Dove ci rivedremo?... -– Chi lo sa?... è meglio non pensarci neppure! - -XXXV Pinocchio ritrova in corpo al Pesce-cane... Chi ritrova? Leggete questo capitolo e lo saprete. - -Pinocchio, appena che ebbe detto addio al suo buon amico Tonno, si mosse brancolando in mezzo a quel buio, e cominciò a camminare a tastoni dentro il corpo del Pesce-cane, avviandosi un passo dietro l’altro verso quel piccolo chiarore che vedeva baluginare lontano lontano. -E nel camminare sentì che i suoi piedi sguazzavano in una pozzanghera d’acqua grassa e sdrucciolona, e quell’acqua sapeva di un odore così acuto di pesce fritto che gli pareva di essere a mezza quaresima. -E più andava avanti, e più il chiarore si faceva rilucente e distinto: finché, cammina cammina, alla fine arrivò: e quando fu arrivato... che cosa trovò? Ve lo do a indovinare in mille: trovò una piccola tavola apparecchiata, con sopra una candela accesa infilata in una bottiglia di cristallo verde, e seduto a tavola un vecchiettino tutto bianco, come se fosse di neve o di panna montata, il quale se ne stava lì biascicando alcuni pesciolini vivi, ma tanto vivi, che alle volte mentre li mangiava, gli scappavano perfino di bocca. -A quella vista il povero Pinocchio ebbe un’allegrezza così grande e così inaspettata, che ci mancò un ette non cadesse in delirio. Voleva ridere, voleva piangere, voleva dire un monte di cose; e invece mugolava confusamente e balbettava delle parole tronche e sconclusionate. Finalmente gli riuscì di cacciar fuori un grido di gioia e spalancando le braccia e gettandosi al collo del vecchietto, cominciò a urlare: -– Oh! babbino mio! finalmente vi ho ritrovato! Ora poi non vi lascio più, mai più, mai più! -– Dunque gli occhi mi dicono il vero? – replicò il vecchietto stropicciandosi gli occhi, – Dunque tu sé proprio il mi’ caro Pinocchio? -– Sì, sì, sono io, proprio io! E voi mi avete digià perdonato, non è vero? Oh! babbino mio, come siete buono!... e pensare che io, invece... Oh! ma se sapeste quante disgrazie mi son piovute sul capo e quante cose mi son andate per traverso! Figuratevi che il giorno che voi, povero babbino, col vendere la vostra casacca mi compraste l’Abbecedario per andare a scuola, io scappai a vedere i burattini, e il burattinaio mi voleva mettere sul fuoco perché gli cocessi il montone arrosto, che fu quello poi che mi dette cinque monete d’oro, perché le portassi a voi, ma io trovai la Volpe e il Gatto, che mi condussero all’osteria del Gambero Rosso dove mangiarono come lupi, e partito solo di notte incontrai gli assassini che si messero a corrermi dietro, e io via, e loro dietro, e io via e loro sempre dietro, e io via, finché m’impiccarono a un ramo della Quercia grande, dovecché la bella Bambina dai capelli turchini mi mandò a prendere con una carrozzina, e i medici, quando m’ebbero visitato, dissero subito: «Se non è morto, è segno che è sempre vivo», e allora mi scappò detto una bugia, e il naso cominciò a crescermi e non mi passava più dalla porta di camera, motivo per cui andai con la Volpe e col Gatto a sotterrare le quattro monete d’oro, che una l’avevo spesa all’osteria, e il pappagallo si messe a ridere, e viceversa di duemila monete non trovai più nulla, la quale il giudice quando seppe che ero stato derubato, mi fece subito mettere in prigione, per dare una soddisfazione ai ladri, di dove, col venir via, vidi un bel grappolo d’uva in un campo, che rimasi preso alla tagliola e il contadino di santa ragione mi messe il collare da cane perché facessi la guardia al pollaio, che riconobbe la mia innocenza e mi lasciò andare, e il Serpente, colla coda che gli fumava, cominciò a ridere e gli si strappò una vena sul petto e così ritornai alla Casa della bella Bambina, che era morta, e il Colombo vedendo che piangevo mi disse: «Ho visto il tu’ babbo che si fabbricava una barchettina per venirti a cercare», e io gli dissi: «Oh! se avessi l’ali anch’io», e lui mi disse: «Vuoi venire dal tuo babbo?», e io gli dissi: «Magari! ma chi mi ci porta», e lui mi disse: «Ti ci porto io», e io gli dissi: «Come?», e lui mi disse: «Montami sulla groppa», e così abbiamo volato tutta la notte, e poi la mattina tutti i pescatori che guardavano verso il mare mi dissero: «C’è un pover’uomo in una barchetta che sta per affogare», e io da lontano vi riconobbi subito, perché me lo diceva il core, e vi feci cenno di tornare alla spiaggia... -– Ti riconobbi anch’io, – disse Geppetto, – e sarei volentieri tornato alla spiaggia: ma come fare? Il mare era grosso e un cavallone m’arrovesciò la barchetta. Allora un orribile Pesce-cane che era lì vicino, appena m’ebbe visto nell’acqua corse subito verso di me, e tirata fuori la lingua, mi prese pari pari, e m’inghiottì come un tortellino di Bologna. -– E quant’è che siete chiuso qui dentro? – domandò Pinocchio. -– Da quel giorno in poi, saranno oramai due anni: due anni, Pinocchio mio, che mi son parsi due secoli! -– E come avete fatto a campare? E dove avete trovata la candela? E i fiammiferi per accenderla, chi ve li ha dati? -– Ora ti racconterò tutto. Devi dunque sapere che quella medesima burrasca, che rovesciò la mia barchetta, fece anche affondare un bastimento mercantile. I marinai si salvarono tutti, ma il bastimento colò a fondo e il solito Pesce-cane, che quel giorno aveva un appetito eccellente, dopo aver inghiottito me, inghiottì anche il bastimento... -– Come? Lo inghiottì tutto in un boccone?... – domandò Pinocchio maravigliato. -– Tutto in un boccone: e risputò solamente l’albero maestro, perché gli era rimasto fra i denti come una lisca. Per mia gran fortuna, quel bastimento era carico di carne conservata in cassette di stagno, di biscotto, ossia di pane abbrostolito, di bottiglie di vino, d’uva secca, di cacio, di caffè, di zucchero, di candele steariche e di scatole di fiammiferi di cera. Con tutta questa grazia di Dio ho potuto campare due anni: ma oggi sono agli ultimi sgoccioli: oggi nella dispensa non c’è più nulla, e questa candela, che vedi accesa, è l’ultima candela che mi sia rimasta... -– E dopo?... -– E dopo, caro mio, rimarremo tutt’e due al buio. -– Allora, babbino mio, – disse Pinocchio, – non c’è tempo da perdere. Bisogna pensar subito a fuggire... -– A fuggire?... e come? -– Scappando dalla bocca del Pesce-cane e gettandosi a nuoto in mare. -– Tu parli bene: ma io, caro Pinocchio, non so nuotare. -– E che importa?... Voi mi monterete a cavalluccio sulle spalle e io, che sono un buon nuotatore, vi porterò sano e salvo fino alla spiaggia. -– Illusioni, ragazzo mio! – replicò Geppetto, scotendo il capo e sorridendo malinconicamente. – Ti par egli possibile che un burattino, alto appena un metro, come sei tu, possa aver tanta forza da portarmi a nuoto sulle spalle? -– Provatevi e vedrete! A ogni modo, se sarà scritto in cielo che dobbiamo morire, avremo almeno la gran consolazione di morire abbracciati insieme. -E senza dir altro, Pinocchio prese in mano la candela, e andando avanti per far lume, disse al suo babbo: -– Venite dietro a me, e non abbiate paura. E così camminarono un bel pezzo, e traversarono tutto il corpo e tutto lo stomaco del Pesce-cane. Ma giunti che furono al punto dove cominciava la gran gola del mostro, pensarono bene di fermarsi per dare un’occhiata e cogliere il momento opportuno alla fuga. -Ora bisogna sapere che il Pesce-cane, essendo molto vecchio e soffrendo d’asma e di palpitazione di cuore, era costretto a dormir a bocca aperta: per cui Pinocchio, affacciandosi al principio della gola e guardando in su, poté vedere al di fuori di quell’enorme bocca spalancata un bel pezzo di cielo stellato e un bellissimo lume di luna. -– Questo è il vero momento di scappare, – bisbigliò allora voltandosi al suo babbo. – Il Pescecane dorme come un ghiro: il mare è tranquillo e ci si vede come di giorno. Venite dunque, babbino, dietro a me e fra poco saremo salvi. -Detto fatto, salirono su per la gola del mostro marino, e arrivati in quell’immensa bocca cominciarono a camminare in punta di piedi sulla lingua; una lingua così larga e così lunga, che pareva il viottolone d’un giardino. E già stavano lì lì per fare il gran salto e per gettarsi a nuoto nel mare, quando, sul più bello, il Pesce-cane starnutì, e nello starnutire, dette uno scossone così violento, che Pinocchio e Geppetto si trovarono rimbalzati all’indietro e scaraventati novamente in fondo allo stomaco del mostro. -Nel grand’urto della caduta la candela si spense, e padre e figliuolo rimasero al buio. -– E ora?... – domandò Pinocchio facendosi serio. -– Ora ragazzo mio, siamo bell’e perduti. -– Perché perduti? Datemi la mano, babbino, e badate di non sdrucciolare!... -– Dove mi conduci? -– Dobbiamo ritentare la fuga. Venite con me e non abbiate paura. -Ciò detto, Pinocchio prese il suo babbo per la mano: e camminando sempre in punta di piedi, risalirono insieme su per la gola del mostro: poi traversarono tutta la lingua e scavalcarono i tre filari di denti. Prima però di fare il gran salto, il burattino disse al suo babbo: -– Montatemi a cavalluccio sulle spalle e abbracciatemi forte forte. Al resto ci penso io. -Appena Geppetto si fu accomodato per bene sulle spalle del figliuolo, Pinocchio, sicurissimo del fatto suo, si gettò nell’acqua e cominciò a nuotare. Il mare era tranquillo come un olio: la luna splendeva in tutto il suo chiarore e il Pesce-cane seguitava a dormire di un sonno così profondo, che non l’avrebbe svegliato nemmeno una cannonata. - -XXXVI Finalmente Pinocchio cessa d’essere un burattino e diventa un ragazzo. - -Mentre Pinocchio nuotava alla svelta per raggiungere la spiaggia, si accorse che il suo babbo, il quale gli stava a cavalluccio sulle spalle e aveva le gambe mezze nell’acqua, tremava fitto fitto, come se al pover’uomo gli battesse la febbre terzana. -Tremava di freddo o di paura? Chi lo sa? Forse un po’ dell’uno e un po’ dell’altro. Ma Pinocchio, credendo che quel tremito fosse di paura, gli disse per confortarlo: -– Coraggio babbo! Fra pochi minuti arriveremo a terra e saremo salvi. -– Ma dov’è questa spiaggia benedetta? – domandò il vecchietto diventando sempre più inquieto, e appuntando gli occhi, come fanno i sarti quando infilano l’ago. – Eccomi qui, che guardo da tutte le parti, e non vedo altro che cielo e mare. -– Ma io vedo anche la spiaggia, – disse il burattino. – Per vostra regola io sono come i gatti: ci vedo meglio di notte che di giorno. -Il povero Pinocchio faceva finta di essere di buonumore: ma invece... Invece cominciava a scoraggiarsi: le forze gli scemavano, il suo respiro diventava grosso e affannoso... insomma non ne poteva più, la spiaggia era sempre lontana. -Nuotò finché ebbe fiato: poi si voltò col capo verso Geppetto, e disse con parole interrotte: -– Babbo mio, aiutatemi... perché io muoio! -E il padre e il figliuolo erano oramai sul punto di affogare, quando udirono una voce di chitarra scordata che disse: -– Chi è che muore? -– Sono io e il mio povero babbo!... -– Questa voce la riconosco! Tu sei Pinocchio!... -– Preciso: e tu? -– Io sono il Tonno, il tuo compagno di prigionia in corpo al Pesce-cane. -– E come hai fatto a scappare? -– Ho imitato il tuo esempio. Tu sei quello che mi hai insegnato la strada, e dopo te, sono fuggito anch’io. -– Tonno mio, tu càpiti proprio a tempo! Ti prego per l’amor che porti ai Tonnini tuoi figliuoli: aiutaci, o siamo perduti. -– Volentieri e con tutto il cuore. Attaccatevi tutt’e due alla mia coda, e lasciatevi guidare. In quattro minuti vi condurrò alla riva. -Geppetto e Pinocchio, come potete immaginarvelo accettarono subito l’invito: ma invece di attaccarsi alla coda, giudicarono più comodo di mettersi addirittura a sedere sulla groppa del Tonno. -– Siamo troppo pesi?... – gli domandò Pinocchio. -– Pesi? Neanche per ombra; mi par di avere addosso due gusci di conchiglia, – rispose il Tonno, il quale era di una corporatura così grossa e robusta, da parere un vitello di due anni. -Giunti alla riva, Pinocchio saltò a terra il primo, per aiutare il suo babbo a fare altrettanto; poi si voltò al Tonno, e con voce commossa gli disse: -– Amico mio, tu hai salvato il mio babbo! Dunque non ho parole per ringraziarti abbastanza! Permetti almeno che ti dia un bacio in segno di riconoscenza eterna!... -Il Tonno cacciò il muso fuori dall’acqua, e Pinocchio, piegandosi coi ginocchi a terra, gli posò un affettuosissimo bacio sulla bocca. A questo tratto di spontanea e vivissima tenerezza, il povero Tonno, che non c’era avvezzo, si sentì talmente commosso, che vergognandosi a farsi veder piangere come un bambino, ricacciò il capo sott’acqua e sparì. -Intanto s’era fatto giorno. -Allora Pinocchio, offrendo il suo braccio a Geppetto, che aveva appena il fiato di reggersi in piedi, gli disse: -– Appoggiatevi pure al mio braccio, caro babbino, e andiamo. Cammineremo pian pianino come le formicole, e quando saremo stanchi ci riposeremo lungo la via. -– E dove dobbiamo andare? – domandò Geppetto. -– In cerca di una casa o d’una capanna, dove ci diano per carità un boccon di pane e un po’ di paglia che ci serva da letto. -Non avevano ancora fatti cento passi, che videro seduti sul ciglione della strada due brutti ceffi, i quali stavano lì in atto di chiedere l’elemosina. -Erano il Gatto e la Volpe: ma non si riconoscevano più da quelli d’una volta. Figuratevi che il Gatto, a furia di fingersi cieco, aveva finito coll’accecare davvero: e la Volpe invecchiata, intignata e tutta perduta da una parte, non aveva più nemmeno la coda. Così è. Quella trista ladracchiola, caduta nella più squallida miseria, si trovò costretta un bel giorno a vendere perfino la sua bellissima coda a un merciaio ambulante, che la comprò per farsene uno scacciamosche. -– O Pinocchio, – gridò la Volpe con voce di piagnisteo, – fai un po’ di carità a questi due poveri infermi. -– Infermi! – ripeté il Gatto. -– Addio, mascherine! – rispose il burattino. – Mi avete ingannato una volta, e ora non mi ripigliate più. -– Credilo, Pinocchio, che oggi siamo poveri e disgraziati davvero! -– Davvero! – ripeté il Gatto. -– Se siete poveri, ve lo meritate. Ricordatevi del proverbio che dice: «I quattrini rubati non fanno mai frutto». Addio, mascherine! -– Abbi compassione di noi!... -– Di noi!... -– Addio, mascherine! Ricordatevi del proverbio che dice: «La farina del diavolo va tutta in crusca». -– Non ci abbandonare!... -– ...are! - ripeté il Gatto. -– Addio, mascherine! Ricordatevi del proverbio che dice: «Chi ruba il mantello al suo prossimo, per il solito muore senza camicia». -E così dicendo, Pinocchio e Geppetto seguitarono tranquillamente per la loro strada: finché, fatti altri cento passi, videro in fondo a una viottola in mezzo ai campi una bella capanna tutta di paglia, e col tetto coperto d’embrici e di mattoni. -– Quella capanna dev’essere abitata da qualcuno, – disse Pinocchio. – Andiamo là e bussiamo. -Difatti andarono, e bussarono alla porta. -– Chi è? – disse una vocina di dentro. -– Siamo un povero babbo e un povero figliuolo, senza pane e senza tetto, – rispose il burattino. -– Girate la chiave, e la porta si aprirà, – disse la solita vocina. -Pinocchio girò la chiave, e la porta si apri. Appena entrati dentro, guardarono di qua, guardarono di là, e non videro nessuno. -– O il padrone della capanna dov’è? – disse Pinocchio maravigliato. -– Eccomi quassù! -Babbo e figliuolo si voltarono subito verso il soffitto, e videro sopra un travicello il Grillo-parlante: -– Oh! mio caro Grillino, – disse Pinocchio salutandolo garbatamente. -– Ora mi chiami il «tuo caro Grillino», non è vero? Ma ti rammenti di quando, per scacciarmi di casa tua, mi tirasti un martello di legno?... -– Hai ragione, Grillino! Scaccia anche me... tira anche a me un martello di legno: ma abbi pietà del mio povero babbo... -– Io avrò pietà del babbo e anche del figliuolo: ma ho voluto rammentarti il brutto garbo ricevuto, per insegnarti che in questo mondo, quando si può, bisogna mostrarsi cortesi con tutti, se vogliamo esser ricambiati con pari cortesia nei giorni del bisogno. -– Hai ragione, Grillino, hai ragione da vendere e io terrò a mente la lezione che mi hai data. Ma mi dici come hai fatto a comprarti questa bella capanna? -– Questa capanna mi è stata regalata ieri da una graziosa capra, che aveva la lana d’un bellissimo colore turchino. -– E la capra dov’è andata? – domandò Pinocchio con vivissima curiosità. -– Non lo so. -– E quando ritornerà?... -– Non ritornerà mai. Ieri è partita tutta afflitta, e, belando, pareva che dicesse: “Povero Pinocchio... oramai non lo rivedrò più... il Pesce-cane a quest’ora l’avrà bell’e divorato!...”. -– Ha detto proprio così?... Dunque era lei!... Era lei!... era la mia cara Fatina!... – cominciò a urlare Pinocchio, singhiozzando e piangendo dirottamente. -Quand’ebbe pianto ben bene, si rasciugò gli occhi e, preparato un buon lettino di paglia, vi distese sopra il vecchio Geppetto. Poi domandò al Grillo-parlante: -– Dimmi, Grillino: dove potrei trovare un bicchiere di latte per il mio povero babbo? -– Tre campi distante di qui c’è l’ortolano Giangio, che tiene le mucche. Và da lui e troverai il latte, che cerchi. -Pinocchio andò di corsa a casa dell’ortolano Giangio; ma l’ortolano gli disse: -– Quanto ne vuoi del latte? -– Ne voglio un bicchiere pieno. -– Un bicchiere di latte costa un soldo. Comincia intanto dal darmi il soldo. -– Non ho nemmeno un centesimo, – rispose Pinocchio tutto mortificato e dolente. -– Male, burattino mio, – replicò l’ortolano. – Se tu non hai nemmeno un centesimo, io non ho nemmeno un dito di latte. -– Pazienza! – disse Pinocchio e fece l’atto di andarsene. -– Aspetta un po’, – disse Giangio. – Fra te e me ci possiamo accomodare. Vuoi adattarti a girare il bindolo? -– Che cos’è il bindolo? -– Gli è quell’ordigno di legno, che serve a tirar su l’acqua dalla cisterna, per annaffiare gli ortaggi. -– Mi proverò... -– Dunque, tirami su cento secchie d’acqua e io ti regalerò in compenso un bicchiere di latte. -– Sta bene. -Giangio condusse il burattino nell’orto e gl’insegnò la maniera di girare il bindolo. Pinocchio si pose subito al lavoro; ma prima di aver tirato su le cento secchie d’acqua, era tutto grondante di sudore dalla testa ai piedi. Una fatica a quel modo non l’aveva durata mai. -– Finora questa fatica di girare il bindolo, – disse l’ortolano, – l’ho fatta fare al mio ciuchino: ma oggi quel povero animale è in fin di vita. -– Mi menate a vederlo? – disse Pinocchio. -– Volentieri. -Appena che Pinocchio fu entrato nella stalla vide un bel ciuchino disteso sulla paglia, rifinito dalla fame e dal troppo lavoro. -Quando l’ebbe guardato fisso fisso, disse dentro di sé, turbandosi: -– Eppure quel ciuchino lo conosco! Non mi è fisonomia nuova! -E chinatosi fino a lui, gli domandò in dialetto asinino: -– Chi sei? -A questa domanda, il ciuchino apri gli occhi moribondi, e rispose balbettando nel medesimo dialetto: -– Sono Lu...ci...gno...lo. -E dopo richiuse gli occhi e spirò. -– Oh! povero Lucignolo! – disse Pinocchio a mezza voce: e presa una manciata di paglia, si rasciugò una lacrima che gli colava giù per il viso. -– Ti commovi tanto per un asino che non ti costa nulla? – disse l’ortolano. – Che cosa dovrei far io che lo comprai a quattrini contanti? -– Vi dirò... era un mio amico!... -– Tuo amico? -– Un mio compagno di scuola!... -– Come?! – urlò Giangio dando in una gran risata. – Come?! avevi dei somari per compagni di scuola!... Figuriamoci i belli studi che devi aver fatto!... -Il burattino, sentendosi mortificato da quelle parole, non rispose: ma prese il suo bicchiere di latte quasi caldo, e se ne tornò alla capanna. -E da quel giorno in poi, continuò più di cinque mesi a levarsi ogni mattina, prima dell’alba, per andare a girare il bindolo, e guadagnare così quel bicchiere di latte, che faceva tanto bene alla salute cagionosa del suo babbo. Né si contentò di questo: perché a tempo avanzato, imparò a fabbricare anche i canestri e i panieri di giunco: e coi quattrini che ne ricavava, provvedeva con moltissimo giudizio a tutte le spese giornaliere. Fra le altre cose, costruì da sé stesso un elegante carrettino per condurre a spasso il suo babbo alle belle giornate, e per fargli prendere una boccata d’aria. -Nelle veglie poi della sera, si esercitava a leggere e a scrivere. Aveva comprato nel vicino paese per pochi centesimi un grosso libro, al quale mancavano il frontespizio e l’indice, e con quello faceva la sua lettura. Quanto allo scrivere, si serviva di un fuscello temperato a uso penna; e non avendo né calamaio né inchiostro, lo intingeva in una boccettina ripiena di sugo di more e di ciliege. -Fatto sta, che con la sua buona volontà d’ingegnarsi, di lavorare e di tirarsi avanti, non solo era riuscito a mantenere quasi agiatamente il suo genitore sempre malaticcio, ma per di più aveva potuto mettere da parte anche quaranta soldi per comprarsi un vestitino nuovo. -Una mattina disse a suo padre: -– Vado qui al mercato vicino, a comprarmi una giacchettina, un berrettino e un paio di scarpe. Quando tornerò a casa, – soggiunse ridendo, – sarò vestito così bene, che mi scambierete per un gran signore. -E uscito di casa, cominciò a correre tutto allegro e contento. Quando a un tratto sentì chiamarsi per nome: e voltandosi, vide una bella Lumaca che sbucava fuori della siepe. -– Non mi riconosci? – disse la Lumaca. -– Mi pare e non mi pare... -– Non ti ricordi di quella Lumaca, che stava per cameriera con la Fata dai capelli turchini? Non ti rammenti di quella volta, quando scesi a farti lume e che tu rimanesti con un piede confitto nell’uscio di casa? -– Mi rammento di tutto, – gridò Pinocchio. – Rispondimi subito, Lumachina bella: dove hai lasciato la mia buona Fata? Che fa? Mi ha perdonato? Si ricorda sempre di me? Mi vuol sempre bene? È molto lontana da qui? Potrei andare a trovarla? -A tutte queste domande fatte precipitosamente e senza ripigliar fiato, la Lumaca rispose con la sua solita flemma: -– Pinocchio mio! La povera Fata giace in un fondo di letto allo spedale!... -– Allo spedale?... -– Pur troppo! Colpita da mille disgrazie, si è gravemente ammalata e non ha più da comprarsi un boccon di pane. -– Davvero?... Oh! Che gran dolore che mi hai dato! Oh! povera Fatina! Povera Fatina! Povera Fatina!... Se avessi un milione, correrei a portarglielo... Ma io non ho che quaranta soldi... eccoli qui: andavo giusto a comprarmi un vestito nuovo. Prendili, Lumaca, e và a portarli subito alla mia buona Fata. -– E il tuo vestito nuovo?... -– Che m’importa del vestito nuovo? Venderei anche questi cenci che ho addosso, per poterla aiutare! Và, Lumaca, spìcciati: e fra due giorni ritorna qui, che spero di poterti dare qualche altro soldo. Finora ho lavorato per mantenere il mio babbo: da oggi in là, lavorerò cinque ore di più per mantenere anche la mia buona mamma. Addio, Lumaca, e fra due giorni ti aspetto. -La Lumaca, contro il suo costume, cominciò a correre come una lucertola nei grandi solleoni d’agosto. -Quando Pinocchio tornò a casa, il suo babbo gli domandò: -– E il vestito nuovo? -– Non m’è stato possibile di trovarne uno che mi tornasse bene. Pazienza!... Lo comprerò un’altra volta. -Quella sera Pinocchio, invece di vegliare fino alle dieci, vegliò fino alla mezzanotte suonata; e invece di far otto canestre di giunco ne fece sedici. -Poi andò a letto e si addormentò. E nel dormire, gli parve di vedere in sogno la Fata, tutta bella e sorridente, la quale, dopo avergli dato un bacio, gli disse così. -– Bravo Pinocchio! In grazia del tuo buon cuore, io ti perdono tutte le monellerie che hai fatto fino a oggi. I ragazzi che assistono amorosamente i propri genitori nelle loro miserie e nelle loro infermità, meritano sempre gran lode e grande affetto, anche se non possono esser citati come modelli d’ubbidienza e di buona condotta. Metti giudizio per l’avvenire, e sarai felice. -A questo punto il sogno finì, e Pinocchio si svegliò con tanto d’occhi spalancati. -Ora immaginatevi voi quale fu la sua maraviglia quando, svegliandosi, si accorse che non era più un burattino di legno: ma che era diventato, invece, un ragazzo come tutti gli altri. Dette un’occhiata all’intorno e invece delle solite pareti di paglia della capanna, vide una bella camerina ammobiliata e agghindata con una semplicità quasi elegante. Saltando giù dal letto, trovò preparato un bel vestiario nuovo, un berretto nuovo e un paio di stivaletti di pelle, che gli tornavano una vera pittura. -Appena si fu vestito gli venne fatto naturalmente di mettere la mani nelle tasche e tirò fuori un piccolo portamonete d’avorio, sul quale erano scritte queste parole: «La Fata dai capelli turchini restituisce al suo caro Pinocchio i quaranta soldi e lo ringrazia tanto del suo buon cuore». Aperto il portamonete, invece dei quaranta soldi di rame, vi luccicavano quaranta zecchini d’oro, tutti nuovi di zecca. -Dopo andò a guardarsi allo specchio, e gli parve d’essere un altro. Non vide più riflessa la solita immagine della marionetta di legno, ma vide l’immagine vispa e intelligente di un bel fanciullo coi capelli castagni, cogli occhi celesti e con un’aria allegra e festosa come una pasqua di rose. -In mezzo a tutte queste meraviglie, che si succedevano le une alle altre, Pinocchio non sapeva più nemmeno lui se era desto davvero o se sognava sempre a occhi aperti. -– E il mio babbo dov’è? – gridò tutt’a un tratto: ed entrato nella stanza accanto trovò il vecchio Geppetto sano, arzillo e di buonumore, come una volta, il quale, avendo ripreso subito la sua professione d’intagliatore in legno, stava appunto disegnando una bellissima cornice ricca di fogliami, di fiori e di testine di diversi animali. -– Levatemi una curiosità, babbino: ma come si spiega tutto questo cambiamento improvviso? – gli domandò Pinocchio saltandogli al collo e coprendolo di baci. -– Questo improvviso cambiamento in casa nostra è tutto merito tuo, – disse Geppetto. -– Perché merito mio?... -– Perché quando i ragazzi, di cattivi diventano buoni, hanno la virtù di far prendere un aspetto nuovo e sorridente anche all’interno delle loro famiglie. -– E il vecchio Pinocchio di legno dove si sarà nascosto? -– Eccolo là, – rispose Geppetto; e gli accennò un grosso burattino appoggiato a una seggiola, col capo girato sur una parte, con le braccia ciondoloni e con le gambe incrocicchiate e ripiegate a mezzo, da parere un miracolo se stava ritto. -Pinocchio si voltò a guardarlo; e dopo che l’ebbe guardato un poco, disse dentro di sé con grandissima compiacenza: -– Com’ero buffo, quand’ero un burattino!... e come ora son contento di essere diventato un ragazzino perbene!... -Fine. +I. + + +Era la notte dal 12 al 13 di gennaio 1857, e per la via Assarotti, a +Genova, soffiava un vento come suole soffiare in quest'ampia via, +quando Eolo scatena uno de' suoi sudditi sulla regina del Tirreno. + +È tramontana? è scirocco? è libeccio? Non ne sapete nulla. Esce, non +si sa da dove, e v'investe da tutte le parti. Guai allo scribacchino +municipale che si lascia cogliere ad occhi aperti, perchè risica di +andare a palazzo Tursi colla polvere negli occhi, di non veder più lo +scrittoio e di dover chiedere una licenza di ventiquattr'ore, che il +capo uffizio non è sempre disposto a concedere! Guai alla signora, che +non sta attenta a raccogliersi la veste dattorno, perchè il vento è +curioso di segreti e, quel che è peggio, ama troppo di propalarli ai +viandanti. + +Ma perchè sto io a discorrervi del vento? La storia che vi racconto +non occorre in mezzo alla strada, ma in un elegante quartierino al +terzo piano del secondo palazzo a sinistra. + +Abita colassù, cioè, dico male, abitava nel gennaio 1857 il +protagonista del mio racconto, uomo sui trentaquattro, laureato in +leggi, scapolo, non brutto, nè antipatico, e con ventimila lire +d'entrata. + +Trentaquattro anni son forse troppi; la laurea in leggi non è nulla; +ma l'essere scapolo, non brutto nè antipatico, e l'avere ventimila +lire d'entrata, è già molto per esser felici, quando si abbiano +desiderii modesti. + +Pure, Roberto Fenoglio non era felice; si annoiava da mattina a sera, +da sera a mattina. Aveva buoni e gioviali amici, ai quali imprestava +spesso del denaro, e che qualche volta glielo restituivano; una +vecchia governante che non gli dava molestia; un cuoco che non lo +derubava; un cavallo proverbiale per la dolcezza del suo trotto; uno +scanno a teatro senza noiosi vicini; e tuttavia non era felice, e si +annoiava maledettamente. + +Aveva provato a fare qualcosa, ad occuparsi; ma nessuna occupazione +gli andava a' versi, e a breve andare se n'era stancato. Ma queste +cose le mie belle lettrici le udranno dalla sua bocca, imperocchè io +lo presento loro nel primo salotto del suo quartierino, alle tre dopo +mezzanotte, vestito da cinese, in atto di congedare uno sciame di +giovinotti e di allegre mascherine. + +Perchè vestito da cinese? perchè quelle mascherine? + +Roberto Fenoglio aveva raccolto in casa sua quella sera tutti i suoi +amici, tanto per passar la noia in compagnia. S'era suonato, ballato e +cenato, colla massima libertà ed allegrezza. Le dame non erano severe, +nè contegnose. Il rispettabile corpo di ballo del teatro Carlo Felice +aveva dato il suo meglio a quella festa; le mammine erano sazie e +contente; le silfidi, contente e non sazie, domandavano un'altra festa +come quella che Roberto Fenoglio aveva dato loro, con tanta +splendidezza di mandarino annoiato. + +Le allegre mascherine se ne andavano, accompagnate dai fidi cavalieri, +ben chiuse nei loro accappatoi, per custodirsi dal vento, che si udia +zufolare di fuori; se ne andavano giù per le scale, ridendo e +cinguettando come uno stuolo di passere, o di cingallegre, e destando +tutto il pacifico vicinato. + +Il tranquillo berretto di cotone si rizzava commosso dalla +rimboccatura del letto matrimoniale, e chiedeva: + +--Che cos'è quest'allegro rumore? Ah, capisco; si balla dall'avvocato +Fenoglio. + +E un sospiro mal represso chiudeva la frase. E lì, una cuffia lavorata +all'uncinetto si rizzava a sua volta, per soggiungere: + +--Ma come fa l'avvocato Fenoglio a dar delle feste da ballo, egli che +non è ammogliato? Quali signore possono andare in casa sua? + +Domanda, questa, a cui il berretto di cotone non rispondeva, e si +voltava dall'altro lato, tirandosi la rimboccatura del lenzuolo fin +sopra il becchetto. + +La cuffia intanto pensava, pensava.... che cosa pensava? forse, che il +berretto di cotone non era la più bella cosa del mondo. E il berretto +di cotone, dal canto suo, fantasticava una serie di variazioni su +questo tema: «beato Fenoglio! egli l'ha indovinata davvero!» + +Lasciamo pensare, fantasticare e riaddormentarsi da capo questi due +malinconici simboli dell'Imeneo, e torniamo al nostro protagonista, +che, ritto nel salotto, si volgeva a Felice Magnasco, ultimo rimasto +de' suoi convitati, per dirgli, con piglio di burlesca cerimonia +cinese: + +--_A-ing-fo-hi_! + +Felice Magnasco, un giovinotto elegante ed attillato, come ogni figlio +d'Adamo che usi farsi vestire (o spogliare) da un sarto di grido, +diede una crollata di spalle, che fece far due grinze al suo abito +nero, e rispose: + +--Orvia! Gli è così che tu accomiati il tuo amico migliore? + +--Sto in carattere,--soggiunse Fenoglio.--Non ti pare che io sia un +bel mandarino cinese? + +--Al diavolo la Cina!--proruppe l'altro,--io preferisco la tua cena. + +--Oh bello, bello, stupendo! Ripetilo, Felice, te ne prego. + +--Che cosa? + +--Il tuo bisticcio. Sai che amo i bisticci, come tu le bistecche.... +Ah, ah! che te ne pare del mio? Gli è un po' stiracchiato, come le mie +braccia, tutta questa sera, per effetto della noia. + +--Tu sei dunque annoiato? + +--Sì, Felicino, pur troppo; il figlio della luna, il cugino del sole, +s'è maledettamente annoiato. + +--Male! io mi son divertito. È vero che le spese non le ho fatte io, e +piacere che non sente il rame è pretto piacere. Che ottima cena! Viva +te, Roberto primo ed unico della tua dinastia! Viva il tuo vino, i +tuoi tartufi! e le tue _bajadere_. Che vispe ragazze! Oh non sai tu, +che, se non era il pensiero della mia bella cugina, io questa sera ne +sposavo una, senza tanti preamboli? + +--Ti ringrazio per lei della tua buona intenzione,--rispose, +spalancando le fauci e tendendo le braccia, il buon mandarino,--e ti +ringrazio per me, se non sei costretto a sbadigliare, come io faccio +in questo punto per la millesima volta. + +--Ma che diamine ti saltò in mente di vestirti a quel modo e di +costringerti a non metter fuori che cinque o sei monosillabi? + +--Compatiscimi, Felicino! Ho pensato che, essendo i cinesi il popolo +più cerimonioso del mondo, io, come cerimoniere di casa mia, non +potevo fare a meno di vestirmi da mandarino. Ora tu m'hai veduto ed +udito; non ho fatto altro che dire _A-ing-fo-hi_, che in cinese, io +credo, significa: son molto lieto di vedervi. + +--E i tuoi convitati,--soggiunse ridendo Felice,--ti hanno trovato +compitissimo.-- + +Roberto Fenoglio si lasciò cadere con aria stanca sul canapè. + +--Tu mi consoli, amico!--diss'egli, dopo un lungo sospiro.--Morrò +almeno contento dell'altrui contentezza. + +--Che diamine dici? Sei tu pazzo ora? + +--No, parlo da senno e del miglior ch'io m'abbia. Sentimi, Felice; io +non posso più tirare innanzi questa monotona vita. Io non faccio un +passo senza che il piede medesimo si annoi d'esser mosso. + +--Ecco una variante del _Malade imaginaire_!--esclamò Felice, in +quella che andava a sedersi comodamente in una poltrona, di rincontro +a Roberto Fenoglio. + +Questi non badò all'atto di Felice, intento com'era a rispondergli. + +--Ah sì, in tal guisa parlano i sani agli infermi. Anch'io, al +capezzale di un tisico, gli ho detto un giorno: ma che diamine parlate +voi di morire? Avete le guancie colorite come una mela. E dieci giorni +dopo era morto. + +--Dilla su dunque una volta, questa tua malattia, ed io farò di +trovarti un buon medico. + +--Ah ci vuol altro che un medico! La scienza non conosce il mio male, +non lo ha classificato ancora ne' suoi libri; ma esso esiste, esso è +là dentro. + +--Dove? + +--In quell'orologio a pendolo. Esso ne è il simbolo parlante, esso il +complice infame. Non odi? tran.... tran.... tran.... Maledetto! È lui +che ci misura la vita e ce la fa mandar giù in ventiquattro pillole al +giorno; è lui l'omeopatico che ci tiene a bada con sessantesimi d'ora, +con sessantesimi di minuto, e ci fa morire con dosi infinitesime; è +lui.... Insomma, che ti dirò? Io odio gli orologi. Giovinetto ancora, +io già presentivo la guerra che m'avrebbero mossa questi nemici +dell'umanità, e mi vendicavo, anticipatamente, mandandoli, l'un dopo +l'altro, al Monte di pietà. Adesso, si è uomini sodi, padroni di sè e +delle sue ventimila lire d'entrata, e queste vendette bisogna +lasciarle in disparte. Ma io troverò pure uno spediente; metterò, non +foss'altro, un premio di mille lire per colui che scriverà un libro +contro gli orologi, da camera e da tasca, pendoli, cronometri, +ripetizioni, cilindri, saponette, áncore, castelli, ecc., ecc., e +proverà che il loro inventore è stato un cattivo arnese.... un +briccone.-- + +In quella che l'avvocato Fenoglio tirava giù con burlesca gravità +contro i poveri orologi, Felice aveva cavato il suo dalla tasca del +pianciotto e ne faceva scattare il coperchio d'oro. + +--O il tuo va male, o il mio;--disse egli.--Son già le tre e mezzo del +mattino, e debbo ancora chiederti un servizio innanzi di andarmene.-- + +Ma Fenoglio non gli dava retta; aveva veduto l'oriuolo di Felice e +volea rompergli una lancia addosso. + +--Ah, _tu quoque, Brute_? E tu sei un uomo che si diverte? col nemico +in saccoccia? + +--Che vuoi? è la consuetudine. E poi, non si è mica schiavi del +proprio orologio! Il mio, come quello di tutti i figli di Adamo, va +bene una volta all'anno. Io lo consulto per passatempo; egli fa a modo +suo, io al mio, e andiamo d'accordo come marito e moglie. Ma tu, +piuttosto, perchè non rompi il tuo, e non te lo levi dai piedi? + +--Bravo! e la gente di servizio? Esso è in casa un arnese necessario, +fatale, come la noia per me; il suo _tran tran_ ha dato la misura al +tran tran della mia esistenza. Rompessi anche il pendolo, la mia vita +monotona suonerebbe, io credo, le ore e i quarti d'ora in vece sua. Oh +Felice, felice te che non ti annoi! + +--E non mi avverrà mai fin ch'io viva:--rispose Magnasco;--io ho per +cotesto un segreto infallibile. + +--Dove si vende? ch'io vo subito a comperarlo, senza nemmanco levarmi +questa zimarra di dosso.... + +--Oh, non tanta furia! Tu non hai bisogno di andare dallo speziale per +questo. Fa a modo mio; abbandonati all'ignoto. Non chiedere mai a te +stesso: «che cosa debbo io fare quest'oggi, per passar mattana?» Vedi, +Fenoglio; io non mi sono mai così divertito, come un giorno che uscii +di casa nell'intento di annoiarmi. Lascia operare il caso. Passi per +una strada? Non isvoltare alla solita cantonata; va innanzi. Là +troverai quell'amico che andavi cercando al caffè, e che, svoltando +alla cantonata anzidetta, non avresti trovato di certo. Là vedrai una +bella merciaia, che ti venderà un fazzoletto, mezzo seta e mezzo +cotone, che regalerai poscia alla cameriera della tua bella, col +risparmio di tre lire. Là vedrai una sconosciuta; la seguirai, e ti +buscherai un dolce sorriso da lei, o un duello coll'amante; le quali +cose ti condurranno in un altro ordine di pensieri e di conoscenze, +che tu non avevi, uscendo di casa, e che potranno anche mutare del +tutto il tuo sistema di vita. Insomma, non ragionare innanzi di fare, +ragiona dopo; non andar colla testa, ma coi piedi; fa conto insomma di +giuocare a mosca cieca. + +--Ma....--soggiunse Roberto Fenoglio,--e se dò del naso in qualche +spigolo?.... + +--Gli è,--rispose gravemente Magnasco,--uno tra gli sconci di questa +teorica, per altro bellissima. + +--Orbene, mi proverò;--disse Roberto. E intanto si stiracchiava sul +canapè, sbadigliando di bel nuovo. + +Felice se ne avvide e fu sollecito ad alzarsi. + +--Il tuo sbadiglio,--diss'egli,--mi prova che debbo partire. Diamine! +le quattro suonate! Ed io già avevo dimenticato lo scopo della mia +fermata! Fenoglio, sai? debbo chiederti un servigio.... + +--_In manus tuas, domine._ Ti occorre denaro? Bada che non potrei oggi +imprestarti più di duemila lire. + +--Che! non ho bisogno di denaro, sibbene di un servigio assai più +rilevante e più delicato. + +--Un duello? + +--Quasi; vo' prender moglie. + +--Ah, per tutti i diavoli! _e come e quando nacque tal fiamma in te!_ + +--La storia sarebbe troppo lunga a raccontarsi ora,--rispose +Magnasco,--ed io ho bisogno di riposare almanco tre ore, innanzi di +tornare da te. + +--Tornare! ma come? perchè? + +--Eccoti il negozio in poche parole. Io ho una cugina.... + +--La vedova? + +--Per l'appunto; la conosci forse? + +--No, in fede mia; me ne hai parlato tu stesso qualche volta, e ancora +poco fa, mi dicevi.... + +--È giusto, vedi che bestia! Or dunque, mia cugina, la vedova, è una +crudele quanto adorata beltà, e quando io le parlo di amore, ella si +mette a ridere. Io le accenno cori, ed ella mi risponde picche. + +--Che c'entro io nel vostro _tresette_? + +--Tu puoi venire da lei; le ho già parlato di te, come d'uomo a modo, +rispettabile, assennato.... + +--Ti par proprio ch'io sia tutto ciò; Felicino? + +--Io ti presento a lei,--proseguì, senza turbarsi, Magnasco,--e tu +perori la mia causa; non subito, ci s'intende, ma a poco a poco, con +delicate entrature.... mi capisci? Colla tua parlantina di Cicerone, +puoi essermi molto utile. Le fai vedere che buon partito sarebbe per +lei sposare un giovane par mio, gentile di modi, dolce di umore, e +molto avveduto in materia d'interessi.... + +--E ti par proprio d'essere tutto ciò, Felicino?--chiese Roberto +Fenoglio. + +Felicino anche qui fece orecchie da mercante, e tirò innanzi nella sua +orazione. + +--Mia cugina è ricca, e il suo fattore la deruba a man salva, la +spoglia.... + +--Ah! codesto gli è grave!--interruppe Fenoglio,--spogliarla eziandio? +Questo è un cumulare gli uffici di fattore e di cameriera, e capisco +che, se la cugina è bella, siccome m'hai detto, ti spiacerà +maledettamente che altri faccia questo uffizio presso di lei. Ah, ah, +che te ne pare di questo? + +--È stiracchiato più degli altri;--rispose Felicino.--Ma dunque, vuoi +rendermi questo servigio? + +--Ci stavo appunto pensando. Tu vuoi far di me una specie di Barbiere +di Siviglia..... + +--Potresti supporre che....? + +--Altro che supporre! lo credo, lo vedo; ma non importa. Se pensi che +i miei talenti oratorî possano giovarti presso di lei.... Ah, +Felicino! io ero nato per essere oratore! Basta, ti servirò; tu mi hai +dato il tuo specifico contro la noia, io ti son debitore del +ricambio.... se pur lo sarà! A che ora si va da lei? + +--Sul mezzogiorno; ella è mattiniera come una allodola. Io dunque +verrò da te alle dieci: ti vesti, andiamo ad asciolvere insieme, e +poi, a piccoli passi, verso il tempio della diva. Addio, dunque, e +rammenta i miei consigli.... + +--Abbandonarsi all'ignoto....--disse Fenoglio. + +--Sicuro;--soggiunse Magnasco,--lasciare operare il caso.... + +--E ragionar co' piedi;--conchiuse l'altro.--Non dubitare, Felicino, +ti imiterò fedelmente, servilmente, e comincierò a ragionare in tal +guisa, facendo il tuo elogio alla bella cugina. + +--Se' arguto, per un mandarino! + +--_A-ing-fo-hi!_--rispose con piglio di umiltà reverente Roberto +Fenoglio,--_A-ing-fo-hi._ + +--Che in cinese significa.... + +--Amico, te ne ringrazio di cuore. + +--La si tira per tutti i versi, quella tua +frase.... + +--Ah, che vuoi? la è una delle prerogative della lingua cinese.-- + +E così, giostrando a sciocchezze, si separarono. + +--Stattene a tuo bell'agio sdraiato,--disse Felicino a Roberto, che +voleva alzarsi per accompagnarlo in anticamera:--conosco la strada; +tirerò l'uscio dietro di me. + +--_Fiat voluntas tua!_--rispose Roberto, a cui in quell'ora la +posizione orizzontale era dolce come a Magnasco il pensiero di sposar +sua cugina, o, per dir meglio, le sue cinquecento mila lire. + +Alle quali cose pensando, e al soccorso che gli avrebbe prestato +Fenoglio contro la ostinata resistenza della cuginesca cittadella, +Magnasco se ne andò col cuore contento e il piè leggiero. + +E andandosene, trasse l'uscio dietro a sè, siccome aveva detto a +Fenoglio; ma non badò punto a sincerarsi se la stanghetta della toppa +a sdrucciolo, che chiudeva la porta del suo amico, avesse battuto +nell'orlo della bocchetta, per modo da cacciarvisi dentro e chiuder +davvero. + +Oh dio Caso, eccone delle tue! + + + + +II. + + +Roberto Fenoglio, come vi ho detto, era rimasto sdraiato sul suo +canapè; un soffice canapè foderato di velluto, dal quale io, se ci +fossi stato, non mi sarei mosso neanco per andare a nozze, e metto +pegno non vi sareste mosso voi, cortese lettore, neanco per mandare a +comperare il libro che mi dà modo di ragionare con voi. + +L'annoiato mandarino stava fantasticando, tra la veglia e il sonno, +intorno ai consigli di Felice Magnasco. + +--Vedete mo che ingegno ha quel capo ameno di Felicino! Egli è giunto +a sciogliere un problema, pel quale io mi vo beccando da dodici anni +il cervello. Abbandonarsi all'ignoto, lasciar operare il dio Caso, +ragionare co' piedi, equivale a sfuggire il _tran tran_ della vita. +L'equazione è perfetta, e un matematico non ci troverebbe nulla a +ridire. Applichiamola dunque!... E prima di tutto, che cosa farò io +tra dieci minuti? che bestia! cominciavo a ragionare! non debbo, non +voglio sapere, che cosa farò tra dieci minuti.... Auf! che sonno! +andiamo a dormire; sarà la miglior cosa che io possa fare. Felicino +dovrà tornare stamane per condurmi dalla sua bella cugina, e non posso +andare da lei morto dal sonno. E da capo! No, io non debbo andare a +dormire; la è cosa troppo usuale; io ricasco nella consuetudine, e +questa io debbo sfuggirla ad ogni costo. Eccomi qui, su questo +canapè... Ci sono a caso.... Chi ardirebbe asserire che io non ci sono +per mero caso? Che cosa mi accadrà egli di nuovo su questo canapè? +L'ardua sentenza ai posteri. Che sonno! andrei volontieri a letto.... +Ma via, Fenoglio, non lasciarti così vilmente sopraffare dalla +ragione! Si direbbe che hai paura dell'ignoto. Chi è questo signor +ignoto?... È brutto o bello? E la cugina di Felice, è bella davvero +come ei la dipinge? O non l'ama piuttosto per le sue ricchezze? Già, +volere o non volere, il denaro si ficca sempre dappertutto. Diciamo di +no; sacramentiamo che non è vero; ma la ricchezza comanda agli occhi +del nostro corpo, come a quelli della nostra ragione.... Ma chi sa? +potrebbe anco esser bella, questa cugina!... + +Lettrici e lettori, io vi fo grazia di tutte le altre considerazioni +scucite del mio protagonista. La pigrizia, più assai de' consigli +dell'amico, lo aveva tenuto sul canapè, dove, pochi minuti dopo, egli +era rimasto assopito. + +Non vi giurerei che le copiose libazioni dello sciampagna spumante non +c'entrassero anch'esse per una larga porzione. Roberto Fenoglio era +uomo che non disprezzava punto il bicchiere, e quella notte, poi, in +mezzo ad una brigata di capi scarichi e di gaie alunne di Tersicore, +egli aveva pensato a dare il buon esempio, bevendo allegramente per +quattro. + +Dormi, Fenoglio; dormi, mandarino annoiato; il tuo sonno non vuole +durar molto. + +Imperocchè, voi già lo avete indovinato, belle lettrici e lettori +cortesi, io non lo lascierò solo sul suo canapè, e non prolungherò la +_scena muta_ oltre i confini della vostra pazienza. + +Venite con me verso l'uscio di casa. Non udite su per le scale un +muover di passi frettolosi e leggieri? Non abbiate timore di ladri; +insieme co' passi, s'ode il fruscìo di una veste di seta. + +Chi è questa donna che sale, o, per dir meglio, che vola, sfiorando +appena del piede e del lembo della sua veste gli scalini, e si ferma, +si rannicchia spaurita, tremante, ansante, sul pianerottolo, vicino +all'uscio semichiuso di Roberto Fenoglio? + +Aspettate, e lo saprete. La bella incognita (imperocchè essa è bella, +ed io già lo so, quantunque siamo tuttavia al buio), la bella +incognita, dico, rattiene colassù la sua corsa, e raccolte intorno a +sè le larghe pieghe del suo accappatoio di seta, tende l'orecchio per +cogliere ogni più lieve rumore che possa giungere dal basso. Non ode +nulla, e le si allarga il cuore; perciò, fattasi più animosa, si +attenta di sporgere il capo sulla ringhiera.... Ma ohimè! Appunto +allora comincia ad udirsi giù in fondo alle scale uno stropiccìo di +piedi, quindi un rumore confuso a cui tien dietro lo scoppiettìo di un +zolfanello strofinato su d'una ruvida superficie, e un raggio di luce +balena dal pozzo della scala. + +La povera bella si rannicchia da capo nel suo angolo, ma non istà +ferma al suo posto neppure un minuto secondo. + +--Dio mio! come fare?--ella mormora tra sè,--dove potrò salvarmi!-- + +Tremante, confusa, ella si avanza a tentoni, brancicando verso la +parete, come per cercare le imposte di un uscio; che certo ha da +trovarsi su quel pianerottolo. Ella suonerà, domanderà soccorso.... ma +giungeranno in tempo ad aprirle? Chi sa? intanto ella va cercando +colle mani il vano di quest'uscio e la corda del campanello, ma senza +pro. La sua manina leggiadra (io lo so, quantunque siamo al buio, e la +conoscerei tra mille), la sua manina leggiadra, dico, erra un tratto +nel vuoto, quindi urta in uno dei battenti dell'uscio; ed oh +maraviglia! il battente si apre da sè, e il pianerottolo si rischiara +d'un subito, all'interna luce dell'anticamera di Roberto Fenoglio. + +Benéfici effetti della trascuratezza di Felicino Magnasco, che non +aveva badato a far scorrere la stanghetta della toppa a sdrucciolo +nella sua rispettiva bocchetta! Oh caso, caso! E i filosofi verranno +poi a sostenere che esso non è l'ordinatore, anzi l'azzeccagarbugli +delle umane vicende? + +La povera bella fu, sulle prime, come sbigottita da quello aprirsi +improvviso dell'uscio, al semplice tocco delle sue dita. Quel +quartierino aperto, e in apparenza deserto, le metteva paura. Tremò +tutta dal capo alle piante, e si ritrasse fin presso la ringhiera. Ma +di là tornava ad udire il rumore dei passi, e al rumore dei passi si +mescolava il discorso di due persone che salivano, del qual discorso +giunse fino a lei spiccatamente una frase: _andiamo su, ella non ci +sfugge di certo_. E allora la poverina si fece animo, guardò in alto +come per chieder protezione dal Cielo innanzi di commettersi +nell'antro ignoto di quel quartierino, che si schiudeva luminoso a' +suoi occhi, e si buttò perduta nell'anticamera. La sala era deserta; +imperocchè l'unico servitore di genere mascolino che fosse in quella +casa, trattandosi di una festa un tal po' scapigliata, aveva avuto +licenza di andarsene a letto dopo l'ultima versata di sciampagna, e la +licenza gli era paruta un comando. La bella sconosciuta non ardì +nemmeno richiuder l'uscio; chè le sembrava di cadere di Scilla in +Cariddi, e non voleva precludersi la ritirata da un male peggiore. Si +inoltrò guardinga fino ad una portiera di seta azzurra; stette incerta +un tratto, quindi si provò a sollevarla dolcemente, sporse la sua +testolina nel vano, e le si parò davanti agli occhi lo spettacolo del +mandarino dormente. + +--Ah? Che vuol dir ciò?--chiese tra sè, con atto di meraviglia, la +sconosciuta visitatrice. Di maraviglia, notate, non di paura! + +Un uomo che dorme non fa paura ad una donna. Giaele, Giuditta, e tante +altre donne famose di quella risma, ne fanno testimonianza non dubbia. +La nostra sconosciuta, che non aveva nè chiodi di configger nelle +tempia a Sisara, nè testa da troncare ad Oloferne, e che però ci aveva +la coscienza tranquilla, dopo quel primo atto di meraviglia, compose +le labbra ad un sorriso; un bel sorriso, in fede mia, e che +illeggiadriva di molto le sue bellissime labbra. + +Essa era bella, mio candido lettore, bella quasi come voi, mia adorata +lettrice. Qui, poichè siamo alla luce dei doppieri (parlo in poesia, +ma in umile prosa bisognerebbe dire di una lucerna Carcel), cadrebbe +in acconcio uno scampolo di descrizione della sua ammirabile bellezza. +Ma siccome non ho tempo da perdere, lascio che ve ne formiate voi un +concetto colla fervida immaginazione, mio candido lettore, e che ve la +raffiguriate voi, guardandovi nello specchio, mia adorata lettrice. + +--Un cinese?--pensò la sconosciuta, guardando Fenoglio.--O dove +diamine son capitata? E nessun altro in questa casa.... non una donna +a cui volgermi.... E quei due che salgono le scale!... Dio mio che +faccie sinistre! E come mi correvano dietro! Ah! essi sono già qui, +sul pianerottolo.... urtano nell'uscio.... Ma io non l'ho chiuso, non +l'ho chiuso! E come fare adesso? Signore! signore!-- + +Ma sì, chiamalo, Roberto Fenoglio aveva legato l'asino a buona +caviglia, e non dava segno di volersi svegliare. + +Ella ripetè, collo stesso tono di voce sommessa con cui aveva +cominciato a chiamarlo: signore! signore! + +--_A-ing-fo-hi!_--borbottò nel sonno il bravo mandarino Fenoglio. + +Cotesto non era rispondere, siccome ognun vede. La povera bella, +sgomentata dal rumore che si faceva sul pianerottolo, ebbe ricorso ad +uno stratagemma simile a quello del fagiano quando tenta di +nascondersi agli occhi del cacciatore, ficcando la testa sotto un'ala; +buttò l'accappatoio sotto una poltrona, che stava di fianco al canapè +del mandarino, e si lasciò cadere su quella poltrona, rimanendovi +supina in atto di donna dormente. + +--Ohè, Piccione! una porta aperta.... + +--Vedo bene; la sarà entrata qua dentro, la fuggitiva. + +--Impossibile! Avrebbe badato a chiudere l'uscio dietro di sè. Qui c'è +un altro negozio.... un furto consumato.... + +--Ragione di più per entrare! + +--Sicuro, entriamo! + + + + +III. + + +Questo dialogo avveniva sul pianerottolo, tra i due persecutori della +bella sconosciuta, i quali non erano altrimenti due Adoni da +quadrivio, sibbene due sergenti di Questura, il Negri e il Piccione. + +Lo strepito dei loro passi mascolini nell'anticamera e il percuoter +delle loro daghe contro le masserizie, fecero quello che non aveva +potuto ottenere la vocina della sconosciuta; vo' dire che destarono +dal sonno l'avvocato Fenoglio, il quale balzò in piedi dal suo canapè, +e vedendo alzare la portiera di seta e un braccio e una gamba +introdursi nel salotto, urlò prontamente: _ai ladri!_ e diè di piglio +ad una sedia di Chiavari, per servirsene come di una mazza ferrata +contro gl'invasori del suo domicilio. + +--Si cheti, signore, si cheti!--disse il Negri facendosi innanzi.--Noi +non siamo ladri, nè gente che le voglia far del male. Guardi alla +nostra divisa.... Ma chi vedo? il signor avvocato.... + +--Roberto Fenoglio in carne ed ossa,--rispose Fenoglio, che a sua +volta aveva riconosciuto i sergenti;--ma che cosa vogliono le signorie +loro a quest'ora, in casa dei pacifici cittadini? + +--Oh, la ci scusi, signor avvocato. Aveva l'uscio +aperto.... + +--Amico mio,--disse una vocina sottile che fece balzare due passi +indietro il mio protagonista,--gli è stato di certo quel briccone di +Battista, che va a ciaramellare di notte colla cameriera del quinto +piano. Bisogna scacciarlo dal nostro servizio, non è egli vero? + +--Si certo, lo scaccieremo!--rispose Fenoglio. + +E intanto guardava, con aria da melenso, ora i sergenti, ora la +sconosciuta, che lo aveva chiamato «amico mio.» + +--Non vorremmo aver cagionata la disgrazia di un povero +servitore....--si provò a dire il Piccione. + +--Che! che!--ripigliò la signora.--È un fannullone, un che so io; non +è egli vero, Roberto? + +--Sì, un briccone, un ladro, un assassino!--soggiunse Fenoglio, il +quale non sapeva più quello che si dicesse. + +--Oh, in tal caso,--disse il Negri,--con licenza di Vossignoria, lo +arresteremo. + +--Sì, arrestatelo.... cioè, no, lasciatelo stare, povero diavolo! Son +questi i miei modi di dire.... io non uso chiamare con altri nomi la +mia gente di servizio.... + +--Egli bisogna tuttavia che tu gli tolga questo mal vezzo, Roberto +mio!--disse la donna, mettendo con leggiadra dimestichezza il suo +braccio sotto quello di Roberto Fenoglio.--Dimmi, non è egli vero che +tu contenterai in ogni cosa tua moglie?-- + +Fenoglio aveva l'aria di cader dalle nuvole. Si lasciò mettere il +braccio di lei sotto il suo; anzi, posso giurarvi che, galante +com'era, anco nei momenti più difficili, curvò con bel garbo il +gomito, per accogliere il dolcissimo peso. Quel braccio si appoggiò +sul suo con una pressione particolare, che parea dirgli: «tenetemi +bordone, per carità!»; gli occhi della sconosciuta si volsero languidi +a cercare una buona risposta ne' suoi; la sconosciuta era bella, assai +bella; il contatto della sua aggraziata persona gli recava una +commozione subitanea per tutte le vene, insomma, il sangue non è +acqua, siamo tutti uomini, e Roberto Fenoglio rispose: + +--Si, moglie mia, farò di contentarti.-- + +Tutto ciò era avvenuto in un batter d'occhio. Ora, accettata una +condizione di cose, bisognava andare innanzi, mettere in buona vista +tutto quel garbuglio; e Roberto, comunque fosse impacciato, ci si +provò. + +--Vedete un po' che bel caso!--disse egli, voltandosi ai +sergenti.--S'era suonato e ballato.... una festicciuola tra amici.... +ai quali avevo fatto conoscere mia moglie.... + +--Ah sì!--interruppe il Negri.--Ella è ammogliato di fresco; noi nol +sapevamo neppure.... + +--Infatti,--disse Fenoglio,--io non ne avevo dato notizia a nessuno. + +--Un matrimonio _al gran destino_....--entrò a dire con aria peritosa +il Piccione. + +--Come sarebbe a dire; al gran destino? Vorrete dir clandestino? +Sicuro, ho fatto un matrimonio clandestino; ma ora l'abbiam propalato; +tutti gli amici, i parenti, Genova tutta lo ha da sapere.-- + +Così dicendo, Roberto Fenoglio si volse a guardare la sua improvvisata +metà, che lo ricompensò delle sue parole con uno sguardo d'ineffabile +tenerezza. + +--Che io possa morire, se ne capisco un'acca!--pensò egli tra sè. + +--Oh ce ne rallegriamo grandemente con Vossignoria!--disse il +Piccione, che era il più cerimonioso dei due sergenti.--E ce ne +rallegriamo anche colla sua signora.... + +--Grazie, grazie!--rispose la leggiadra donnina, accompagnando le +parole col più grazioso dei suoi divini sorrisi. + +--Suvvia, Piccione:--disse il Negri al compagno--noi adesso +disturbiamo.... + +--No, no, amici miei!--interruppe Fenoglio.--Voi non ve ne andrete +così senza aver prima bevuto un bicchiere. + +--Scusi Vossignoria: ma noi eravamo venuti in questa scala per seguire +una donna.... una.... + +--Che cosa?--domandò con molta curiosità il padrone di casa.--Avete +detto una.... Se la cosa può dirsi, finite, di grazia, la frase! + +--Oh, niente di male in quanto alla moralità personale....-- + +Fenoglio respirò a larghi polmoni. Intanto il Negri proseguiva: + +--....Insomma, debbo dirlo? Si tratta di una emissaria di Mazzini. Il +signor Questore ha saputo che questa donna, una delle più terribili +cospiratrici contro il governo, è venuta da Londra a Genova, e che +ella doveva trovarsi appunto in una casa qui presso.... Le nostre +passeggiate debbono averla messa in sospetto di qualcosa, poichè una +donna appunto (ed era certamente lei) è uscita dalla casa in discorso; +ma, inseguita da noi, s'è ficcata nelle scale di questo palazzo.... + +--Ah diamine!--esclamò Roberto Fenoglio.--E adesso come farete a +trovarla? + +--Ella a quest'ora avrà potuto ridiscendere le scale!--si affrettò a +soggiungere la signora. + +--Sicuro! dice bene la signora Fenoglio!--gridò il Piccione, +percuotendosi la fronte colla palma della mano.--Vedi che bestia siamo +stati noi altri! Ma qui bisogna correre. + +--Non tanta fretta!--interruppe ella sorridendo.--A quest'ora ella ha +potuto andare molto lunge, e come vorreste trovarla! Gli è un colpo +fallito, al quale non si rimedia, e sarà meglio vi ricordiate che il +mio Roberto vi ha pregato di fermarvi ancora pochi minuti per berne un +bicchiere. + +--La signora ha ragione!--disse il Negri con aria melanconica.--Ora, +poichè la ci è sfuggita, beviamo. + +--Signor avvocato,--ripigliò il sergente Piccione,--beveremo alla +salute della sua signora moglie, che è tanto gentile quanto bella. +Scusi, signora, il complimento, compatisca; siamo gente alla +buona....-- + +Intanto Roberto Fenoglio era andato in una camera vicina e ne tornava +con una bottiglia di Sciampagna, che fu sollecito a sturare per quei +due ragguardevoli personaggi. + +--Alla salute della signora Fenoglio!--disse il Negri, alzando il +calice spumante. + +--Che il Ciel la benedica, e le conceda una mezza dozzina di bei +bambocci somiglianti al l'ottimo avvocato Fenoglio!--soggiunse il +Piccione. + +--Grazie, amici, grazie!--rispose Fenoglio.--Noi faremo di non mandar +vani i vostri amorevoli augurii.-- + +E guardò sott'occhi la sua sconosciuta vicina, che si fe' rossa in +volto come una ciliegia. + +Intanto quei due, sebbene, dopo una seconda e una terza libazione, +avessero veduto il fondo della bottiglia, non se ne andavano ancora. +Fenoglio era sulle spine, poichè gli premeva di sapere chi fosse +quella donna, e come gli fosse capitata in casa. La donna, dal canto +suo, ci doveva avere le sue buone ragioni, per affrettare coi voti la +loro partenza. + +Il Negri, dopo una sosta di parecchi minuti secondi, così prese a +parlare: + +--Signor avvocato, la mi scusi; avrei a chiederle.... ma non mi dia +dell'indiscreto.... + +--Oh, niente affatto!--rispose Fenoglio. + +--Sì, sì, la è una indiscretezza la nostra.... ma tant'è, non possiamo +fare a meno di pregarla.... + +--Ahi, ahi!--pensò il mandarino--che cosa vuole ora costui?-- + +La povera bella, di rossa ch'ella era divenuta, si fe' più pallida di +prima. + +--Vossignoria,--proseguì il sergente, senza addarsi di nulla,--è in +relazione col nostro capo, il cavalier Gallesi.... + +--Sicuro, sono in relazione con lui, con quella degna +persona;--rispose Roberto.--Lo vedo qualche volta ed ho l'onore del +suo saluto. Ma che cosa.... + +--Ecco;--interruppe il Negri,--noi abbiamo fatto il nostro dovere, +niente più niente meno del nostro dovere.... Ma se il signor cavaliere +venisse a risapere che ci siamo lasciati sfuggire.... mi capisce? + +--Ah! sì, capisco,--disse Fenoglio, tornando a respirare +liberamente,--io non debbo dir nulla. Non dubitate, sarò muto come una +tromba.... cioè no, volevo dirle come una tomba. Che diamine! vedete +mo' come talvolta ci tradisce la lingua.-- + +Non era vero niente; Roberto Fenoglio, rasserenato dalla piega che +aveva preso il negozio, tornava ai suoi primi amori col bisticcio. + +--Le siamo riconoscentissimi della sua bontà, signor avvocato!--entrò +a dire il Piccione, colla lingua impacciata dallo Sciampagna.--In +verità non potevamo aspettarci altro da un galantuomo pari suo. Oh se +tutti fossero come Vossignoria, a questo mondo! + +--Taci là, bestione!--interruppe il Negri, che voleva schiccherare +anch'egli un complimento all'avvocato.--Se tutti fossero come il +signor cavaliere.... + +--No, no, lasciate i titoli da parte, io non son cavaliere e me ne.... +me ne.... insomma, non lo sono!--conchiuse Roberto. + +--Il governo ha torto!--sentenziò il Negri.--Io lo servo, lo rispetto +e lo venero, come è debito mio; ma egli ha torto a non far cavaliere +un personaggio come Vossignoria. Basta, io non c'entro.... Che cosa +dicevo, Piccione? + +--Dicevi che se tutti fossero.... + +--Ah si, mi ricordo; volevo dirti che se tutti fossero come il signor +avvocato, noi perderemmo il nostro pane, perchè non ci sarebbe nulla +da fare nel nostro mestiere.-- + +E accompagnate queste parole con un inchino, il Negri si congedò +dall'avvocato Fenoglio, pregandolo, scongiurandolo da capo a condonar +loro la molestia che gli avevano involontariamente recata. + +Così finì quella scena, che poteva avere ben altre conseguenze per uno +dei due personaggi rimasti. Fenoglio accompagnò i due sergenti fino +all'uscio di casa, e questa volta lo chiuse egli, colla debita +attenzione, anzi con due mandate di chiave. + +Quindi tornò nel salotto, dov'era rimasta la sconosciuta, e, giunto +sul limitare, si fermò, sporgendo il capo verso di lei, in aria d'un +maiuscolo punto interrogativo. + + + + +IV. + + +La bella ignota era caduta sulla poltrona accanto al canapè. Lo sforzo +di quella scena difficile l'aveva svigorita per modo da non sentirsi +più reggere in piedi. + +--Oh, signore!--mormorò ella, più che non dicesse--la mia +gratitudine.... + +--Nulla, nulla, non mi ringraziate!--interruppe il mandarino.--Ditemi +piuttosto, se non è un prentender troppo, chi siete voi, o signora, +voi che vi fate di punto in bianco mia moglie, mi togliete dalla +fronte quell'aureola di vergine.... e martire, la quale mi si +confaceva pur tanto? + +--Signore....--balbettò la povera bella,--o signore.... voi siete così +buono, avete un cuor così nobile.... + +--Signora, io non ho cera qui sotto le mani per turarmi gli orecchi, +come fece Ulisse, allorquando egli ebbe a trovarsi in un caso simile +al mio; ma vi giuro che, se voi proseguite a parlarmi così dolcemente, +io supplirò alla cera colla palma delle mani.-- + +E dicendo queste parole, le quali arieggiavan assai più il madrigale +che l'invettiva, Roberto Fenoglio fe' il doppio gesto di un uomo che +vuol turarsi gli orecchi. + +Era grazioso in quell'atteggiamento, il nostro mandarino posticcio; e +la signora, quantunque il momento non fosse da ciò, non potè +rattenersi dal ridere. + +--Ah, vi pigliate anche giuoco di me, bella e terribile +sconosciuta?--incalzò Roberto Fenoglio.--Avete ragione, in fede mia. +Eccomi ammogliato senza saperlo, e con chi? con una donna +_contemplata_ dall'articolo 185 del Codice penale. + +--Oh!--esclamò la signora alzandosi in piedi. + +--Non vi adirate per sovra mercato, signora!--fu sollecito a +soggiungere Fenoglio.--L'articolo 185 non può offendere la dignità +della donna. Ma in fine, i fatti _enunciati_ vi accusano; la +prevenzione è contro di voi. Chi inseguivano quei due degni tutori +dell'ordine pubblico, se non voi? se non una.... _horresco +referens_.... una rivoluzionaria? + +--Mio buon signore,--disse la sconosciuta, accennandogli con atto +leggiadro, che volesse chetarsi un tratto,--io vi prego, per quella +cortesia che m'avete dimostrata fin qui, ad usar pazienza ancora un +tantino. Tutto quello che è avvenuto stanotte ha bisogno di una +spiegazione, e voi, gentile come siete, mi darete agio ad esporre le +mie ragioni. + +--Tolga il Cielo che io voglia condannarvi senza ascoltarvi--rispose +Roberto Fenoglio.--Non siamo più ai tempi della inquisizione, la Dio +mercè, ed io son qui tutto orecchi ad udirle, queste vostre ragioni. + +--Or bene, signore, parlerò.... Ma anzitutto, voi siete un gentiluomo, +e.... + +--E me ne vanto, signora! Ho sempre saputo custodire i segreti che mi +furono confidati, e tanto più facilmente, in quanto che io sono l'uomo +più smemorato che viva sotto la cappa del cielo. Tutto ciò che ode il +mio orecchio destro non ha neppure il tempo di giungere all'orecchio +sinistro, che io già l'ho dimenticato. + +--Tanto meglio! Sappiate dunque che la rivoluzionaria c'è, e appunto +quella che i due uomini della Questura cercavano.... + +--Ah! voi lo confessate? Ma come mai una così leggiadra donnina +(scusate la schiettezza, ma io amo dire anzitutto la verità, la pura +verità, niente altro che la verità), come mai una così leggiadra +donnina, quale voi siete, va a ficcarsi in questi viluppi? + +--Ringrazio i vostri occhi dell'inganno in cui mostrano +d'essere,--rispose ella, sorridendo traditorescamente,--ma non debbo +lasciar del pari in errore il vostro giudizio. Quella rivoluzionaria, +di cui si parla, non sono io; siete contento? + +--Respiro, signora, respiro; ma proseguite, di grazia! + +--Ecco dunque;--continuò la signora,--questa rivoluzionaria è mia +amica. Rivoluzionaria! Anche il vocabolo è improprio, imperocchè essa +non è che la moglie di un ottimo cittadino, il quale è condannato nel +capo e vive lontano dal suo paese, amandolo da lungi e facendo voti +perchè si muti quest'ordine di cose, che nessun italiano di core.... + +--Dovrebbe tollerare!--conchiuse Roberto Fenoglio. + +--Ah, son lieta di parlare con un uomo!--disse la signora, stendendo +la mano a Roberto, che l'afferrò prontamente e vi stampò un rispettoso +bacio, se pure è vero che i baci siano una testimonianza di rispetto. + +Ella ritrasse dolcemente la sua mano e proseguì: + +--La mia buona Erminia (così ella si chiama) non è qui venuta per +cospirare, sibbene per vedere un suo figliuoletto che ha lasciato a +Genova in casa de' suoi congiunti, e che da qualche settimana era +infermo. La poverina, giunta ieri, mi ha fatto pregare stanotte di +recarmi da lei, e voi potete argomentar di leggieri che io non +mettessi indugio a contentarla. Il mio servitore mi accompagna fino +alla porta, e lo rimando a casa per maggior precauzione. Ora ecco che, +mentre io salgo le scale, odo rumor di passi.... intimorita, mi +ritraggo; essi mi hanno sentita, e giù per le scale verso di me! +Allora io non so più quel che mi faccia, esco fuori, e senza pure +voltarmi indietro, vengo a rifugiar nel portico di questo palazzo, +sperando che non mi abbiano veduta ad entrarvi. Ero in errore; mi +seguono; io salgo pian piano fin qui.... trovo un uscio aperto, e voi +sapete il rimanente, voi che mi avete presa a proteggere, senza pur +sapere chi io mi fossi. E di ciò permettete che vi ringrazi, o +signore, poichè, sebbene per me non avessi nulla a temere, la mia +dignità di donna era tuttavia a repentaglio, nel trovarmi sola, di +notte, e inseguita a quel modo!... Ah, mio Dio? rabbrividisco al solo +pensarvi. + +--Avete ragione, signora,--disse Roberto, com'ella ebbe finito il suo +discorso,--avete ragione. Una donna sola, di notte, e così bella, come +voi.... Ma perchè siete voi così bella?-- + +E uscendo in questa esclamazione, improvvisa, Roberto Fenoglio mandò +un lungo sospiro. + +--Che cosa avete?--domandò ella a sua volta. + +--_A-ing-fo-hi_!--rispose egli sospirando da capo. + +--E che cosa vuol dire quest'altra frase? + +--Vuol dire, o signora.... Ma anzitutto, mi promettete di non andar in +collera? + +--Ve lo prometto, purchè non mi diciate +complimenti. + +--Oh, saranno verità sacrosante: vi dirò quello che sento e nulla più. +Sapete voi che cosa avvenga allo zolfo quando un raggio di sole, +attraversando il fuoco di una lente, viene a percuotergli sopra? + +--Credo che si accenda, ma non potrei giurarlo, perchè non m'intendo +di fisica. + +--Oh, giuratelo, signora mia, giuratelo pure! Cotesto è avvenuto a me, +dacchè voi siete entrata qui, cioè, mi spiego, da quando io mi sono +svegliato. Voi siete il raggio di sole; l'occasione bizzarra che vi ha +condotto qui è la lente; lo zolfo infine sono io, Roberto Fenoglio, +avvocato, e scapolo per giunta. Siete nubile voi? + +--No, signore. + +--Ah! c'è un marito!... + +--Neppure; egli c'è stato. + +--Siete vedova, dunque! Vedova! oh dolce nome! siete vedova, e siete +bella! Ma tutto ciò è un sogno.... Abbandonarsi all'ignoto! lasciar +operare il caso!... L'ignoto è venuto, il caso ha operato un miracolo! + +--Che dite voi ora? + +--Lasciatemi dire, o signora; parlo col mio angelo custode. Non +credete che io ci abbia un angelo custode? È lui che vi ha condotta +quassù: consentite che io adori in voi i decreti della divina +Provvidenza. E l'esservi voi dichiarata mia moglie non è forse una +voce del cielo? La vocazione di Abramo è stata determinata da assai +più lievi cagioni. Insomma, o signora, vengo difilato alla conclusione +del mio discorso, che vi sarà parso sconclusionato; ma io m'intendo e +basta. Che direste voi di un uomo non vecchio, nè al tutto sgradevole, +e con ventimila lire di entrata senza contare uno zio materno, +decrepito, senza figli, e con mezzo milione? + +--Direi,--rispose la signora che sapea stare alla celia,--ch'egli è un +uomo fortunato. + +--Non mi avete inteso; mi spiegherò meglio. Che direste di quest'uomo, +se egli vi proferisse la mano, dopo avervi umilmente chiesto la +vostra? + +--Direi ch'egli è un bel pazzo, a concepire di così fatti disegni e +più pazzo ancora a dirli a me, la prima volta che egli mi vede, e in +una somigliante occasione.-- + +Roberto Fenoglio chinò il capo e lasciò cader le mani penzoloni lungo +i braccioli della scranna sulla quale era venuto a sedersi per +cominciare il suo dialogo. + +--Tutte così, le donne!--esclamò egli, sospirando. + +--Tutte così, voi dite? e perchè di grazia? + +--Perchè?--ripetè con accento di amarezza Roberto Fenoglio.--Voi mi +chiedete ancora il perchè! Perchè esse si dilettano a tormentare il +cuore di un uomo, lo girano e rigirano per tutti i versi, scherzandovi +su colle loro unghie feline che lacerano dovunque toccano e fanno +spicciare il sangue. Dite loro: _vi amo_, lo dite con tutta la +sincerità dell'anima vostra, ed elleno vi ridono sul viso con aria +d'incredulità. Per esse l'amore non esiste che allo stato di +vecchiezza; lo fanno nascere dalla consuetudine, vi negano ch'e' possa +essere il risultato di una commozione subitanea. L'amore per gradi; +che bella cosa! Ma qual è, dopo quant'altri gradi incomincia quello in +cui si può dire _vi amo_ ed esser creduti? Io mi ribello, o signora, +contro questa falsa teorica. Voi stessa, che la lodate palesemente, +non ne credete in cuor vostro una jota. Ma essa vi torna acconcia per +guadagnar tempo, per pigliarvi diletto dei nostri tormenti... Orvia, +signora, non crollate la vostra testolina a quel modo! Lasciatevi dire +la verità da un uomo che riceve per la prima volta la scossa +elettrica! Io non ho amato mai, sebbene molte fiate siasi potuto +argomentare il contrario, da certe vaghe apparenze. Questo affetto che +io vi confesso candidamente ora, è già padrone di me. Se la cosa +dovesse procedere diversamente, se io dovessi innamorarmi di voi a +gradi, a gradi, avreste ragione a non usarmi misericordia, perchè io +sarei un uomo da nulla. Come è nato questo amore? Non lo so. La novità +del caso era fatta piuttosto per ispirarmi la diffidenza; ma non ne fu +nulla. Se debbo confessarvi un mio sospetto, vi dirò che vi ho amato +in quel momento che avete posto il vostro braccio sotto il mio. In +quella dolce pressione che volea dirmi: _salvatemi_! io ne ho sentito +un'altra che diceva: _amatemi_. Ho inteso la vostra preghiera, ho +accettato il vostro comando; perchè una corrente elettrica mi ha +signoreggiato ad un tratto. E subito, comunque turbato, ho messo ogni +mia virtù a tornarvi utile. Chi, se non il cuore, mi ha detto allora +che voi eravate una gentildonna? Sì, una gentildonna; questa +persuasione si è trasfusa a quel contatto in tutto l'esser mio, ed io +non ho sospettato di sapere il vostro nome per obbedirvi, come non lo +chiedo ora, innanzi di confessarvi che vi amo. E adesso ridete pure, +ridete liberamente di me! + +--Perchè riderei?--chiese la sconosciuta, con piglio soave.--A +schietto parlare schietta risposta. Che cosa direste voi di una donna, +la quale, alle prime parole di un uomo che ella vede per la prima +volta, gli rispondesse: vi credo, e accettasse di grand'animo l'amor +suo? + +--Direi che ella è una donna superiore a tutte le altre, o, per rubare +una sua magnifica frase al divino Petrarca, «_colei che sola a me par +donna_.» + +--No, signor Fenoglio, non lo direste, o, dicendolo, non lo +pensereste. Se questa donna non conosce ancora quest'uomo.... + +--Ma neppure io, o signora, conoscevo voi, e tuttavia.... + +--Gran bella ragione!--interruppe la donna.--Vedete mo il gran risico +che correvate voi! Ed è egli possibile che il vostro senno non vi +dimostri la grave, la profonda differenza che corre tra un cuor d'uomo +e un cuore di donna? Che sacrifizio fa l'uomo ad amare e a dirlo, egli +tentatore, egli padrone di perdere nel giuoco quel tanto appena che ha +messo di posta? Noi, povere donne, quando amiamo (il che più veramente +ci avviene che a voi, e con più violenza di subitanea passione che voi +non crediate) paghiamo i nostri errori col dispregio di noi medesime. +Non parlate più? Non crollate più a vostra volta il capo, in segno di +incredulità? Vedete pure che non avevate ragione, e, schietta come +sono, vo' confessarvelo. Ho detto testè: _se questa donna non conosce +ancora quest'uomo..._ e ho detto male, poichè io già vi avevo +conosciuto, sebbene da mezz'ora, più addentro che se la nostra +conoscenza già contasse anni di vita. Siete un galantuomo e un +gentiluomo, ed io vi ho veduto alla prova. Credete pure che io so +rendervi giustizia! Noi povere donne non possiamo parlare liberamente +come voi fate.... E per legge di natura, e per vincolo di educazione, +noi siamo il sesso debole; non abbiamo altra arma migliore in nostra +difesa che la diffidenza, la eterna diffidenza. + +--Il sesso debole!--soggiunse Roberto.--Siamo noi il sesso debole! + +--Quando ci amate, s'intende. Ma dura così poco in voi, questo stato +di malattia! La convalescenza è sempre assai pronta, e ripigliate +sempre le forze smarrite.-- + +Roberto Fenoglio rimase muto. Era quella la più eloquente risposta che +egli potesse dare alla sconosciuta. Ella aveva ragione sulle generali, +e sebbene egli non avesse torto nel suo caso particolare, non era +quello il momento per costringerla a riconoscerlo. + +Perciò, tacendo egli, v'ebbe un tratto di pausa nel dialogo. Roberto, +colla fronte china, contava i pezzettini di marmo del suo pavimento a +mosaico; la signora guardava Roberto, aspettando che dicesse qualcosa. + +E così guardandolo, e vedendolo silenzioso, le scese inavvertita in +cuore quella pietà traditora che è sorella dell'amore e che non ha +altro ufficio se non questo, di aprir l'uscio di casa al fratello. + +--Povero giovine!--le susurrava al cuore la pietà.--Tu gli hai detto +di brutte cose, ed egli non ardisce nemmanco risponderti. Vedi com'è +contrito ed umiliato! Ora, lo hanno detto le sacre carte: _cor +contritum et humiliatum Deus non despiciet_. Egli ha una cera +simpatica, per verità! E poi, com'è gentile di modi! Come si è +adoperato volenterosamente a farti servizio! Quanti altri uomini, nel +caso suo si sarebbero diportati com'egli? Quanti altri, posti con una +donna sola, sconosciuta, in casa loro, non avrebbero piuttosto ceduto +a diverso consiglio? Gli uomini, in genere, sono un'assai brutta +razza, animi volgari, carne impastata di fango.... Ma egli! povero +giovine! Suvvia, bisogna ricompensarlo con una dolce parola!-- + +E la cercò, la dolce parola; ma lì, sulle prime, non le venne fatto +trovarla. Trovò bensì un più soave accento e un più soave sorriso, per +dirgli: + +--Or dunque, signor Fenoglio, voi sarete il mio cavaliere, per +accompagnarmi a casa. Non è egli vero? + +--Come vorrete, o signora, come vorrete. Vado subito a levarmi di +dosso queste ridicole insegne di mandarino cinese e sono ai vostri +comandi. Ma innanzi di partire udite ancora una parola, e sarà +l'ultima, ve lo giuro! + +--Con che aria mi dite voi questo!--rispose la signora.--Siate più +gaio, ve ne prego; amo meglio udirvi a scherzare, come poco fa, che +parlar malinconico e guardarmi accigliato, come ora. + +--Perdonatemi,--disse Roberto,--ma non posso far forza al mio +naturale. Sotto la forma di uno scherzo vi ho detto poco fa tutto +quello che il mio cuore sentiva. Vi ho profferto sinceramente e +prontamente la mia mano, perchè aveste a scorgere sulle prime la +purità de' miei intendimenti. Era quello il primo omaggio che io +dovevo rendere ad una donna come voi, al primo momento che sentivo di +amarla. Voi mi avete tolto in quella vece per un uomo leggero, per un +di quei capi scarichi che s'innamorano al primo uscio; ed ecco, io +porto la pena di aver fatto un giusto proposito e di non averne subito +dichiarato le lodevoli ragioni.... + +--Ah signore! E credete voi che io non le abbia pensate, tutte queste +cose gentili? Andate, andate a mutar abiti, senza fantasticare più +altro, poichè davvero stillandovi in questa guisa il cervello, non +siete più giusto, nè con voi, nè con me. + +--Vado, signora, vado; ma ditemi ancora... io vi accompagnerò a casa! +me ne tornerò senza un conforto nel mio solitario quartierino da +scapolo.... E quei due che mi sanno ammogliato... che lo andranno a +ridire.... + +--È vero!--esclamò la sconosciuta, lasciando cadere la sua testolina +leggiadra contro la spalliera della poltrona.--Non ci avevo pensato! +Mi fate adesso riconoscere quanto io abbia operato sconsideratamente +con voi. Oh quanto me ne duole!-- + +E l'espressione del volto di quella donna fu così melanconica, nel +pronunciar ch'ella fece quel suo _me ne duole_, che Roberto Fenoglio +cadde ginocchioni a' suoi piedi, e, prendendola per mano, si fece a +dirle con accento concitato: + +--Non vi addolorate, per carità! Ho detto una sciocchezza.... Ma dove +diamine l'ho pescata io! Piuttosto che vedervi piangere, mi ucciderei. +La gente dirà quel che vuole... mi crederà ammogliato; non me ne +importa; mi condannerò ad un eterno celibato, e non sarà un grave +sacrifizio per me, dopo quello che vi avrò fatto, di non riuscirvi +altrimenti molesto. Veduta voi, quale altra donna al mondo amerei?-- + +La pietà traditora inumidì leggermente le ciglia della sconosciuta. + +--Avvocato,--disse ella con piglio di leggiadra dimestichezza,--voi mi +accompagnerete; saprete dove sto, ed io vi annunzio fin d'ora che sarà +sempre aperta per un gentiluomo pari vostro la casa di Laura +Moneglia....-- + +La folgore, cascata ai piedi di Roberto, non gli avrebbe fatto più +senso di quel nome e di quel casato che uscivano soavemente dalle +labbra della sua ospite leggiadra. + +--Che?--gridò egli, balzando in piedi.--La cugina di Felicino +Magnasco? + +--Conoscete mio cugino?--dimandò la signora Laura. + +--Se lo conosco, signora... se lo conosco.... Figuratevi! egli era qui +seduto su quella medesima poltrona, mezz'ora innanzi che giungeste +voi, e mi stava pregando... mi stava dicendo.... Insomma, oggi stesso +e' doveva presentarmi a voi. + +--A me? voi? Ah, mi ricordo... mi parlò di un signore, suo amico.... +Sicuramente. Infatti il vostro nome non mi giungeva nuovo. Mio cugino +Magnasco parla molto bene, e meritamente, di voi. Orbene, che male c'è +che io sia sua cugina? + +--C'è, o signora, che voi... già lo sapete... Felicino vi ama.... + +--Orbene, che mi ami! + +--Ah! sta bene?--dimandò sbigottito Roberto. + +--Si, certo, ma io non amo lui.-- + +A Roberto Fenoglio fu per balzar fuori un sospiro di contentezza; ma +si rattenne in tempo. + +--Lo amerete più tardi;--si provò a dir egli.--Vi piegherete a' suoi +voti, alle sue preghiere. Felicino è un bel giovane, ha un ottimo +cuore.... + +--Tutto ciò che vorrete,--rispose la signora Laura,--ma egli non mi +piace oggi, e non mi piacerà domani, nè poi. + +--Egli sta fresco, allora, il mio povero amico; ma cotesto non potrà +giovarmi, non farà crescere d'un punto le mie speranze, dopo la +promessa che gli ho fatta.... + +--Che promessa? + +--Faccio male a dirvelo? Mi pare di no, poichè intanto avevate a +saperlo!... Di aiutarlo presso la sua divina parente, di persuaderla a +concedergli la sua mano. + +--Ah! ah! un mirabile spediente! E come lo ha scelto bene tra +tutti!--gridò Laura, ridendo a più non posso. + +--Signora, e perchè? + +--Ma si, lasciatemi ridere per carità! Si vede che il mio cuginetto è +molto perspicace. + +--Signora, io non so... non so se debba imbronciarmi o ridere con voi. + +--Si, ridete, ridete! Tutta questa gaiezza non ha nulla che possa +recare offesa al vostro carattere, ve lo giuro! + +--Mi fido di voi, bella signora, e rido anche io. Povero Felicino! + +--Orvia, si fa tardi; andate a vestirvi. + +--Sì, avete ragione; questa volta vado subito. Due minuti, e torno.-- + +Uscito Roberto dal salotto, Laura rimase sola a pensare. Che cosa +pensasse non vi dirò, poichè non sono mai penetrato nel cuore d'una +donna. + +Dieci minuti dopo, Roberto Fenoglio ricompariva nel salotto, vestito +da cristiano, col suo abito nero di gala, il pastrano sul braccio e lo +staio in mano. Come avesse potuto spicciarsi a quel modo non saprei +dirvi. So che l'amore fa miracoli a palate, e non mi stupisco di +questo. + + + + +V. + + +Il mio protagonista, levandosi di dosso quegli abiti da cinese, +tornava quel che era, un simpatico giovinotto, se pure può dirsi +giovinotto chi ha passata di anni parecchi la fatale trentina. La +signora Laura lo guardò e i suoi occhi manifestarono una lieta +maraviglia. E invero la cosa non poteva essere diversa, poichè +l'avvocato Fenoglio, oltre all'avere un gentile aspetto, era +innamorato cotto; e l'amore, come tutti sanno (e se qualcheduno nol +sapesse, glielo dico io), abbellisce la gente, sia che conferisca più +vivacità allo sguardo, sia che impallidisca le guancie, secondo che è +lieto, o sfortunato per coloro che l'hanno nel cuore. + +Quello di Roberto Fenoglio non potea dirsi ancora nè una cosa, nè +l'altra; era fresco di un'ora, ma era nato vigoroso come Ercole, di +cui narra la favola che, stando in cuna, strozzasse colle sue poderose +manine i serpenti. Il desiderio di piacere a quella bellissima donna, +il rispetto che sentiva per lei, sebbene l'avesse conosciuta in così +strana maniera, la stranezza medesima del caso che metteva, sto per +dire, un pizzico di sale su quel negozio, già di per sè saporito +abbastanza, tutto ciò trasfigurava Roberto Fenoglio. Se non temessi di +farmi dare dell'eretico, direi che quello era il suo Tabor, e che +intorno alle tempie egli ci aveva un'aureola. + +--Dunque, signora,--diss'egli accompagnando le parole con un +grandissimo inchino,--poichè così volete, andiamo; io sono ai vostri +comandi. + +--Voi siete un gentil cavaliere!--rispose la signora Laura.--Andiamo +dunque; mi sa mill'anni d'essere a casa mia. + +--Questa sarebbe casa vostra, se voi voleste, o signora.... + +--Pazzo!--interruppe ella, e temperò la frase con un divino +sorriso.--Di ciò mi parlerete più tardi....-- + +Così dicendo ella seguì Roberto Fenoglio nell'anticamera fino alla +porta. + +E qui avvenne un caso mirabile, strano, bizzarro, non mai più udito, +nè visto; un caso che io potrei darvi ad indovinare alle cento, alle +mille, alle diecimila, ma tanto e tanto non vi apporreste al vero; un +caso che parrà inverosimile, e che infatti è inverosimile davvero, +come è spesso inverosimile la verità. + +Non vi è egli mai avvenuto, o lettori, di vedere un tramonto di sole, +di notarne gli strani colori, i più strani effetti di luce, e dire tra +voi che, se un pittore lo copiasse fedelmente, gli darebbero +dell'esagerato? Non vi è egli mai occorso di udire un fatto, o non +avete nella vostra storia particolare un caso tanto bislacco da farvi +dire, quando ve ne ricordate, che se un romanziere lo raccontasse, non +parrebbe vero a nessuno? + +Orbene, uno di questi casi occorse per l'appunto ai miei due +personaggi; uno di questi tramonti toccò alla mia narrazione, la quale +non è un sole pur troppo! + +Roberto avea posto la mano sulla chiave e faceva girar la stanghetta +per aprire. In quel punto, proprio in quel punto, si udiva una forte +scampanellata. Egli, sebbene quel suono improvviso gli urtasse +maledettamente i nervi, non fu più in tempo a fermarsi. L'uscio si +apriva sotto le sue mani, e un uomo si presentava nel vano. Questo +uomo fu sollecito ad entrare, e la prima persona che egli ebbe a +vedere (poichè Roberto, nello aprir l'uscio, si cansava per darle il +passo) fu la bellissima Laura Moneglia. + +Chi era costui? Perchè al veder quella donna e' dava uno sbalzo +indietro, spalancando tanto d'occhi a guisa di spiritato? + +Era Felicino Magnasco, che vedeva innanzi a sè la sua crudele cugina. + +Fu un colpo di scena che io non vi starò a descrivere, e di certo non +potrei se pur lo volessi. Il fatto, l'atto istantaneo, non si dipinge; +lo scrittore non può mutarsi in fotografo. + +Felicino Magnasco entrò coll'aria più impacciata che vi possiate +immaginare, e ne aveva ben donde. Roberto Fenoglio non lo era meno di +lui. + +--Oh, buon giorno, Felicino!--esclamò egli, senza sapere che cosa si +dicesse.--Che buon vento ti porta quassù? Come va la salute? + +--Bene, grazie; e la tua? + +--_Optime_, Felicino, optime; e che cosa mi frutta una tua visita così +mattiniera? + +--Ah sì!...--rispose l'altro.--È un'ora indebita... giungo in mal +punto.... + +--Ma no, Felicino, ma no... figurati! un amico come sei tu giunge +sempre gradito. + +--Grazie da capo; ma lasciatemi raccapezzare...--soggiunse Magnasco. + +--Sì, raccapezziamoci, vuoi sederti un tratto? Signora....-- + +La signora Laura intese com'egli le chiedesse licenza di fermarsi +ancora qualche minuto, e fe' per tornare nel salotto. + +--Oh, mi rincresce di recar fastidio....--ripigliò Felicino,--ma +proprio non capisco... non ricordo più perchè io sia tornato +quassù....-- + +E il povero Magnasco, cavato di tasca il fazzoletto, si andava +asciugando il sudore che gli gocciolava in copia dalla fronte. + +--Ecco...,--diss'egli, come furono nel salotto,--mi ricordo.... Appena +ti ho lasciato, son corso verso casa.... Ma ho trovato degli amici +sotto i portici del teatro Carlo Felice, che uscivano da cena.... Essi +mi hanno trattenuto colle loro chiacchiere.... Poi, sono andato a +casa... ma giunto a mezza scala, mi avvedo che ho dimenticata la +chiave. Dove posso averla lasciata, se iersera l'avevo? Allora ho +pensato che il mio pastrano l'avevo riposto nella tua anticamera, e +che per conseguenza.... Ma permettimi, vo subito a vederci; di certo +la è cascata in qualche cantuccio....-- + +E senza aspettar altro, Felicino Magnasco, che non aveva ancora alzati +gli occhi verso la sua cugina, uscì a precipizio dal salotto. + +--Or bene, che si fa?--chiese Roberto alla signora Laura. + +--Che si fa?--rispose ella.--Raccontargli.... È il partito migliore. + +--Oh no, signora, nemmeno per sogno!--disse Roberto.--Egli crederà che +lo si voglia ingannare. Non c'è di peggio che la verità. E poi avete +voi un gran tornaconto a scolparvi con lui? Già voi lo amate? + +--Ma che! vi pare? + +--Dunque.... + +--Dunque, ditegli ciò che vorrete. + +--Ampia facoltà?... + +--Pieni poteri.-- + +Era tempo che s'intendessero; Felicino tornava nel salotto. + +--Ecco la chiave!--gridò egli, entrando col prezioso arnese tra le +dita.--Essa era a terra, di costa al tavolino. + +--Anch'io ho trovato la mia!--borbottò Roberto Fenoglio, guardando di +sott'occhi madonna Laura. + +Quindi, fattasi scorrere la palma della mano sulla fronte, come un +uomo che ha presa una deliberazione, entrò a parlare in tal guisa. + +--Felicino, amico mio, ti presento mia moglie! + +--Tua moglie!-- + +Questo grido uscì dalla bocca di Felicino Magnasco, come il «_tu +quoque, Brute, fili mi_?» dalla bocca di Cesare. In quel grido si +distingueva la meraviglia, l'ironia, il rimprovero, e Dio sa quante +altre cose ancora! + +Roberto Fenoglio non s'era vantato oltre i suoi meriti, dicendo com'ei +fosse nato per far l'oratore. Il discorso che gli venne fuori in +quella difficilissima occasione, comunque spezzato dalle necessità del +dialogo, lo ha collocato (nella mia stima, s'intende) all'altezza di +Cicerone e di Demostene. + +--Felicino,--diss'egli, con accento grave che dimandava altrettanta +gravità dal suo uditore,--ricapitoliamo, e t'avvedrai di non poter +darmi il torto. + +--Ah, vedremo!--rispose Magnasco. + +--Sicuro, vedremo, e da senno, non già per mo' d'ironia, come tu dici. +E prima di tutto, che cosa sapevo io de' tuoi disegni matrimoniali con +tua cugina? Innanzi che la signora Laura Moneglia diventasse la +signora Laura Fenoglio, potevo io prevedere che un amico mio l'avrebbe +un giorno chiesta in matrimonio? ed anco pensandolo in anticipazione, +dovevo far io, era egli ragionevole di chiedermi il sovrumano +sacrifizio di rinunziare alla sua mano... che è così bella? Tu non +sarai così crudele da aver di cosiffatte pretensioni, Felicino mio, +non è egli vero? Tu non vorrai inoltre negli amici tuoi, per atto di +amicizia, il dono della profezia! + +--No certo, io non pretendo tanto. + +--Or bene? che colpa puoi tu fare a me, se ho sposato la tua leggiadra +e nobilissima cugina... se un matrimonio clandestino.... + +--Ma, signore...--entrò a dir Laura con aria turbata. + +--Or bene?--disse voltandosi a lei, Roberto Fenoglio.--E i pieni +poteri?--E nell'accento, come nello sguardo di Roberto, c'era tanta +malinconia, che madonna Laura si diè quasi per vinta, e ricadde colla +sua bella testolina inerte sulla poltrona. + +Roberto Fenoglio proseguì volgendosi all'amico Magnasco: + +--Io te lo ripeto, che colpa ci ho? Stanotte tu mi cogli alla +sprovveduta, mi tiri un colpo a bruciapelo, chiedendomi di renderti +servizio presso la tua signora cugina.... Io casco dalle nuvole.... +Non so risponderti... non so dirti, spiattellarti la verità... piglio +tempo, per aspettare il tuo ritorno e raccontarti a mente serena ogni +cosa... ma ecco, tu capiti cinque ore prima; mi trovi solo colla mia +signora... che colpa ci ho io? + +--Sta bene;--rispose Felicino, mettendo fuori le parole a stento,--ma +tutto ciò non è molto chiaro. A qual pro un matrimonio clandestino? + +--Ah, per cotesto ti assicuro, Felicino, che ci abbiam avute le nostre +gran ragioni. Io te lo dirò poi.... se la mia signora consentirà. + +--Felice, io vi giuro....--incominciò la signora Laura. + +--Che se non fosse mia moglie,--proseguì prontamente Roberto, dandole +sulla voce con molta accortezza,--tu non l'avresti colta in casa mia, +sola, a notte inoltrata. + +--Mi congratulo con gli sposi!--soggiunse Felicino colla sua aria +imbronciata.--Ma ormai non ci sarà più ragione a nascondere il fatto, +e tu farai pubblica la nuova delle tue contentezze. + +--Sì, certo, domani stesso; le ragioni che ci hanno fatto tacere e +dissimulare fin qui, son cessate; non è egli vero, Laura? + +--Voi siete crudele!--mormorò la signora. + +--Vi ho già detto,--soggiunse egli, curvando la persona verso di lei +per parlarle a mezza voce,--che la verità non sarebbe stata creduta. + +--Mi accorgo,--notò Felicino,--che ci avete delle tenerezze a dirvi, e +me ne vado. Già non ho sonno, e andrò a fare una cavalcata. Hai veduto +il mio baio, Fenoglio? + +--Sì, un bell'animale; ma aspetta, usciamo anche noi.-- + +Il bel cuginetto diede una girata sui tacchi, e se ne andò ad ammirare +un quadro appiccato all'opposta parete. + +Madonna Laura, a sentirlo parlare come aveva fatto allora, fu +costretta a pensare che il suo cugino non si pigliava po' poi grande +rammarico della sua perdita. + +Felicino era un uomo del suo secolo, o per dir meglio, del suo mezzo +secolo. Il decimonono va diviso in due periodi; il primo è di _Jacopo +Ortis_; il secondo di.... manca il nome, perchè ancora manca il libro, +ma i lettori capiscono. + +Intanto Roberto conduceva la signora Laura verso la strombatura di una +finestra. + +--Signora, vi chiedo scusa, ma già ve lo avevo detto. + +--Sì, sì, ho inteso; m'avete reso pan per +focaccia. + +--Accettate il mio pane? + +--Ne parleremo più tardi. + +--No; ora io debbo mutar registro con vostro cugino. La verità, detta +adesso, senza ch'egli possa sospettare che si voglia mendicar pretesti +con lui, può essere, deve essere creduta. + +--Ma, signore.... + +--Signora....-- + +Dicendo questa parola, Roberto aveva le lagrime agli occhi. Laura se +ne addiede, e gli stese affettuosamente la mano. + +--Ah!--gridò egli balzando una spanna da terra. + +--Che cosa c'è?--chiese Felicino, voltandosi indietro. + +--C'è, Felicino mio, che la tua bella cugina non è altrimenti mia +moglie. + +--Come? che dici tu? + +--Cioè.... mi correggo.... non lo è ancora, ma lo sarà tra breve. +Perdonami, Felicino, ma la gioia mi soffoca. Io non conoscevo tua +cugina. Un caso, nota, un mero caso l'ha condotta qua, questa notte, +per l'uscio che tu, nell'andartene hai lasciato aperto.... + +--Ah, diamine! + +--Sì, tutto ciò sarebbe troppo lungo a narrarsi ora, ma lo saprai per +filo e per segno più tardi. Il fatto sta che un tessuto di bizzarre +avventure ci ha condotto a questo punto, e che adesso, per la prima +volta, la mia divina fidanzata mi ha sporto la mano. + +--Adesso!--esclamò Felicino stupefatto. + +--Adesso, mentre tu stavi guardando quella incisione del Morghen, che +io ti regalo, se la ti va a genio. + +--No, grazie; non saprei dove metterla. + +--Come ti piace; ma dimmi, che ora fai? + +--Che domanda balzana! + +--Per carità, Felicino, te ne prego, che ora fai? Felicino guardò +l'oriuolo. + +--Le sei e un quarto!--diss'egli--sei rappattumato cogli orologi? + +--Sì, Felicino mio; ne comprerò dieci, venti, trenta, ne riempirò +tutte le camere, tutti i bugigattoli di casa; ma tutti segneranno le +sei e un quarto, eternamente le sei e un quarto. + +--Bravo!--soggiunse Magnasco, sforzandosi a sorridere e non venendo a +capo che di fare una smorfia.--Così non ti seccheranno col loro _tran +tran_. + +--Certamente; _tu dixisti_! A proposito del _tran_ _tran_, sai tu, +Felicino, che m'hai fatto un vero regalo colla tua teoria dell'ignoto, +del dio Caso e del ragionare coi piedi? Senza quel tuo discorso +eminentemente filosofico, io sarei andato a letto, in cambio di +starmene sdraiato su questo canapè ad aspettare l'ignoto. L'ignoto non +sarebbe venuto senza quell'uscio che tu lasciasti aperto, e il dio +Caso non avrebbe potuto rompere la monotonia dei miei giorni. +Felicino, amico mio; una stretta di mano, e non aver rancore contro il +tuo amico, se gli è stamane più felice di te. Ah, che cosa ne dici di +questo? + +--Grazioso, e me lo merito! Ma tu mi +racconterai.... + +--Sì, tutto.... se la mia bella fidanzata lo consentirà. + +--Perchè no?--soggiunse madonna Laura.--Qui non c'è nulla che non si +possa raccontare. Ma andiamo, che già gli è giorno chiaro. + +--Cugina,--disse Felicino Magnasco,--mi permettete di offrirvi il +braccio? Il mio Roberto non ne sarà mica geloso? + +--Oh, spero di no!--rispose ella, volgendo a Roberto una di quelle +occhiate che solo le donne sanno dare, e nelle grandi occasioni. + + + + +VI. + + +Lettrici e lettori, qui la mia storia sarebbe finita; ma perchè non +abbiate a dire che io vi ho piantati sul più bello, aggiungerò ancora +poche note, a guisa di epilogo. + +E _in primis_ vi dirò che, quaranta giorni appresso, Laura Moneglia, +la leggiadra vedova (vedova di due mesi di matrimonio con un decrepito +zio) andava a seconde nozze, anzi a prime, coll'avvocato Roberto +Fenoglio. + +La cerimonia fu fatta nella aristocratica chiesa della Maddalena. +C'erano parecchi amici, e tra essi Felicino Magnasco, il quale aveva +finalmente saputo tutti i particolari di quella notte bizzarra, e +ancora non potea darsene pace. + +Gli sposi, appena ebbero detto il dolcissimo sì, partirono alla volta +della campagna. Non talentava loro di andare a Parigi, nè a Londra, nè +cullare i primi giorni di amore tra la polvere delle strade maestre, +l'ingombro delle valigie e la inevitabile filatessa prosaica delle +mille necessità di viaggio, nè far confidente di susurrati discorsi +leggiadri il cortinaggio ristucco di un letto di locanda. + +Se ne andarono in quella vece ad una villeggiatura di Roberto, posta +mirabilmente su di una collina, di rincontro al mare, graziosa +palazzina di due piani, contornata di fiori, con due falde di vigneti +e di boscaglie, i vigneti a solatìo, le boscaglie a bacìo. I primi +tepori della primavera rinverdivano la natura, smaltando di gaie tinte +il fondo del più bel quadro d'amore che mai potesse immaginare una +mente d'artista. + +Colassù non vedevano alcuno, nè d'alcuno avevano, o cercavano, +notizia. Giungevano lettere e le lasciavano chiuse nella sopraccarta; +i giornali s'affastellavano sui canterani, accanto alla parete, colla +fascia intatta. + +Come fu passato un mese di quella vita, si ricordarono un giorno che +avevano promesso di tornare a Genova: ma se ne ricordarono per +guardarsi in viso, ridendo, e dirsi a vicenda che amici e congiunti +potevano aspettarli ancora un bel pezzo. + +Insomma, ve l'ho a dire? non si mossero per tutta l'estate, e +sarebbero anco rimasti fino a tardo autunno, se la signora Laura non +avesse proprio dovuto andare in città, per certi apprestamenti che +l'accorta lettrice indovina.... + +Il dì della partenza, scesero la collina a passi lenti.... Ella non +era così leggiadra come il primo giorno che era salita lassù, e aveva +bisogno d'un saldo appoggio al braccio di Roberto. + +Ella e lui, si voltavano indietro ad ogni passo, per guardare il loro +bel nido, che splendeva di rincontro al sole, e andavano ripetendo a +vicenda: «Torneremo? torneremo questa primavera. Oh come ci parrà +lungo il tempo!» + +E tornarono; ci tornarono tutti gli anni seguenti, e ci torneranno +quest'altro, innamorati come prima, circondati dalla più vispa, dalla +più ricciuta e dalla più leggiadra famigliuola, che abbia mai potuto +desiderare, nei suoi sogni di paternità, il vostro umilissimo servo. + + + +FINE. EOT; + + /* + End of Project Gutenberg's Una notte bizzarra, by Anton Giulio Barrili + + *** END OF THIS PROJECT GUTENBERG EBOOK UNA NOTTE BIZZARRA *** + + ***** This file should be named 29636-8.txt or 29636-8.zip ***** + This and all associated files of various formats will be found in: + http://www.gutenberg.org/2/9/6/3/29636/ + + Produced by Claudio Paganelli, Carlo Traverso and the + Online Distributed Proofreading Team at http://www.pgdp.net + (This file was produced from images generously made + available by The Internet Archive/Canadian Libraries) + + Updated editions will replace the previous one--the old editions + will be renamed. + + Creating the works from public domain print editions means that no + one owns a United States copyright in these works, so the Foundation + (and you!) can copy and distribute it in the United States without + permission and without paying copyright royalties. Special rules, + set forth in the General Terms of Use part of this license, apply to + copying and distributing Project Gutenberg-tm electronic works to + protect the PROJECT GUTENBERG-tm concept and trademark. Project + Gutenberg is a registered trademark, and may not be used if you + charge for the eBooks, unless you receive specific permission. If you + do not charge anything for copies of this eBook, complying with the + rules is very easy. You may use this eBook for nearly any purpose + such as creation of derivative works, reports, performances and + research. They may be modified and printed and given away--you may do + practically ANYTHING with public domain eBooks. Redistribution is + subject to the trademark license, especially commercial + redistribution. + + *** START: FULL LICENSE *** + + THE FULL PROJECT GUTENBERG LICENSE + PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK + + To protect the Project Gutenberg-tm mission of promoting the free + distribution of electronic works, by using or distributing this work + (or any other work associated in any way with the phrase "Project + Gutenberg"), you agree to comply with all the terms of the Full Project + Gutenberg-tm License (available with this file or online at + http://gutenberg.org/license). + + Section 1. General Terms of Use and Redistributing Project Gutenberg-tm + electronic works + + 1.A. By reading or using any part of this Project Gutenberg-tm + electronic work, you indicate that you have read, understand, agree to + and accept all the terms of this license and intellectual property + (trademark/copyright) agreement. If you do not agree to abide by all + the terms of this agreement, you must cease using and return or destroy + all copies of Project Gutenberg-tm electronic works in your possession. + If you paid a fee for obtaining a copy of or access to a Project + Gutenberg-tm electronic work and you do not agree to be bound by the + terms of this agreement, you may obtain a refund from the person or + entity to whom you paid the fee as set forth in paragraph 1.E.8. + + 1.B. "Project Gutenberg" is a registered trademark. It may only be + used on or associated in any way with an electronic work by people who + agree to be bound by the terms of this agreement. There are a few + things that you can do with most Project Gutenberg-tm electronic works + even without complying with the full terms of this agreement. See + paragraph 1.C below. There are a lot of things you can do with Project + Gutenberg-tm electronic works if you follow the terms of this agreement + and help preserve free future access to Project Gutenberg-tm electronic + works. See paragraph 1.E below. + + 1.C. The Project Gutenberg Literary Archive Foundation ("the Foundation" + or PGLAF), owns a compilation copyright in the collection of Project + Gutenberg-tm electronic works. Nearly all the individual works in the + collection are in the public domain in the United States. If an + individual work is in the public domain in the United States and you are + located in the United States, we do not claim a right to prevent you from + copying, distributing, performing, displaying or creating derivative + works based on the work as long as all references to Project Gutenberg + are removed. Of course, we hope that you will support the Project + Gutenberg-tm mission of promoting free access to electronic works by + freely sharing Project Gutenberg-tm works in compliance with the terms of + this agreement for keeping the Project Gutenberg-tm name associated with + the work. You can easily comply with the terms of this agreement by + keeping this work in the same format with its attached full Project + Gutenberg-tm License when you share it without charge with others. + + 1.D. The copyright laws of the place where you are located also govern + what you can do with this work. Copyright laws in most countries are in + a constant state of change. If you are outside the United States, check + the laws of your country in addition to the terms of this agreement + before downloading, copying, displaying, performing, distributing or + creating derivative works based on this work or any other Project + Gutenberg-tm work. The Foundation makes no representations concerning + the copyright status of any work in any country outside the United + States. + + 1.E. Unless you have removed all references to Project Gutenberg: + + 1.E.1. The following sentence, with active links to, or other immediate + access to, the full Project Gutenberg-tm License must appear prominently + whenever any copy of a Project Gutenberg-tm work (any work on which the + phrase "Project Gutenberg" appears, or with which the phrase "Project + Gutenberg" is associated) is accessed, displayed, performed, viewed, + copied or distributed: + + This eBook is for the use of anyone anywhere at no cost and with + almost no restrictions whatsoever. You may copy it, give it away or + re-use it under the terms of the Project Gutenberg License included + with this eBook or online at www.gutenberg.org + + 1.E.2. If an individual Project Gutenberg-tm electronic work is derived + from the public domain (does not contain a notice indicating that it is + posted with permission of the copyright holder), the work can be copied + and distributed to anyone in the United States without paying any fees + or charges. If you are redistributing or providing access to a work + with the phrase "Project Gutenberg" associated with or appearing on the + work, you must comply either with the requirements of paragraphs 1.E.1 + through 1.E.7 or obtain permission for the use of the work and the + Project Gutenberg-tm trademark as set forth in paragraphs 1.E.8 or + 1.E.9. + + 1.E.3. If an individual Project Gutenberg-tm electronic work is posted + with the permission of the copyright holder, your use and distribution + must comply with both paragraphs 1.E.1 through 1.E.7 and any additional + terms imposed by the copyright holder. Additional terms will be linked + to the Project Gutenberg-tm License for all works posted with the + permission of the copyright holder found at the beginning of this work. + + 1.E.4. Do not unlink or detach or remove the full Project Gutenberg-tm + License terms from this work, or any files containing a part of this + work or any other work associated with Project Gutenberg-tm. + + 1.E.5. Do not copy, display, perform, distribute or redistribute this + electronic work, or any part of this electronic work, without + prominently displaying the sentence set forth in paragraph 1.E.1 with + active links or immediate access to the full terms of the Project + Gutenberg-tm License. + + 1.E.6. You may convert to and distribute this work in any binary, + compressed, marked up, nonproprietary or proprietary form, including any + word processing or hypertext form. However, if you provide access to or + distribute copies of a Project Gutenberg-tm work in a format other than + "Plain Vanilla ASCII" or other format used in the official version + posted on the official Project Gutenberg-tm web site (www.gutenberg.org), + you must, at no additional cost, fee or expense to the user, provide a + copy, a means of exporting a copy, or a means of obtaining a copy upon + request, of the work in its original "Plain Vanilla ASCII" or other + form. Any alternate format must include the full Project Gutenberg-tm + License as specified in paragraph 1.E.1. + + 1.E.7. Do not charge a fee for access to, viewing, displaying, + performing, copying or distributing any Project Gutenberg-tm works + unless you comply with paragraph 1.E.8 or 1.E.9. + + 1.E.8. You may charge a reasonable fee for copies of or providing + access to or distributing Project Gutenberg-tm electronic works provided + that + + - You pay a royalty fee of 20% of the gross profits you derive from + the use of Project Gutenberg-tm works calculated using the method + you already use to calculate your applicable taxes. The fee is + owed to the owner of the Project Gutenberg-tm trademark, but he + has agreed to donate royalties under this paragraph to the + Project Gutenberg Literary Archive Foundation. Royalty payments + must be paid within 60 days following each date on which you + prepare (or are legally required to prepare) your periodic tax + returns. Royalty payments should be clearly marked as such and + sent to the Project Gutenberg Literary Archive Foundation at the + address specified in Section 4, "Information about donations to + the Project Gutenberg Literary Archive Foundation." + + - You provide a full refund of any money paid by a user who notifies + you in writing (or by e-mail) within 30 days of receipt that s/he + does not agree to the terms of the full Project Gutenberg-tm + License. You must require such a user to return or + destroy all copies of the works possessed in a physical medium + and discontinue all use of and all access to other copies of + Project Gutenberg-tm works. + + - You provide, in accordance with paragraph 1.F.3, a full refund of any + money paid for a work or a replacement copy, if a defect in the + electronic work is discovered and reported to you within 90 days + of receipt of the work. + + - You comply with all other terms of this agreement for free + distribution of Project Gutenberg-tm works. + + 1.E.9. If you wish to charge a fee or distribute a Project Gutenberg-tm + electronic work or group of works on different terms than are set + forth in this agreement, you must obtain permission in writing from + both the Project Gutenberg Literary Archive Foundation and Michael + Hart, the owner of the Project Gutenberg-tm trademark. Contact the + Foundation as set forth in Section 3 below. + + 1.F. + + 1.F.1. Project Gutenberg volunteers and employees expend considerable + effort to identify, do copyright research on, transcribe and proofread + public domain works in creating the Project Gutenberg-tm + collection. Despite these efforts, Project Gutenberg-tm electronic + works, and the medium on which they may be stored, may contain + "Defects," such as, but not limited to, incomplete, inaccurate or + corrupt data, transcription errors, a copyright or other intellectual + property infringement, a defective or damaged disk or other medium, a + computer virus, or computer codes that damage or cannot be read by + your equipment. + + 1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except for the "Right + of Replacement or Refund" described in paragraph 1.F.3, the Project + Gutenberg Literary Archive Foundation, the owner of the Project + Gutenberg-tm trademark, and any other party distributing a Project + Gutenberg-tm electronic work under this agreement, disclaim all + liability to you for damages, costs and expenses, including legal + fees. YOU AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT + LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT EXCEPT THOSE + PROVIDED IN PARAGRAPH F3. YOU AGREE THAT THE FOUNDATION, THE + TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE + LIABLE TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE OR + INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF THE POSSIBILITY OF SUCH + DAMAGE. + + 1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you discover a + defect in this electronic work within 90 days of receiving it, you can + receive a refund of the money (if any) you paid for it by sending a + written explanation to the person you received the work from. If you + received the work on a physical medium, you must return the medium with + your written explanation. The person or entity that provided you with + the defective work may elect to provide a replacement copy in lieu of a + refund. If you received the work electronically, the person or entity + providing it to you may choose to give you a second opportunity to + receive the work electronically in lieu of a refund. If the second copy + is also defective, you may demand a refund in writing without further + opportunities to fix the problem. + + 1.F.4. Except for the limited right of replacement or refund set forth + in paragraph 1.F.3, this work is provided to you 'AS-IS' WITH NO OTHER + WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO + WARRANTIES OF MERCHANTIBILITY OR FITNESS FOR ANY PURPOSE. + + 1.F.5. Some states do not allow disclaimers of certain implied + warranties or the exclusion or limitation of certain types of damages. + If any disclaimer or limitation set forth in this agreement violates the + law of the state applicable to this agreement, the agreement shall be + interpreted to make the maximum disclaimer or limitation permitted by + the applicable state law. The invalidity or unenforceability of any + provision of this agreement shall not void the remaining provisions. + + 1.F.6. INDEMNITY - You agree to indemnify and hold the Foundation, the + trademark owner, any agent or employee of the Foundation, anyone + providing copies of Project Gutenberg-tm electronic works in accordance + with this agreement, and any volunteers associated with the production, + promotion and distribution of Project Gutenberg-tm electronic works, + harmless from all liability, costs and expenses, including legal fees, + that arise directly or indirectly from any of the following which you do + or cause to occur: (a) distribution of this or any Project Gutenberg-tm + work, (b) alteration, modification, or additions or deletions to any + Project Gutenberg-tm work, and (c) any Defect you cause. + + + Section 2. Information about the Mission of Project Gutenberg-tm + + Project Gutenberg-tm is synonymous with the free distribution of + electronic works in formats readable by the widest variety of computers + including obsolete, old, middle-aged and new computers. It exists + because of the efforts of hundreds of volunteers and donations from + people in all walks of life. + + Volunteers and financial support to provide volunteers with the + assistance they need, are critical to reaching Project Gutenberg-tm's + goals and ensuring that the Project Gutenberg-tm collection will + remain freely available for generations to come. In 2001, the Project + Gutenberg Literary Archive Foundation was created to provide a secure + and permanent future for Project Gutenberg-tm and future generations. + To learn more about the Project Gutenberg Literary Archive Foundation + and how your efforts and donations can help, see Sections 3 and 4 + and the Foundation web page at http://www.pglaf.org. + + Section 3. Information about the Project Gutenberg Literary Archive + Foundation + + The Project Gutenberg Literary Archive Foundation is a non profit + 501(c)(3) educational corporation organized under the laws of the + state of Mississippi and granted tax exempt status by the Internal + Revenue Service. The Foundation's EIN or federal tax identification + number is 64-6221541. Its 501(c)(3) letter is posted at + http://pglaf.org/fundraising. Contributions to the Project Gutenberg + Literary Archive Foundation are tax deductible to the full extent + permitted by U.S. federal laws and your state's laws. + + The Foundation's principal office is located at 4557 Melan Dr. S. + Fairbanks, AK, 99712., but its volunteers and employees are scattered + throughout numerous locations. Its business office is located at + 809 North 1500 West, Salt Lake City, UT 84116, (801) 596-1887, email + business@pglaf.org. Email contact links and up to date contact + information can be found at the Foundation's web site and official + page at http://pglaf.org + + For additional contact information: + Dr. Gregory B. Newby + Chief Executive and Director + gbnewby@pglaf.org + + Section 4. Information about Donations to the Project Gutenberg + Literary Archive Foundation + + Project Gutenberg-tm depends upon and cannot survive without wide + spread public support and donations to carry out its mission of + increasing the number of public domain and licensed works that can be + freely distributed in machine readable form accessible by the widest + array of equipment including outdated equipment. Many small donations + ($1 to $5,000) are particularly important to maintaining tax exempt + status with the IRS. + + The Foundation is committed to complying with the laws regulating + charities and charitable donations in all 50 states of the United + States. Compliance requirements are not uniform and it takes a + considerable effort, much paperwork and many fees to meet and keep up + with these requirements. We do not solicit donations in locations + where we have not received written confirmation of compliance. To + SEND DONATIONS or determine the status of compliance for any + particular state visit http://pglaf.org + + While we cannot and do not solicit contributions from states where we + have not met the solicitation requirements, we know of no prohibition + against accepting unsolicited donations from donors in such states who + approach us with offers to donate. + + International donations are gratefully accepted, but we cannot make + any statements concerning tax treatment of donations received from + outside the United States. U.S. laws alone swamp our small staff. + + Please check the Project Gutenberg Web pages for current donation + methods and addresses. Donations are accepted in a number of other + ways including checks, online payments and credit card donations. + To donate, please visit: http://pglaf.org/donate + + Section 5. General Information About Project Gutenberg-tm electronic + works. + + Professor Michael S. Hart is the originator of the Project Gutenberg-tm + concept of a library of electronic works that could be freely shared + with anyone. For thirty years, he produced and distributed Project + Gutenberg-tm eBooks with only a loose network of volunteer support. + + Project Gutenberg-tm eBooks are often created from several printed + editions, all of which are confirmed as Public Domain in the U.S. + unless a copyright notice is included. Thus, we do not necessarily + keep eBooks in compliance with any particular paper edition. + + Most people start at our Web site which has the main PG search facility: + + http://www.gutenberg.org + + This Web site includes information about Project Gutenberg-tm, + including how to make donations to the Project Gutenberg Literary + Archive Foundation, how to help produce our new eBooks, and how to + subscribe to our email newsletter to hear about new eBooks. + */ } From 4af320ca2f7cfa1d9b215ab56c7a0528b9c78199 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 23:23:56 +0100 Subject: [PATCH 028/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#532) --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 20 ++++++++------------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 526e373814..6f5ca2b0e7 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.1 || ^8.0", "phpstan/extension-installer": "^1.1.0", - "phpstan/phpstan": "^0.12.99", + "phpstan/phpstan": "^0.12.100", "phpstan/phpstan-deprecation-rules": "^0.12.6" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index b830f0e874..4683a2cb87 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "6feb458185a9dd68bf51d3977c3070c4", + "content-hash": "98c8b515ce5fdac0bcbb29369b89f117", "packages": [ { "name": "phpstan/extension-installer", @@ -53,16 +53,16 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.99", + "version": "0.12.100", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" + "reference": "48236ddf823547081b2b153d1cd2994b784328c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/48236ddf823547081b2b153d1cd2994b784328c3", + "reference": "48236ddf823547081b2b153d1cd2994b784328c3", "shasum": "" }, "require": { @@ -93,7 +93,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.99" + "source": "https://github.com/phpstan/phpstan/tree/0.12.100" }, "funding": [ { @@ -104,16 +104,12 @@ "url": "https://github.com/phpstan", "type": "github" }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, { "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", "type": "tidelift" } ], - "time": "2021-09-12T20:09:55+00:00" + "time": "2022-11-01T09:52:08+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -180,5 +176,5 @@ "platform-overrides": { "php": "7.1.33" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } From dc3c3fad52250c572515419d8aa078acf57cac59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 23:24:20 +0100 Subject: [PATCH 029/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#533) --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 39 +++++++++++++++++----------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 2fcdfc977b..a450150985 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.1 || ^8.0", - "vimeo/psalm": "^4.27.0" + "vimeo/psalm": "^4.29.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 2493a49db5..2816b030fa 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "e5ab88085c2741e554b071b1b224fd46", + "content-hash": "ba847d83e6a4f8528b44ec411e6b7a2c", "packages": [ { "name": "amphp/amp", @@ -654,16 +654,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v4.15.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", "shasum": "" }, "require": { @@ -704,9 +704,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2022-09-04T07:30:47+00:00" }, { "name": "openlss/lib-array2xml", @@ -1092,16 +1092,16 @@ }, { "name": "symfony/console", - "version": "v4.4.45", + "version": "v4.4.48", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "28b77970939500fb04180166a1f716e75a871ef8" + "reference": "8e70c1cab07ac641b885ce80385b9824a293c623" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/28b77970939500fb04180166a1f716e75a871ef8", - "reference": "28b77970939500fb04180166a1f716e75a871ef8", + "url": "https://api.github.com/repos/symfony/console/zipball/8e70c1cab07ac641b885ce80385b9824a293c623", + "reference": "8e70c1cab07ac641b885ce80385b9824a293c623", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.45" + "source": "https://github.com/symfony/console/tree/v4.4.48" }, "funding": [ { @@ -1178,7 +1178,7 @@ "type": "tidelift" } ], - "time": "2022-08-17T14:50:19+00:00" + "time": "2022-10-26T16:02:45+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1588,16 +1588,16 @@ }, { "name": "vimeo/psalm", - "version": "4.27.0", + "version": "4.29.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff" + "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/faf106e717c37b8c81721845dba9de3d8deed8ff", - "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", + "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", "shasum": "" }, "require": { @@ -1636,6 +1636,7 @@ "phpdocumentor/reflection-docblock": "^5", "phpmyadmin/sql-parser": "5.1.0||dev-master", "phpspec/prophecy": ">=1.9.0", + "phpstan/phpdoc-parser": "1.2.* || 1.6.4", "phpunit/phpunit": "^9.0", "psalm/plugin-phpunit": "^0.16", "slevomat/coding-standard": "^7.0", @@ -1689,9 +1690,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.27.0" + "source": "https://github.com/vimeo/psalm/tree/4.29.0" }, - "time": "2022-08-31T13:47:09+00:00" + "time": "2022-10-11T17:09:17+00:00" }, { "name": "webmozart/assert", From 504778e7b251241f15c03638a517cc9aa3b7b1f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szabadi=20Istv=C3=A1n?= Date: Fri, 11 Nov 2022 22:58:05 +0100 Subject: [PATCH 030/229] Update Person.php (#535) --- src/Faker/Provider/hu_HU/Person.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Provider/hu_HU/Person.php b/src/Faker/Provider/hu_HU/Person.php index a4d1274fe4..76d84be07a 100644 --- a/src/Faker/Provider/hu_HU/Person.php +++ b/src/Faker/Provider/hu_HU/Person.php @@ -21,7 +21,7 @@ class Person extends \Faker\Provider\Person '{{title}} {{lastName}} {{firstNameFemale}}', '{{lastName}} {{firstNameFemale}} {{suffix}}', '{{title}} {{lastName}} {{firstNameFemale}} {{suffix}}', - '{{lastNameFemaleMarried}} {{$lastName}} {{firstNameFemale}}', + '{{lastNameFemaleMarried}} {{lastName}} {{firstNameFemale}}', '{{title}} {{lastNameFemaleMarried}} {{firstNameFemale}}', '{{lastName}} {{firstNameMaleNe}}', '{{title}} {{lastName}} {{firstNameMaleNe}}', From 318450f4373d7967bb41b52e11b28c7b345592e0 Mon Sep 17 00:00:00 2001 From: Romain Monteil Date: Sat, 3 Dec 2022 15:38:04 +0100 Subject: [PATCH 031/229] Update French regions list, remove TOM (#540) --- src/Faker/Provider/fr_FR/Address.php | 12 ++++++------ test/Faker/Provider/fr_FR/AddressTest.php | 11 ++++++++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Faker/Provider/fr_FR/Address.php b/src/Faker/Provider/fr_FR/Address.php index 5ca40ad9d9..106f648cca 100644 --- a/src/Faker/Provider/fr_FR/Address.php +++ b/src/Faker/Provider/fr_FR/Address.php @@ -43,13 +43,13 @@ class Address extends \Faker\Provider\Address 'Territoire britannique de l\'océan Indien', 'Territoires français du sud', 'Thailande', 'Timor', 'Togo', 'Tokelau', 'Tonga', 'Trinité et Tobago', 'Tunisie', 'Turkménistan', 'Turks et Caïques (Îles)', 'Turquie', 'Tuvalu', 'Ukraine', 'Uruguay', 'Vanuatu', 'Vatican (Etat du)', 'Venezuela', 'Vierges (Îles)', 'Vierges britanniques (Îles)', 'Vietnam', 'Wallis et Futuna (Îles)', 'Yemen', 'Yougoslavie', 'Zambie', 'Zaïre', 'Zimbabwe', ]; + /** + * @see https://en.wikipedia.org/wiki/Regions_of_France + */ private static $regions = [ - 'Alsace', 'Aquitaine', 'Auvergne', 'Bourgogne', 'Bretagne', 'Centre', 'Champagne-Ardenne', - 'Corse', 'Franche-Comté', 'Île-de-France', 'Languedoc-Roussillon', 'Limousin', - 'Lorraine', 'Midi-Pyrénées', 'Nord-Pas-de-Calais', 'Basse-Normandie', 'Haute-Normandie', - 'Pays-de-Loire', 'Picardie', 'Poitou-Charentes', "Provence-Alpes-Côte d'Azur", 'Rhone-Alpes', - 'Guadeloupe', 'Martinique', 'Guyane', 'Réunion', 'Saint-Pierre-et-Miquelon', 'Mayotte', - 'Saint-Barthélémy', 'Saint-Martin', 'Wallis-et-Futuna', 'Polynésie française', 'Nouvelle-Calédonie', + 'Auvergne-Rhône-Alpes', 'Bourgogne-Franche-Comté', 'Bretagne', 'Centre-Val de Loire', 'Corse', 'Grand Est', 'Hauts-de-France', + 'Île-de-France', 'Normandie', 'Nouvelle-Aquitaine', 'Occitanie', 'Pays de la Loire', "Provence-Alpes-Côte d'Azur", + 'Guadeloupe', 'Martinique', 'Guyane', 'La Réunion', 'Mayotte', ]; private static $departments = [ diff --git a/test/Faker/Provider/fr_FR/AddressTest.php b/test/Faker/Provider/fr_FR/AddressTest.php index 76c71692ff..04c05fec62 100644 --- a/test/Faker/Provider/fr_FR/AddressTest.php +++ b/test/Faker/Provider/fr_FR/AddressTest.php @@ -12,9 +12,14 @@ final class AddressTest extends TestCase { public function testSecondaryAddress() { - $secondaryAdress = $this->faker->secondaryAddress(); - self::assertNotEmpty($secondaryAdress); - self::assertIsString($secondaryAdress); + self::assertEquals('Étage 007', $this->faker->secondaryAddress()); + self::assertEquals('Bât. 932', $this->faker->secondaryAddress()); + } + + public function testRegion() + { + self::assertEquals('Occitanie', $this->faker->region()); + self::assertEquals('Auvergne-Rhône-Alpes', $this->faker->region()); } protected function getProviders(): iterable From e0e875cd41c2d76e694dda5773f11f5b910306fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Dec 2022 14:32:09 +0100 Subject: [PATCH 032/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#541) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.29.0 to 4.30.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/4.29.0...4.30.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 94 +++++++++++++++++----------------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index a450150985..b1919e01c7 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.1 || ^8.0", - "vimeo/psalm": "^4.29.0" + "vimeo/psalm": "^4.30.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 2816b030fa..c6d4b5b6e8 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "ba847d83e6a4f8528b44ec411e6b7a2c", + "content-hash": "c06b8d5f9750932bd65c549e1674c120", "packages": [ { "name": "amphp/amp", @@ -654,16 +654,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.1", + "version": "v4.15.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", "shasum": "" }, "require": { @@ -704,9 +704,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" }, - "time": "2022-09-04T07:30:47+00:00" + "time": "2022-11-12T15:38:23+00:00" }, { "name": "openlss/lib-array2xml", @@ -1092,16 +1092,16 @@ }, { "name": "symfony/console", - "version": "v4.4.48", + "version": "v4.4.49", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8e70c1cab07ac641b885ce80385b9824a293c623" + "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8e70c1cab07ac641b885ce80385b9824a293c623", - "reference": "8e70c1cab07ac641b885ce80385b9824a293c623", + "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", "shasum": "" }, "require": { @@ -1162,7 +1162,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.48" + "source": "https://github.com/symfony/console/tree/v4.4.49" }, "funding": [ { @@ -1178,20 +1178,20 @@ "type": "tidelift" } ], - "time": "2022-10-26T16:02:45+00:00" + "time": "2022-11-05T17:10:16+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -1206,7 +1206,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1244,7 +1244,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -1260,20 +1260,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -1288,7 +1288,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1327,7 +1327,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -1343,20 +1343,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { @@ -1365,7 +1365,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1406,7 +1406,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -1422,20 +1422,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -1444,7 +1444,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1489,7 +1489,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -1505,7 +1505,7 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/service-contracts", @@ -1588,16 +1588,16 @@ }, { "name": "vimeo/psalm", - "version": "4.29.0", + "version": "4.30.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3" + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", - "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d0bc6e25d89f649e4f36a534f330f8bb4643dd69", + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69", "shasum": "" }, "require": { @@ -1690,9 +1690,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.29.0" + "source": "https://github.com/vimeo/psalm/tree/4.30.0" }, - "time": "2022-10-11T17:09:17+00:00" + "time": "2022-11-06T20:37:08+00:00" }, { "name": "webmozart/assert", From 2f81438b4bafb1bb3ba5235001f2a911ccf145c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 6 Dec 2022 11:44:30 +0100 Subject: [PATCH 033/229] Fix: Do not use deprecated set-output command (#544) --- .github/workflows/branch-alias.yml | 2 +- .github/workflows/code-coverage.yml | 2 +- .github/workflows/coding-standards.yml | 2 +- .github/workflows/static-analysis.yml | 4 ++-- .github/workflows/tests.yml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/branch-alias.yml b/.github/workflows/branch-alias.yml index 3a475ad945..baa66cdc95 100644 --- a/.github/workflows/branch-alias.yml +++ b/.github/workflows/branch-alias.yml @@ -28,7 +28,7 @@ jobs: echo "Last tag was $TAG" ARR=(${TAG//./ }) ARR[1]=$((${ARR[1]}+1)) - echo ::set-output name=alias::${ARR[0]}.${ARR[1]} + echo "name=alias::${ARR[0]}.${ARR[1]}" >> $GITHUB_OUTPUT - name: Update branch alias run: | diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index f51c2e1a83..a08c360ad6 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -31,7 +31,7 @@ jobs: - name: Get composer cache directory id: composer-cache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies uses: actions/cache@v3 diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 62d69906e8..bd8910280d 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -31,7 +31,7 @@ jobs: - name: Determine composer cache directory id: composer-cache - run: echo "::set-output name=directory::$(composer config cache-dir)" + run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies installed with composer uses: actions/cache@v3 diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 4c2b7c26d9..4921e502c0 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -30,7 +30,7 @@ jobs: - name: Determine composer cache directory id: composer-cache - run: echo "::set-output name=directory::$(composer config cache-dir)" + run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies installed with composer uses: actions/cache@v3 @@ -72,7 +72,7 @@ jobs: - name: Determine composer cache directory id: composer-cache - run: echo "::set-output name=directory::$(composer config cache-dir)" + run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies installed with composer uses: actions/cache@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e63cb93784..c2e04b26a4 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -43,7 +43,7 @@ jobs: - name: Get composer cache directory id: composer-cache - run: echo "::set-output name=dir::$(composer config cache-files-dir)" + run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies uses: actions/cache@v3 From ca8f1cc85d68f6613f5eb4a1dc6c22efe6739c2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 6 Dec 2022 11:44:41 +0100 Subject: [PATCH 034/229] Fix: Do not bother running tests on Windows (#547) --- .github/workflows/tests.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c2e04b26a4..1ab7ef17f2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -24,9 +24,6 @@ jobs: - '7.4' - '8.0' - '8.1' - include: - - operating-system: 'windows-latest' - php-version: '7.1' runs-on: ${{ matrix.operating-system }} From 65f2e71fe99a6ae7b5b638290882f74e93247220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 6 Dec 2022 15:52:50 +0100 Subject: [PATCH 035/229] Fix: Streamline caching dependencies installed with composer (#545) --- .github/workflows/code-coverage.yml | 8 ++++---- .github/workflows/tests.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index a08c360ad6..e0b61d8ed8 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -29,14 +29,14 @@ jobs: extensions: intl php-version: ${{ matrix.php-version }} - - name: Get composer cache directory + - name: Determine composer cache directory id: composer-cache - run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT - - name: Cache dependencies + - name: Cache dependencies installed with composer uses: actions/cache@v3 with: - path: ${{ steps.composer-cache.outputs.dir }} + path: ${{ steps.composer-cache.outputs.directory }} key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1ab7ef17f2..679db06763 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,14 +38,14 @@ jobs: extensions: intl php-version: ${{ matrix.php-version }} - - name: Get composer cache directory + - name: Determine composer cache directory id: composer-cache - run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT - - name: Cache dependencies + - name: Cache dependencies installed with composer uses: actions/cache@v3 with: - path: ${{ steps.composer-cache.outputs.dir }} + path: ${{ steps.composer-cache.outputs.directory }} key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- From c9dec13f35cf84621e4dbd45a5d5228da1ece8c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 14:35:49 +0100 Subject: [PATCH 036/229] Enhancement: Lint YAML files (#548) * Enhancement: Lint YAML files * Fix: Consistently quote strings in YAML files * Fix: Remove extra empty lines * Fix: Ignore truthy rule for 'on' * Fix: Use explicit null --- .gitattributes | 1 + .github/stale.yml | 6 +- .github/workflows/bc-check.yml | 19 +++--- .github/workflows/branch-alias.yml | 48 +++++++-------- .github/workflows/code-coverage.yml | 46 +++++++-------- .github/workflows/coding-standards.yml | 66 +++++++++++++-------- .github/workflows/static-analysis.yml | 81 +++++++++++++------------- .github/workflows/tests.yml | 68 ++++++++++----------- .yamllint.yaml | 67 +++++++++++++++++++++ 9 files changed, 242 insertions(+), 160 deletions(-) create mode 100644 .yamllint.yaml diff --git a/.gitattributes b/.gitattributes index 85331d3511..5ee738da79 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,6 +5,7 @@ /.gitattributes export-ignore /.gitignore export-ignore /.php-cs-fixer.dist.php export-ignore +/.yamllint.yaml export-ignore /codecov.yml export-ignore /Makefile export-ignore /phpstan-baseline.neon export-ignore diff --git a/.github/stale.yml b/.github/stale.yml index 682c292e9a..38bea83155 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,10 +1,10 @@ daysUntilStale: 14 daysUntilClose: 7 exemptLabels: - - pinned - - security + - "pinned" + - "security" # Label to use when marking an issue as stale -staleLabel: lifecycle/stale +staleLabel: "lifecycle/stale" # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had diff --git a/.github/workflows/bc-check.yml b/.github/workflows/bc-check.yml index 437086ef28..aa88363fa7 100644 --- a/.github/workflows/bc-check.yml +++ b/.github/workflows/bc-check.yml @@ -1,21 +1,20 @@ - -on: - pull_request: +on: # yamllint disable-line rule:truthy + pull_request: ~ push: branches: - "main" - "[0-9].*" -name: BC Check +name: "BC Check" jobs: roave-bc-check: - name: Roave BC Check - runs-on: ubuntu-latest + name: "Roave BC Check" + runs-on: "ubuntu-latest" steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: "Checkout code" + uses: "actions/checkout@v3" - - name: Roave BC Check - uses: docker://nyholm/roave-bc-check-ga + - name: "Roave BC Check" + uses: "docker://nyholm/roave-bc-check-ga" diff --git a/.github/workflows/branch-alias.yml b/.github/workflows/branch-alias.yml index baa66cdc95..dcd71f1107 100644 --- a/.github/workflows/branch-alias.yml +++ b/.github/workflows/branch-alias.yml @@ -1,28 +1,28 @@ -name: Update branch alias +name: "Update branch alias" -on: +on: # yamllint disable-line rule:truthy push: - tags: ['*'] + tags: ["*"] jobs: branch-alias: - name: Update branch alias - runs-on: ubuntu-latest + name: "Update branch alias" + runs-on: "ubuntu-latest" steps: - - name: Set up PHP - uses: shivammathur/setup-php@v2 + - name: "Set up PHP" + uses: "shivammathur/setup-php@v2" with: - php-version: 7.4 - coverage: none + php-version: "7.4" + coverage: "none" - - name: Checkout code - uses: actions/checkout@v3 + - name: "Checkout code" + uses: "actions/checkout@v3" with: - ref: main + ref: "main" - - name: Find branch alias - id: find_alias + - name: "Find branch alias" + id: "find_alias" run: | TAG=$(echo $GITHUB_REF | cut -d'/' -f 3) echo "Last tag was $TAG" @@ -30,7 +30,7 @@ jobs: ARR[1]=$((${ARR[1]}+1)) echo "name=alias::${ARR[0]}.${ARR[1]}" >> $GITHUB_OUTPUT - - name: Update branch alias + - name: "Update branch alias" run: | CURRENT_ALIAS=$(composer config extra.branch-alias.dev-main | cut -d'-' -f 1) @@ -53,15 +53,15 @@ jobs: composer config extra.branch-alias.dev-main ${{ steps.find_alias.outputs.alias }}-dev - - name: Create Pull Request - uses: peter-evans/create-pull-request@v4 + - name: "Create Pull Request" + uses: "peter-evans/create-pull-request@v4" with: - base: main - branch: branch-alias-update - author: GitHub - committer: GitHub - commit-message: Updating branch alias to ${{ steps.find_alias.outputs.alias }} - title: Update branch alias - labels: pinned, do not merge + base: "main" + branch: "branch-alias-update" + author: "GitHub " + committer: "GitHub " + commit-message: "Updating branch alias to ${{ steps.find_alias.outputs.alias }}" + title: "Update branch alias" + labels: "pinned, do not merge" body: | Since we just tagged a new version, we need to update composer.json branch alias. This should not be merged until there are new features, as it would prevent patch releases. diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index e0b61d8ed8..ede5bbdadf 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -1,57 +1,57 @@ -on: - pull_request: +on: # yamllint disable-line rule:truthy + pull_request: ~ push: branches: - "main" - "[0-9].*" -name: Code Coverage +name: "Code Coverage" jobs: code-coverage: - name: Code Coverage + name: "Code Coverage" strategy: matrix: php-version: - - '8.0' + - "8.0" - runs-on: ubuntu-latest + runs-on: "ubuntu-latest" steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: "Checkout code" + uses: "actions/checkout@v3" - - name: Install PHP with extensions - uses: shivammathur/setup-php@v2 + - name: "Install PHP with extensions" + uses: "shivammathur/setup-php@v2" with: - coverage: pcov - extensions: intl - php-version: ${{ matrix.php-version }} + coverage: "pcov" + extensions: "intl" + php-version: "${{ matrix.php-version }}" - - name: Determine composer cache directory - id: composer-cache - run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT + - name: "Determine composer cache directory" + id: "composer-cache" + run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT" - - name: Cache dependencies installed with composer - uses: actions/cache@v3 + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v3" with: - path: ${{ steps.composer-cache.outputs.directory }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} + path: "${{ steps.composer-cache.outputs.directory }}" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- composer-${{ runner.os }}- composer- - - name: Download dependencies + - name: "Download dependencies" run: | composer update --no-interaction --no-progress --optimize-autoloader vendor/bin/simple-phpunit install - - name: Collect code coverage with PHPUnit + - name: "Collect code coverage with PHPUnit" run: | vendor/bin/simple-phpunit --coverage-clover=.build/logs/clover.xml - - name: Send code coverage report to codecov.io + - name: "Send code coverage report to codecov.io" run: | bash <(curl -s https://codecov.io/bash) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index bd8910280d..fbff43227d 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -1,63 +1,79 @@ -on: +on: # yamllint disable-line rule:truthy pull_request: ~ push: branches: - "main" - "[0-9].*" -name: Coding Standards +name: "Coding Standards" jobs: php-cs-fixer: - name: php-cs-fixer + name: "php-cs-fixer" - runs-on: ubuntu-latest + runs-on: "ubuntu-latest" strategy: matrix: php-version: - - 7.1 + - "7.1" steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: "Checkout code" + uses: "actions/checkout@v3" - - name: Set up PHP - uses: shivammathur/setup-php@v2 + - name: "Set up PHP" + uses: "shivammathur/setup-php@v2" with: - coverage: none - extensions: intl - php-version: ${{ matrix.php-version }} + coverage: "none" + extensions: "intl" + php-version: "${{ matrix.php-version }}" - - name: Determine composer cache directory - id: composer-cache - run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT + - name: "Determine composer cache directory" + id: "composer-cache" + run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT" - - name: Cache dependencies installed with composer - uses: actions/cache@v3 + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v3" with: - path: ${{ steps.composer-cache.outputs.directory }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} + path: "${{ steps.composer-cache.outputs.directory }}" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- composer-${{ runner.os }}- composer- - - name: Download dependencies + - name: "Download dependencies" run: | composer update --no-interaction --no-progress --optimize-autoloader composer bin php-cs-fixer install --no-interaction --no-progress --optimize-autoloader - - name: Cache cache file for php-cs-fixer - uses: actions/cache@v3 + - name: "Cache cache file for php-cs-fixer" + uses: "actions/cache@v3" with: - path: .php_cs.cache - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} + path: ".php_cs.cache" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- composer-${{ runner.os }}- composer- - - name: Run php-cs-fixer + - name: "Run php-cs-fixer" run: | vendor/bin/php-cs-fixer fix --diff --dry-run --verbose + + yamllint: + name: "yamllint" + + runs-on: "ubuntu-latest" + + steps: + - name: "Checkout code" + uses: "actions/checkout@v3" + + - name: "Lint YAML files" + uses: "ibiqlik/action-yamllint@v3.1.1" + with: + config_file: ".yamllint.yaml" + file_or_dir: "." + strict: true diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index 4921e502c0..ddc9730067 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -1,94 +1,93 @@ - -on: +on: # yamllint disable-line rule:truthy pull_request: ~ push: branches: - "main" - "[0-9].*" -name: Static analysis +name: "Static analysis" jobs: phpstan: - name: PHPStan - runs-on: ubuntu-latest + name: "PHPStan" + runs-on: "ubuntu-latest" strategy: matrix: - php-version: [7.4] + php-version: ["7.4"] steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: "Checkout code" + uses: "actions/checkout@v3" - - name: Set up PHP - uses: shivammathur/setup-php@v2 + - name: "Set up PHP" + uses: "shivammathur/setup-php@v2" with: - coverage: none - extensions: intl - php-version: ${{ matrix.php-version }} + coverage: "none" + extensions: "intl" + php-version: "${{ matrix.php-version }}" - - name: Determine composer cache directory - id: composer-cache - run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT + - name: "Determine composer cache directory" + id: "composer-cache" + run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT" - - name: Cache dependencies installed with composer - uses: actions/cache@v3 + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v3" with: - path: ${{ steps.composer-cache.outputs.directory }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} + path: "${{ steps.composer-cache.outputs.directory }}" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- composer-${{ runner.os }}- composer- - - name: Download dependencies + - name: "Download dependencies" run: | composer update --no-interaction --no-progress --optimize-autoloader composer bin phpstan install --no-interaction --no-progress --optimize-autoloader - - name: Run PHPStan + - name: "Run PHPStan" run: | vendor/bin/phpstan --no-progress psalm: - name: Psalm - runs-on: ubuntu-latest + name: "Psalm" + runs-on: "ubuntu-latest" strategy: matrix: - php-version: [7.4] + php-version: ["7.4"] steps: - - name: Checkout - uses: actions/checkout@v3 + - name: "Checkout" + uses: "actions/checkout@v3" - - name: Install PHP with extensions - uses: shivammathur/setup-php@v2 + - name: "Install PHP with extensions" + uses: "shivammathur/setup-php@v2" with: - coverage: none - extensions: intl - php-version: ${{ matrix.php-version }} + coverage: "none" + extensions: "intl" + php-version: "${{ matrix.php-version }}" - - name: Determine composer cache directory - id: composer-cache - run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT + - name: "Determine composer cache directory" + id: "composer-cache" + run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT" - - name: Cache dependencies installed with composer - uses: actions/cache@v3 + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v3" with: - path: ${{ steps.composer-cache.outputs.directory }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} + path: "${{ steps.composer-cache.outputs.directory }}" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- composer-${{ runner.os }}- composer- - - name: Download dependencies + - name: "Download dependencies" run: | composer update --no-interaction --no-progress --optimize-autoloader composer bin psalm install --no-interaction --no-progress --optimize-autoloader - - name: Run Psalm + - name: "Run Psalm" run: | vendor/bin/psalm --no-progress --output-format=github --shepherd diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 679db06763..7f435c4aaf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,64 +1,64 @@ # https://help.github.com/en/categories/automating-your-workflow-with-github-actions -on: - pull_request: +on: # yamllint disable-line rule:truthy + pull_request: ~ push: branches: - "main" - "[0-9].*" -name: Tests +name: "Tests" jobs: phpunit: - name: PHPUnit on ${{ matrix.operating-system }} with PHP ${{ matrix.php-version }} + name: "PHPUnit on ${{ matrix.operating-system }} with PHP ${{ matrix.php-version }}" strategy: matrix: operating-system: - - 'ubuntu-latest' + - "ubuntu-latest" php-version: - - '7.1' - - '7.2' - - '7.3' - - '7.4' - - '8.0' - - '8.1' + - "7.1" + - "7.2" + - "7.3" + - "7.4" + - "8.0" + - "8.1" - runs-on: ${{ matrix.operating-system }} + runs-on: "${{ matrix.operating-system }}" steps: - - name: Checkout code - uses: actions/checkout@v3 + - name: "Checkout code" + uses: "actions/checkout@v3" - - name: Install PHP with extensions - uses: shivammathur/setup-php@v2 + - name: "Install PHP with extensions" + uses: "shivammathur/setup-php@v2" with: - coverage: none - extensions: intl - php-version: ${{ matrix.php-version }} + coverage: "none" + extensions: "intl" + php-version: "${{ matrix.php-version }}" - - name: Determine composer cache directory - id: composer-cache - run: echo "directory=$(composer config cache-dir)" >> $GITHUB_OUTPUT + - name: "Determine composer cache directory" + id: "composer-cache" + run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT" - - name: Cache dependencies installed with composer - uses: actions/cache@v3 + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v3" with: - path: ${{ steps.composer-cache.outputs.directory }} - key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }} + path: "${{ steps.composer-cache.outputs.directory }}" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | composer-${{ runner.os }}-${{ matrix.php-version }}- composer-${{ runner.os }}- composer- - - name: Download dependencies - run: composer update --no-interaction --no-progress --optimize-autoloader + - name: "Download dependencies" + run: "composer update --no-interaction --no-progress --optimize-autoloader" - - name: Run tests - if: ${{ '8.1' != matrix.php-version }} - run: ./vendor/bin/simple-phpunit + - name: "Run tests" + if: "${{ '8.1' != matrix.php-version }}" + run: "./vendor/bin/simple-phpunit" - - name: Run tests for php 8.1 - if: ${{ '8.1' == matrix.php-version }} - run: SYMFONY_PHPUNIT_VERSION=9.5 ./vendor/bin/simple-phpunit + - name: "Run tests for php 8.1" + if: "${{ '8.1' == matrix.php-version }}" + run: "SYMFONY_PHPUNIT_VERSION=9.5 ./vendor/bin/simple-phpunit" diff --git a/.yamllint.yaml b/.yamllint.yaml new file mode 100644 index 0000000000..8409d5e3bf --- /dev/null +++ b/.yamllint.yaml @@ -0,0 +1,67 @@ +extends: "default" + +ignore: | + .build/ + vendor/ + vendor-bin/ + roave-bc-check.yaml + +rules: + braces: + max-spaces-inside-empty: 0 + max-spaces-inside: 1 + min-spaces-inside-empty: 0 + min-spaces-inside: 1 + brackets: + max-spaces-inside-empty: 0 + max-spaces-inside: 0 + min-spaces-inside-empty: 0 + min-spaces-inside: 0 + colons: + max-spaces-after: 1 + max-spaces-before: 0 + commas: + max-spaces-after: 1 + max-spaces-before: 0 + min-spaces-after: 1 + comments: + ignore-shebangs: true + min-spaces-from-content: 1 + require-starting-space: true + comments-indentation: "enable" + document-end: + present: false + document-start: + present: false + indentation: + check-multi-line-strings: false + indent-sequences: true + spaces: 2 + empty-lines: + max-end: 0 + max-start: 0 + max: 1 + empty-values: + forbid-in-block-mappings: true + forbid-in-flow-mappings: true + hyphens: + max-spaces-after: 2 + key-duplicates: "enable" + key-ordering: "disable" + line-length: "disable" + new-line-at-end-of-file: "enable" + new-lines: + type: "unix" + octal-values: + forbid-implicit-octal: true + quoted-strings: + quote-type: "double" + trailing-spaces: "enable" + truthy: + allowed-values: + - "false" + - "true" + +yaml-files: + - "*.yaml" + - "*.yml" From 9b8d695f90456a15d30b78d72887feb817c3f35e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 14:39:53 +0100 Subject: [PATCH 037/229] Fix: Drop support for PHP 7.1, 7.2, and 7.3 (#543) --- .github/workflows/coding-standards.yml | 2 +- .github/workflows/tests.yml | 3 --- CHANGELOG.md | 2 ++ README.md | 2 +- composer.json | 7 +++++-- vendor-bin/php-cs-fixer/composer.json | 4 ++-- vendor-bin/php-cs-fixer/composer.lock | 8 ++++---- vendor-bin/phpstan/composer.json | 4 ++-- vendor-bin/phpstan/composer.lock | 6 +++--- vendor-bin/psalm/composer.json | 4 ++-- vendor-bin/psalm/composer.lock | 6 +++--- 11 files changed, 25 insertions(+), 23 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index fbff43227d..81ea1d81f3 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -16,7 +16,7 @@ jobs: strategy: matrix: php-version: - - "7.1" + - "7.4" steps: - name: "Checkout code" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7f435c4aaf..5c87b52c54 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,9 +18,6 @@ jobs: operating-system: - "ubuntu-latest" php-version: - - "7.1" - - "7.2" - - "7.3" - "7.4" - "8.0" - "8.1" diff --git a/CHANGELOG.md b/CHANGELOG.md index 3350f92c70..2445daf3f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.20.0...main) +- Dropped support for PHP 7.1, 7.2, and 7.3 (#543) + ## [2022-07-20, v1.20.0](https://github.com/FakerPHP/Faker/compare/v1.19.0..v1.20.0) - Fixed typo in French phone number (#452) diff --git a/README.md b/README.md index 018c70bb7e..8958f9847d 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ It's heavily inspired by Perl's [Data::Faker](https://metacpan.org/pod/Data::Fak ### Installation -Faker requires PHP >= 7.1. +Faker requires PHP >= 7.4. ```shell composer require fakerphp/faker diff --git a/composer.json b/composer.json index 7c192ac7e4..392fb3c662 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,7 @@ } ], "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -50,7 +50,10 @@ "bamarni/composer-bin-plugin": true, "composer/package-versions-deprecated": true }, - "sort-packages": true + "sort-packages": true, + "platform": { + "php": "7.4.32" + } }, "extra": { "branch-alias": { diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 9238d9f4ed..ca13f8edf8 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,11 +1,11 @@ { "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "friendsofphp/php-cs-fixer": "^3.3.0" }, "config": { "platform": { - "php": "7.1.33" + "php": "7.4.32" }, "preferred-install": "dist", "sort-packages": true diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 1d97d1bfac..9e7c1851d5 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "c7ed5b5ca7a1a555f6841c04fb41da1d", + "content-hash": "5a3d8a39f5b3ca9b528e459bd7271808", "packages": [ { "name": "composer/semver", @@ -1713,11 +1713,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.1 || ^8.0" + "php": "^7.4 || ^8.0" }, "platform-dev": [], "platform-overrides": { - "php": "7.1.33" + "php": "7.4.32" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 6f5ca2b0e7..79431630dd 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -1,13 +1,13 @@ { "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.1.0", "phpstan/phpstan": "^0.12.100", "phpstan/phpstan-deprecation-rules": "^0.12.6" }, "config": { "platform": { - "php": "7.1.33" + "php": "7.4.32" }, "preferred-install": "dist", "sort-packages": true, diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 4683a2cb87..6cb5008177 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "98c8b515ce5fdac0bcbb29369b89f117", + "content-hash": "7b6c08f79ca08061f5282b0ca46daf3c", "packages": [ { "name": "phpstan/extension-installer", @@ -170,11 +170,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.1 || ^8.0" + "php": "^7.4 || ^8.0" }, "platform-dev": [], "platform-overrides": { - "php": "7.1.33" + "php": "7.4.32" }, "plugin-api-version": "2.3.0" } diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index b1919e01c7..3f22978855 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,11 +1,11 @@ { "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "vimeo/psalm": "^4.30.0" }, "config": { "platform": { - "php": "7.1.33" + "php": "7.4.32" }, "preferred-install": "dist", "sort-packages": true, diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index c6d4b5b6e8..bd4c905f85 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "c06b8d5f9750932bd65c549e1674c120", + "content-hash": "6440bd3321cecaca3d65a7d334326aab", "packages": [ { "name": "amphp/amp", @@ -1806,11 +1806,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.1 || ^8.0" + "php": "^7.4 || ^8.0" }, "platform-dev": [], "platform-overrides": { - "php": "7.1.33" + "php": "7.4.32" }, "plugin-api-version": "2.3.0" } From 02572a063ab47a14ac83ebb4737bddf3a17ca8da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Dec 2022 14:46:06 +0100 Subject: [PATCH 038/229] composer(deps): bump friendsofphp/php-cs-fixer from 3.3.0 to 3.13.0 in /vendor-bin/php-cs-fixer (#551) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump friendsofphp/php-cs-fixer Bumps [friendsofphp/php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) from 3.3.0 to 3.13.0. - [Release notes](https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/FriendsOfPHP/PHP-CS-Fixer/compare/v3.3.0...v3.13.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Run 'make cs' Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- src/Faker/Extension/Helper.php | 4 +- src/Faker/ORM/Propel/ColumnTypeGuesser.php | 8 +- src/Faker/ORM/Propel2/ColumnTypeGuesser.php | 2 +- src/Faker/Provider/en_GB/Company.php | 2 - src/Faker/Provider/fr_FR/Company.php | 1 + src/Faker/Provider/ro_RO/Person.php | 8 +- src/Faker/Provider/ru_RU/Company.php | 1 + src/Faker/Provider/tr_TR/Company.php | 1 + test/Faker/Extension/ContainerBuilderTest.php | 2 +- test/Faker/Provider/ro_RO/PersonTest.php | 2 + vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 1000 ++++++++++++----- 12 files changed, 722 insertions(+), 311 deletions(-) diff --git a/src/Faker/Extension/Helper.php b/src/Faker/Extension/Helper.php index 2820474cd4..27a66143fe 100644 --- a/src/Faker/Extension/Helper.php +++ b/src/Faker/Extension/Helper.php @@ -57,11 +57,9 @@ public static function numerify(string $string): string } } - $string = self::replaceWildcard($string, '%', static function () { + return self::replaceWildcard($string, '%', static function () { return mt_rand(1, 9); }); - - return $string; } /** diff --git a/src/Faker/ORM/Propel/ColumnTypeGuesser.php b/src/Faker/ORM/Propel/ColumnTypeGuesser.php index 2d05230b56..3d8a9a11e3 100644 --- a/src/Faker/ORM/Propel/ColumnTypeGuesser.php +++ b/src/Faker/ORM/Propel/ColumnTypeGuesser.php @@ -69,9 +69,9 @@ public function guessFormat(\ColumnMap $column) case \PropelColumnTypes::FLOAT: case \PropelColumnTypes::DOUBLE: case \PropelColumnTypes::REAL: - return static function () use ($generator) { - return $generator->randomFloat(); - }; + return static function () use ($generator) { + return $generator->randomFloat(); + }; case \PropelColumnTypes::CHAR: case \PropelColumnTypes::VARCHAR: @@ -102,7 +102,7 @@ public function guessFormat(\ColumnMap $column) case \PropelColumnTypes::OBJECT: case \PropelColumnTypes::PHP_ARRAY: default: - // no smart way to guess what the user expects here + // no smart way to guess what the user expects here return null; } } diff --git a/src/Faker/ORM/Propel2/ColumnTypeGuesser.php b/src/Faker/ORM/Propel2/ColumnTypeGuesser.php index 66e109c798..4c08e0ad3a 100644 --- a/src/Faker/ORM/Propel2/ColumnTypeGuesser.php +++ b/src/Faker/ORM/Propel2/ColumnTypeGuesser.php @@ -105,7 +105,7 @@ public function guessFormat(ColumnMap $column) case PropelTypes::OBJECT: case PropelTypes::PHP_ARRAY: default: - // no smart way to guess what the user expects here + // no smart way to guess what the user expects here return null; } } diff --git a/src/Faker/Provider/en_GB/Company.php b/src/Faker/Provider/en_GB/Company.php index e00b34c170..acf56e5bdd 100644 --- a/src/Faker/Provider/en_GB/Company.php +++ b/src/Faker/Provider/en_GB/Company.php @@ -21,7 +21,6 @@ class Company extends \Faker\Provider\Company public static function vat(string $type = null): string { switch ($type) { - case static::VAT_TYPE_BRANCH: return static::generateBranchTraderVatNumber(); @@ -33,7 +32,6 @@ public static function vat(string $type = null): string default: return static::generateStandardVatNumber(); - } } diff --git a/src/Faker/Provider/fr_FR/Company.php b/src/Faker/Provider/fr_FR/Company.php index fcc142dadb..0a659aa7c6 100644 --- a/src/Faker/Provider/fr_FR/Company.php +++ b/src/Faker/Provider/fr_FR/Company.php @@ -173,6 +173,7 @@ protected static function isCatchPhraseValid($catchPhrase) /** * @see http://www.pole-emploi.fr/candidat/le-code-rome-et-les-fiches-metiers-@/article.jspz?id=60702 + * * @note Randomly took 300 from this list */ protected static $jobTitleFormat = [ diff --git a/src/Faker/Provider/ro_RO/Person.php b/src/Faker/Provider/ro_RO/Person.php index d3b5a5ea2a..d8ef51d005 100644 --- a/src/Faker/Provider/ro_RO/Person.php +++ b/src/Faker/Provider/ro_RO/Person.php @@ -163,12 +163,12 @@ protected function getDateOfBirth($dateOfBirth) switch (count($dateOfBirthParts)) { case 1: $dateOfBirthParts[] = $baseDate->format('m'); - //don't break, we need the day also - // no break + //don't break, we need the day also + // no break case 2: $dateOfBirthParts[] = $baseDate->format('d'); - //don't break, next line will - // no break + //don't break, next line will + // no break case 3: break; diff --git a/src/Faker/Provider/ru_RU/Company.php b/src/Faker/Provider/ru_RU/Company.php index 25c5c8e9dc..9f5d572f40 100644 --- a/src/Faker/Provider/ru_RU/Company.php +++ b/src/Faker/Provider/ru_RU/Company.php @@ -44,6 +44,7 @@ class Company extends \Faker\Provider\Company /** * @see https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D1%80%D0%BE%D1%84%D0%B5%D1%81%D1%81%D0%B8%D0%B8 + * * @note Randomly took from this list - some jobs titles for each letter */ protected static $jobTitleFormat = [ diff --git a/src/Faker/Provider/tr_TR/Company.php b/src/Faker/Provider/tr_TR/Company.php index 1458bb8622..e7b7892c15 100644 --- a/src/Faker/Provider/tr_TR/Company.php +++ b/src/Faker/Provider/tr_TR/Company.php @@ -31,6 +31,7 @@ class Company extends \Faker\Provider\Company /** * @see https://tr.wikipedia.org/wiki/Meslekler_listesi + * * @note Randomly took 300 from this list */ protected static $jobTitleFormat = [ diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index a97415dbc0..bdfc1937ed 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -34,7 +34,7 @@ public function testAddRejectsInvalidValue($value): void } /** - * @return \Generator + * @return \Generator */ public function provideInvalidValue(): \Generator { diff --git a/test/Faker/Provider/ro_RO/PersonTest.php b/test/Faker/Provider/ro_RO/PersonTest.php index 77ca19a1f8..76849e42af 100644 --- a/test/Faker/Provider/ro_RO/PersonTest.php +++ b/test/Faker/Provider/ro_RO/PersonTest.php @@ -138,6 +138,7 @@ public function testInvalidYearThrowsException($value) /** * @param string $value + * * @dataProvider validCountyCodeProvider */ public function testValidCountyCodeReturnsValidCnp($value) @@ -151,6 +152,7 @@ public function testValidCountyCodeReturnsValidCnp($value) /** * @param string $value + * * @dataProvider invalidCountyCodeProvider */ public function testInvalidCountyCodeThrowsException($value) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index ca13f8edf8..55208850a3 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.3.0" + "friendsofphp/php-cs-fixer": "^3.13.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 9e7c1851d5..35b7f28419 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/composer.lock @@ -4,27 +4,98 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5a3d8a39f5b3ca9b528e459bd7271808", + "content-hash": "44a6fb6f6db40d9eb55eafdb8d9b11a8", "packages": [ + { + "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.2.6", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "83e511e247de329283478496f7a1e114c9517506" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", - "reference": "83e511e247de329283478496f7a1e114c9517506", + "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": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -69,7 +140,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.6" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -85,29 +156,31 @@ "type": "tidelift" } ], - "time": "2021-10-25T11:34:17+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/xdebug-handler", - "version": "2.0.2", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -133,7 +206,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, "funding": [ { @@ -149,20 +222,20 @@ "type": "tidelift" } ], - "time": "2021-07-31T17:03:58+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", "shasum": "" }, "require": { @@ -174,9 +247,10 @@ "require-dev": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" }, "type": "library", "autoload": { @@ -219,36 +293,34 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.13.3" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2022-07-02T10:48:51+00:00" }, { "name": "doctrine/lexer", - "version": "1.0.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", - "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" @@ -259,14 +331,14 @@ "MIT" ], "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, { "name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com" }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" @@ -283,59 +355,72 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.0.2" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, - "time": "2019-06-08T11:03:04+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-02-28T11:07:21+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.3.0", + "version": "v3.13.0", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "0ad2f84130e8fec8655682532e6d39553054831c" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/0ad2f84130e8fec8655682532e6d39553054831c", - "reference": "0ad2f84130e8fec8655682532e6d39553054831c", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a6232229a8309e8811dc751c28b91cb34b2943e1", + "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1", "shasum": "" }, "require": { "composer/semver": "^3.2", - "composer/xdebug-handler": "^2.0", - "doctrine/annotations": "^1.12", + "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^1.13", "ext-json": "*", "ext-tokenizer": "*", - "php": "^7.1.3 || ^8.0", - "php-cs-fixer/diff": "^2.0", - "symfony/console": "^4.4.20 || ^5.1.3", - "symfony/event-dispatcher": "^4.4.20 || ^5.0", - "symfony/filesystem": "^4.4.20 || ^5.0", - "symfony/finder": "^4.4.20 || ^5.0", - "symfony/options-resolver": "^4.4.20 || ^5.0", + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/options-resolver": "^5.4 || ^6.0", "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php72": "^1.23", - "symfony/polyfill-php80": "^1.23", - "symfony/polyfill-php81": "^1.23", - "symfony/process": "^4.4.20 || ^5.0", - "symfony/stopwatch": "^4.4.20 || ^5.0" + "symfony/polyfill-php80": "^1.25", + "symfony/polyfill-php81": "^1.25", + "symfony/process": "^5.4 || ^6.0", + "symfony/stopwatch": "^5.4 || ^6.0" }, "require-dev": { "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", - "mikey179/vfsstream": "^1.6.8", - "php-coveralls/php-coveralls": "^2.4.3", + "keradus/cli-executor": "^2.0", + "mikey179/vfsstream": "^1.6.10", + "php-coveralls/php-coveralls": "^2.5.2", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.10.3", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^5.2.4", - "symfony/yaml": "^4.4.20 || ^5.0" + "phpspec/prophecy": "^1.15", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "phpunitgoodpractices/polyfill": "^1.6", + "phpunitgoodpractices/traits": "^1.9.2", + "symfony/phpunit-bridge": "^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -366,8 +451,8 @@ ], "description": "A tool to automatically fix PHP code style", "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.3.0" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.0" }, "funding": [ { @@ -375,86 +460,78 @@ "type": "github" } ], - "time": "2021-11-15T17:28:29+00:00" + "time": "2022-10-31T19:28:50+00:00" }, { - "name": "php-cs-fixer/diff", - "version": "v2.0.2", + "name": "psr/cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Psr\\Cache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "sebastian/diff v3 backport support for PHP 5.6+", - "homepage": "https://github.com/PHP-CS-Fixer", + "description": "Common interface for caching libraries", "keywords": [ - "diff" + "cache", + "psr", + "psr-6" ], "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" + "source": "https://github.com/php-fig/cache/tree/master" }, - "time": "2020-10-14T08:32:19+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { - "name": "psr/cache", - "version": "1.0.1", + "name": "psr/container", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Psr\\Cache\\": "src/" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -464,36 +541,40 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interface for caching libraries", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "cache", - "psr", - "psr-6" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { - "name": "psr/container", + "name": "psr/event-dispatcher", "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", "extra": { @@ -503,7 +584,7 @@ }, "autoload": { "psr-4": { - "Psr\\Container\\": "src/" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -516,20 +597,17 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Standard interfaces for event handling.", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "events", + "psr", + "psr-14" ], "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2017-02-14T16:28:37+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { "name": "psr/log", @@ -581,45 +659,114 @@ }, "time": "2021-05-03T11:20:27+00:00" }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, { "name": "symfony/console", - "version": "v4.4.34", + "version": "v5.4.16", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0" + "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/329b3a75cc6b16d435ba1b1a41df54a53382a3f0", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0", + "url": "https://api.github.com/repos/symfony/console/zipball/8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", + "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^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/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -652,8 +799,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/console/tree/v4.4.34" + "source": "https://github.com/symfony/console/tree/v5.4.16" }, "funding": [ { @@ -669,43 +822,111 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2022-11-25T14:09:27+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.34", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -737,7 +958,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/v4.4.34" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9" }, "funding": [ { @@ -753,33 +974,33 @@ "type": "tidelift" } ], - "time": "2021-11-15T14:42:25+00:00" + "time": "2022-05-05T16:45:39+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.11", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c" + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -816,7 +1037,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.11" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" }, "funding": [ { @@ -832,25 +1053,26 @@ "type": "tidelift" } ], - "time": "2021-03-23T15:25:38+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.27", + "version": "v5.4.13", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "517fb795794faf29086a77d99eb8f35e457837a7" + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/517fb795794faf29086a77d99eb8f35e457837a7", - "reference": "517fb795794faf29086a77d99eb8f35e457837a7", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51", + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -879,7 +1101,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.4.27" + "source": "https://github.com/symfony/filesystem/tree/v5.4.13" }, "funding": [ { @@ -895,24 +1117,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2022-09-21T19:53:16+00:00" }, { "name": "symfony/finder", - "version": "v4.4.30", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "70362f1e112280d75b30087c7598b837c1b468b6" + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/70362f1e112280d75b30087c7598b837c1b468b6", - "reference": "70362f1e112280d75b30087c7598b837c1b468b6", + "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", + "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -941,7 +1164,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.30" + "source": "https://github.com/symfony/finder/tree/v5.4.11" }, "funding": [ { @@ -957,24 +1180,26 @@ "type": "tidelift" } ], - "time": "2021-08-04T20:31:23+00:00" + "time": "2022-07-29T07:37:50+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.4.30", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "fa0b12a3a47ed25749d47d6b4f61412fd5ca1554" + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/fa0b12a3a47ed25749d47d6b4f61412fd5ca1554", - "reference": "fa0b12a3a47ed25749d47d6b4f61412fd5ca1554", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690", + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -1008,7 +1233,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v4.4.30" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.11" }, "funding": [ { @@ -1024,32 +1249,35 @@ "type": "tidelift" } ], - "time": "2021-08-04T20:31:23+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1057,12 +1285,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1087,7 +1315,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -1103,32 +1331,32 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { "php": ">=7.1" }, "suggest": { - "ext-mbstring": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1136,11 +1364,95 @@ } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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" + } + }, + "autoload": { "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1157,17 +1469,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", + "intl", + "normalizer", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -1183,29 +1496,35 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1213,12 +1532,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1234,16 +1553,17 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -1259,20 +1579,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { @@ -1281,7 +1601,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1289,12 +1609,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1322,7 +1642,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -1338,20 +1658,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -1360,7 +1680,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1368,12 +1688,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1405,7 +1725,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -1421,20 +1741,20 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { @@ -1443,7 +1763,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1451,12 +1771,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -1484,7 +1804,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -1500,24 +1820,24 @@ "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/process", - "version": "v4.4.34", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a8d1a7b6f9ab04e45b08ef634125ac6d1deef813" + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a8d1a7b6f9ab04e45b08ef634125ac6d1deef813", - "reference": "a8d1a7b6f9ab04e45b08ef634125ac6d1deef813", + "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", + "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -1546,7 +1866,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.34" + "source": "https://github.com/symfony/process/tree/v5.4.11" }, "funding": [ { @@ -1562,25 +1882,29 @@ "type": "tidelift" } ], - "time": "2021-11-16T10:35:10+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/service-contracts", - "version": "v1.1.11", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "633df678bec3452e04a7b0337c9bcfe7354124b3" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/633df678bec3452e04a7b0337c9bcfe7354124b3", - "reference": "633df678bec3452e04a7b0337c9bcfe7354124b3", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -1588,7 +1912,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1625,7 +1949,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.11" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -1641,25 +1965,25 @@ "type": "tidelift" } ], - "time": "2021-11-04T13:32:43+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/stopwatch", - "version": "v4.4.27", + "version": "v5.4.13", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "c85d997af06a58ba83e2d2538e335b894c24523d" + "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/c85d997af06a58ba83e2d2538e335b894c24523d", - "reference": "c85d997af06a58ba83e2d2538e335b894c24523d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6df7a3effde34d81717bbef4591e5ffe32226d69", + "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/service-contracts": "^1.0|^2" + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { @@ -1687,7 +2011,93 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v4.4.27" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.13" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-09-28T13:19:49+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.15" }, "funding": [ { @@ -1703,7 +2113,7 @@ "type": "tidelift" } ], - "time": "2021-07-10T08:41:57+00:00" + "time": "2022-10-05T15:16:54+00:00" } ], "packages-dev": [], From c5d2efb28428cfcad29d60f4fbbf59eee43a5273 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 17:30:34 +0100 Subject: [PATCH 039/229] Enhancement: Enable `void_return` fixer (#554) * Enhancement: Enable void_return fixer * Fix: Run 'make cs' --- .php-cs-fixer.dist.php | 1 + src/Faker/Calculator/Isbn.php | 2 +- src/Faker/Generator.php | 6 +- src/Faker/ORM/CakePHP/EntityPopulator.php | 8 +- src/Faker/ORM/Doctrine/EntityPopulator.php | 12 +- src/Faker/ORM/Doctrine/Populator.php | 2 +- src/Faker/ORM/Mandango/EntityPopulator.php | 4 +- src/Faker/ORM/Mandango/Populator.php | 2 +- src/Faker/ORM/Propel/EntityPopulator.php | 12 +- src/Faker/ORM/Propel/Populator.php | 2 +- src/Faker/ORM/Propel2/EntityPopulator.php | 12 +- src/Faker/ORM/Propel2/Populator.php | 2 +- src/Faker/ORM/Spot/EntityPopulator.php | 12 +- src/Faker/ORM/Spot/Populator.php | 2 +- src/Faker/Provider/DateTime.php | 2 +- src/Faker/Provider/HtmlLorem.php | 26 ++-- test/Faker/Calculator/EanTest.php | 8 +- test/Faker/Calculator/IbanTest.php | 8 +- test/Faker/Calculator/LuhnTest.php | 6 +- test/Faker/Core/BarcodeTest.php | 4 +- test/Faker/Core/ColorTest.php | 20 +-- test/Faker/Core/DateTimeTest.php | 48 +++---- test/Faker/Core/NumberTest.php | 26 ++-- test/Faker/Core/UuidTest.php | 4 +- test/Faker/DefaultGeneratorTest.php | 6 +- test/Faker/Extension/HelperTest.php | 28 ++-- test/Faker/GeneratorTest.php | 32 ++--- test/Faker/Provider/AddressTest.php | 6 +- test/Faker/Provider/BarcodeTest.php | 4 +- test/Faker/Provider/BaseTest.php | 136 +++++++++--------- test/Faker/Provider/BiasedTest.php | 8 +- test/Faker/Provider/ColorTest.php | 20 +-- test/Faker/Provider/CompanyTest.php | 2 +- test/Faker/Provider/DateTimeTest.php | 40 +++--- test/Faker/Provider/HtmlLoremTest.php | 4 +- test/Faker/Provider/ImageTest.php | 26 ++-- test/Faker/Provider/InternetTest.php | 34 ++--- test/Faker/Provider/LoremTest.php | 26 ++-- test/Faker/Provider/MiscellaneousTest.php | 20 +-- test/Faker/Provider/PaymentTest.php | 14 +- test/Faker/Provider/PersonTest.php | 16 +-- test/Faker/Provider/PhoneNumberTest.php | 4 +- test/Faker/Provider/ProviderOverrideTest.php | 16 +-- test/Faker/Provider/TextTest.php | 16 +-- test/Faker/Provider/UserAgentTest.php | 16 +-- test/Faker/Provider/UuidTest.php | 4 +- test/Faker/Provider/ar_EG/CompanyTest.php | 4 +- test/Faker/Provider/ar_EG/InternetTest.php | 2 +- test/Faker/Provider/ar_EG/PersonTest.php | 2 +- test/Faker/Provider/ar_EG/TextTest.php | 2 +- test/Faker/Provider/ar_JO/InternetTest.php | 2 +- test/Faker/Provider/ar_SA/CompanyTest.php | 2 +- test/Faker/Provider/ar_SA/InternetTest.php | 2 +- test/Faker/Provider/ar_SA/PersonTest.php | 6 +- test/Faker/Provider/bg_BG/PaymentTest.php | 2 +- test/Faker/Provider/bn_BD/PersonTest.php | 4 +- test/Faker/Provider/cs_CZ/PersonTest.php | 2 +- test/Faker/Provider/da_DK/InternetTest.php | 2 +- test/Faker/Provider/de_AT/AddressTest.php | 2 +- test/Faker/Provider/de_AT/InternetTest.php | 2 +- test/Faker/Provider/de_AT/PaymentTest.php | 4 +- test/Faker/Provider/de_AT/PersonTest.php | 6 +- test/Faker/Provider/de_AT/PhoneNumberTest.php | 4 +- test/Faker/Provider/de_CH/AddressTest.php | 8 +- test/Faker/Provider/de_CH/InternetTest.php | 2 +- test/Faker/Provider/de_CH/PersonTest.php | 4 +- test/Faker/Provider/de_CH/PhoneNumberTest.php | 6 +- test/Faker/Provider/de_DE/InternetTest.php | 2 +- test/Faker/Provider/de_DE/PhoneNumberTest.php | 8 +- test/Faker/Provider/el_GR/PhoneNumberTest.php | 12 +- test/Faker/Provider/el_GR/TextTest.php | 2 +- test/Faker/Provider/en_AU/AddressTest.php | 6 +- test/Faker/Provider/en_CA/AddressTest.php | 8 +- test/Faker/Provider/en_GB/AddressTest.php | 2 +- test/Faker/Provider/en_GB/CompanyTest.php | 14 +- test/Faker/Provider/en_GB/PersonTest.php | 2 +- test/Faker/Provider/en_GB/PhoneNumberTest.php | 2 +- test/Faker/Provider/en_IN/AddressTest.php | 8 +- test/Faker/Provider/en_NG/AddressTest.php | 6 +- test/Faker/Provider/en_NG/InternetTest.php | 2 +- test/Faker/Provider/en_NG/PersonTest.php | 2 +- test/Faker/Provider/en_NG/PhoneNumberTest.php | 2 +- test/Faker/Provider/en_NZ/PhoneNumberTest.php | 4 +- test/Faker/Provider/en_PH/AddressTest.php | 8 +- test/Faker/Provider/en_SG/AddressTest.php | 4 +- test/Faker/Provider/en_SG/PhoneNumberTest.php | 14 +- test/Faker/Provider/en_UG/AddressTest.php | 6 +- test/Faker/Provider/en_US/CompanyTest.php | 2 +- test/Faker/Provider/en_US/PaymentTest.php | 6 +- test/Faker/Provider/en_US/PersonTest.php | 2 +- test/Faker/Provider/en_US/PhoneNumberTest.php | 8 +- test/Faker/Provider/en_ZA/CompanyTest.php | 2 +- test/Faker/Provider/en_ZA/InternetTest.php | 2 +- test/Faker/Provider/en_ZA/PersonTest.php | 12 +- test/Faker/Provider/en_ZA/PhoneNumberTest.php | 6 +- test/Faker/Provider/es_ES/PaymentTest.php | 2 +- test/Faker/Provider/es_ES/PersonTest.php | 4 +- test/Faker/Provider/es_ES/PhoneNumberTest.php | 4 +- test/Faker/Provider/es_ES/TextTest.php | 2 +- test/Faker/Provider/es_PE/CompanyTest.php | 6 +- test/Faker/Provider/es_PE/PersonTest.php | 2 +- test/Faker/Provider/es_VE/CompanyTest.php | 2 +- test/Faker/Provider/es_VE/PersonTest.php | 2 +- test/Faker/Provider/fa_IR/PersonTest.php | 2 +- test/Faker/Provider/fi_FI/InternetTest.php | 2 +- test/Faker/Provider/fi_FI/PersonTest.php | 8 +- test/Faker/Provider/fr_BE/PaymentTest.php | 2 +- test/Faker/Provider/fr_CH/AddressTest.php | 8 +- test/Faker/Provider/fr_CH/InternetTest.php | 2 +- test/Faker/Provider/fr_CH/PersonTest.php | 2 +- test/Faker/Provider/fr_CH/PhoneNumberTest.php | 4 +- test/Faker/Provider/fr_FR/AddressTest.php | 4 +- test/Faker/Provider/fr_FR/ColorTest.php | 4 +- test/Faker/Provider/fr_FR/CompanyTest.php | 14 +- test/Faker/Provider/fr_FR/PaymentTest.php | 4 +- test/Faker/Provider/fr_FR/PersonTest.php | 6 +- test/Faker/Provider/fr_FR/PhoneNumberTest.php | 14 +- test/Faker/Provider/fr_FR/TextTest.php | 2 +- test/Faker/Provider/hu_HU/PersonTest.php | 2 +- test/Faker/Provider/id_ID/PersonTest.php | 10 +- test/Faker/Provider/it_CH/AddressTest.php | 8 +- test/Faker/Provider/it_CH/InternetTest.php | 2 +- test/Faker/Provider/it_CH/PersonTest.php | 2 +- test/Faker/Provider/it_CH/PhoneNumberTest.php | 4 +- test/Faker/Provider/it_IT/CompanyTest.php | 2 +- test/Faker/Provider/it_IT/PersonTest.php | 2 +- test/Faker/Provider/ja_JP/InternetTest.php | 4 +- test/Faker/Provider/ja_JP/PersonTest.php | 10 +- test/Faker/Provider/ja_JP/PhoneNumberTest.php | 2 +- test/Faker/Provider/ka_GE/TextTest.php | 2 +- test/Faker/Provider/kk_KZ/CompanyTest.php | 2 +- test/Faker/Provider/kk_KZ/PersonTest.php | 2 +- test/Faker/Provider/kk_KZ/TextTest.php | 2 +- test/Faker/Provider/ko_KR/TextTest.php | 2 +- test/Faker/Provider/lt_LT/AddressTest.php | 2 +- test/Faker/Provider/mn_MN/PersonTest.php | 4 +- test/Faker/Provider/ms_MY/PersonTest.php | 2 +- test/Faker/Provider/nb_NO/PhoneNumberTest.php | 2 +- test/Faker/Provider/nl_BE/PaymentTest.php | 4 +- test/Faker/Provider/nl_BE/PersonTest.php | 6 +- test/Faker/Provider/nl_NL/CompanyTest.php | 4 +- test/Faker/Provider/nl_NL/PersonTest.php | 2 +- test/Faker/Provider/pl_PL/AddressTest.php | 2 +- .../Faker/Provider/pl_PL/LicensePlateTest.php | 32 ++--- test/Faker/Provider/pl_PL/PersonTest.php | 18 +-- test/Faker/Provider/pt_BR/CompanyTest.php | 2 +- test/Faker/Provider/pt_BR/PersonTest.php | 4 +- test/Faker/Provider/pt_BR/TextTest.php | 2 +- test/Faker/Provider/pt_PT/AddressTest.php | 4 +- test/Faker/Provider/pt_PT/PersonTest.php | 2 +- test/Faker/Provider/pt_PT/PhoneNumberTest.php | 4 +- test/Faker/Provider/ro_RO/PersonTest.php | 18 +-- test/Faker/Provider/ro_RO/PhoneNumberTest.php | 6 +- test/Faker/Provider/ru_RU/CompanyTest.php | 10 +- test/Faker/Provider/ru_RU/PersonTest.php | 6 +- test/Faker/Provider/ru_RU/TextTest.php | 2 +- .../Faker/Provider/sv_SE/MunicipalityTest.php | 2 +- test/Faker/Provider/sv_SE/PersonTest.php | 12 +- test/Faker/Provider/tr_TR/CompanyTest.php | 2 +- test/Faker/Provider/tr_TR/PaymentTest.php | 2 +- test/Faker/Provider/tr_TR/PersonTest.php | 6 +- test/Faker/Provider/tr_TR/PhoneNumberTest.php | 4 +- test/Faker/Provider/uk_UA/AddressTest.php | 12 +- test/Faker/Provider/uk_UA/PersonTest.php | 10 +- test/Faker/Provider/uk_UA/PhoneNumberTest.php | 4 +- test/Faker/Provider/zh_TW/CompanyTest.php | 2 +- test/Faker/Provider/zh_TW/PersonTest.php | 2 +- test/Faker/Provider/zh_TW/TextTest.php | 8 +- 168 files changed, 649 insertions(+), 648 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index c186f1ca07..83bb1fa7be 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -200,5 +200,6 @@ 'property', ], ], + 'void_return' => true, 'whitespace_after_comma_in_array' => true, ]); diff --git a/src/Faker/Calculator/Isbn.php b/src/Faker/Calculator/Isbn.php index 72a5c4ed93..f098233be8 100644 --- a/src/Faker/Calculator/Isbn.php +++ b/src/Faker/Calculator/Isbn.php @@ -34,7 +34,7 @@ public static function checksum(string $input): string $digits = str_split($input); array_walk( $digits, - static function (&$digit, $position) { + static function (&$digit, $position): void { $digit = (10 - $position) * $digit; } ); diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index 758399a3e6..e804f326be 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -597,7 +597,7 @@ public function ext(string $id): Extension\Extension return $extension; } - public function addProvider($provider) + public function addProvider($provider): void { array_unshift($this->providers, $provider); @@ -682,7 +682,7 @@ public function valid(?\Closure $validator = null, int $maxRetries = 10000) return new ValidGenerator($this, $validator, $maxRetries); } - public function seed($seed = null) + public function seed($seed = null): void { if ($seed === null) { mt_srand(); @@ -966,7 +966,7 @@ public function __destruct() $this->seed(); } - public function __wakeup() + public function __wakeup(): void { $this->formatters = []; } diff --git a/src/Faker/ORM/CakePHP/EntityPopulator.php b/src/Faker/ORM/CakePHP/EntityPopulator.php index cd9890bd4d..370fbd5acb 100644 --- a/src/Faker/ORM/CakePHP/EntityPopulator.php +++ b/src/Faker/ORM/CakePHP/EntityPopulator.php @@ -27,17 +27,17 @@ public function __get($name) /** * @param string $name */ - public function __set($name, $value) + public function __set($name, $value): void { $this->{$name} = $value; } - public function mergeColumnFormattersWith($columnFormatters) + public function mergeColumnFormattersWith($columnFormatters): void { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } - public function mergeModifiersWith($modifiers) + public function mergeModifiersWith($modifiers): void { $this->modifiers = array_merge($this->modifiers, $modifiers); } @@ -155,7 +155,7 @@ public function execute($class, $insertedEntities, $options = []) return $entity->{$pk[0]}; } - public function setConnection($name) + public function setConnection($name): void { $this->connectionName = $name; } diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php index 79d3796b8a..92efbcce80 100644 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ b/src/Faker/ORM/Doctrine/EntityPopulator.php @@ -38,7 +38,7 @@ public function getClass() return $this->class->getName(); } - public function setColumnFormatters($columnFormatters) + public function setColumnFormatters($columnFormatters): void { $this->columnFormatters = $columnFormatters; } @@ -51,12 +51,12 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters) + public function mergeColumnFormattersWith($columnFormatters): void { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } - public function setModifiers(array $modifiers) + public function setModifiers(array $modifiers): void { $this->modifiers = $modifiers; } @@ -69,7 +69,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith(array $modifiers) + public function mergeModifiersWith(array $modifiers): void { $this->modifiers = array_merge($this->modifiers, $modifiers); } @@ -193,7 +193,7 @@ public function execute(ObjectManager $manager, $insertedEntities, $generateId = return $obj; } - private function fillColumns($obj, $insertedEntities) + private function fillColumns($obj, $insertedEntities): void { foreach ($this->columnFormatters as $field => $format) { if (null !== $format) { @@ -220,7 +220,7 @@ private function fillColumns($obj, $insertedEntities) } } - private function callMethods($obj, $insertedEntities) + private function callMethods($obj, $insertedEntities): void { foreach ($this->getModifiers() as $modifier) { $modifier($obj, $insertedEntities); diff --git a/src/Faker/ORM/Doctrine/Populator.php b/src/Faker/ORM/Doctrine/Populator.php index 893d856627..40527ec059 100644 --- a/src/Faker/ORM/Doctrine/Populator.php +++ b/src/Faker/ORM/Doctrine/Populator.php @@ -61,7 +61,7 @@ public function __construct(Generator $generator, ObjectManager $manager = null, * @param mixed $entity A Doctrine classname, or a \Faker\ORM\Doctrine\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false) + public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false): void { if (!$entity instanceof \Faker\ORM\Doctrine\EntityPopulator) { if (null === $this->manager) { diff --git a/src/Faker/ORM/Mandango/EntityPopulator.php b/src/Faker/ORM/Mandango/EntityPopulator.php index 515ab7b659..e89f947fe0 100644 --- a/src/Faker/ORM/Mandango/EntityPopulator.php +++ b/src/Faker/ORM/Mandango/EntityPopulator.php @@ -29,7 +29,7 @@ public function getClass() return $this->class; } - public function setColumnFormatters($columnFormatters) + public function setColumnFormatters($columnFormatters): void { $this->columnFormatters = $columnFormatters; } @@ -42,7 +42,7 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters) + public function mergeColumnFormattersWith($columnFormatters): void { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } diff --git a/src/Faker/ORM/Mandango/Populator.php b/src/Faker/ORM/Mandango/Populator.php index de6c3b81ce..3cee6a4c19 100644 --- a/src/Faker/ORM/Mandango/Populator.php +++ b/src/Faker/ORM/Mandango/Populator.php @@ -27,7 +27,7 @@ public function __construct(\Faker\Generator $generator, Mandango $mandango) * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = []) + public function addEntity($entity, $number, $customColumnFormatters = []): void { if (!$entity instanceof \Faker\ORM\Mandango\EntityPopulator) { $entity = new \Faker\ORM\Mandango\EntityPopulator($entity); diff --git a/src/Faker/ORM/Propel/EntityPopulator.php b/src/Faker/ORM/Propel/EntityPopulator.php index bee659d528..91dd8cb038 100644 --- a/src/Faker/ORM/Propel/EntityPopulator.php +++ b/src/Faker/ORM/Propel/EntityPopulator.php @@ -29,7 +29,7 @@ public function getClass() return $this->class; } - public function setColumnFormatters($columnFormatters) + public function setColumnFormatters($columnFormatters): void { $this->columnFormatters = $columnFormatters; } @@ -42,7 +42,7 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters) + public function mergeColumnFormattersWith($columnFormatters): void { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } @@ -126,7 +126,7 @@ protected function isColumnBehavior(\ColumnMap $columnMap) return false; } - public function setModifiers($modifiers) + public function setModifiers($modifiers): void { $this->modifiers = $modifiers; } @@ -139,7 +139,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith($modifiers) + public function mergeModifiersWith($modifiers): void { $this->modifiers = array_merge($this->modifiers, $modifiers); } @@ -157,7 +157,7 @@ public function guessModifiers(\Faker\Generator $generator) foreach ($tableMap->getBehaviors() as $name => $params) { switch ($name) { case 'nested_set': - $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator) { + $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator): void { if (isset($inserted[$class])) { $queryClass = $class . 'Query'; $parent = $queryClass::create()->findPk($generator->randomElement($inserted[$class])); @@ -170,7 +170,7 @@ public function guessModifiers(\Faker\Generator $generator) break; case 'sortable': - $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator) { + $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator): void { $obj->insertAtRank($generator->numberBetween(1, count($inserted[$class] ?? []) + 1)); }; diff --git a/src/Faker/ORM/Propel/Populator.php b/src/Faker/ORM/Propel/Populator.php index e3d4298107..aecb028e64 100644 --- a/src/Faker/ORM/Propel/Populator.php +++ b/src/Faker/ORM/Propel/Populator.php @@ -23,7 +23,7 @@ public function __construct(\Faker\Generator $generator) * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) + public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []): void { if (!$entity instanceof \Faker\ORM\Propel\EntityPopulator) { $entity = new \Faker\ORM\Propel\EntityPopulator($entity); diff --git a/src/Faker/ORM/Propel2/EntityPopulator.php b/src/Faker/ORM/Propel2/EntityPopulator.php index 199f4563f1..32e027ff24 100644 --- a/src/Faker/ORM/Propel2/EntityPopulator.php +++ b/src/Faker/ORM/Propel2/EntityPopulator.php @@ -30,7 +30,7 @@ public function getClass() return $this->class; } - public function setColumnFormatters($columnFormatters) + public function setColumnFormatters($columnFormatters): void { $this->columnFormatters = $columnFormatters; } @@ -43,7 +43,7 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters) + public function mergeColumnFormattersWith($columnFormatters): void { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } @@ -129,7 +129,7 @@ protected function isColumnBehavior(ColumnMap $columnMap) return false; } - public function setModifiers($modifiers) + public function setModifiers($modifiers): void { $this->modifiers = $modifiers; } @@ -142,7 +142,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith($modifiers) + public function mergeModifiersWith($modifiers): void { $this->modifiers = array_merge($this->modifiers, $modifiers); } @@ -160,7 +160,7 @@ public function guessModifiers(\Faker\Generator $generator) foreach ($tableMap->getBehaviors() as $name => $params) { switch ($name) { case 'nested_set': - $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator) { + $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator): void { if (isset($inserted[$class])) { $queryClass = $class . 'Query'; $parent = $queryClass::create()->findPk($generator->randomElement($inserted[$class])); @@ -173,7 +173,7 @@ public function guessModifiers(\Faker\Generator $generator) break; case 'sortable': - $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator) { + $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator): void { $obj->insertAtRank($generator->numberBetween(1, count($inserted[$class] ?? []) + 1)); }; diff --git a/src/Faker/ORM/Propel2/Populator.php b/src/Faker/ORM/Propel2/Populator.php index 7698f80e9a..a9b3fc6e12 100644 --- a/src/Faker/ORM/Propel2/Populator.php +++ b/src/Faker/ORM/Propel2/Populator.php @@ -26,7 +26,7 @@ public function __construct(\Faker\Generator $generator) * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel2\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) + public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []): void { if (!$entity instanceof \Faker\ORM\Propel2\EntityPopulator) { $entity = new \Faker\ORM\Propel2\EntityPopulator($entity); diff --git a/src/Faker/ORM/Spot/EntityPopulator.php b/src/Faker/ORM/Spot/EntityPopulator.php index c0afbb7cae..1290e83005 100644 --- a/src/Faker/ORM/Spot/EntityPopulator.php +++ b/src/Faker/ORM/Spot/EntityPopulator.php @@ -60,7 +60,7 @@ public function getMapper() return $this->mapper; } - public function setColumnFormatters($columnFormatters) + public function setColumnFormatters($columnFormatters): void { $this->columnFormatters = $columnFormatters; } @@ -73,12 +73,12 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters) + public function mergeColumnFormattersWith($columnFormatters): void { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } - public function setModifiers(array $modifiers) + public function setModifiers(array $modifiers): void { $this->modifiers = $modifiers; } @@ -91,7 +91,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith(array $modifiers) + public function mergeModifiersWith(array $modifiers): void { $this->modifiers = array_merge($this->modifiers, $modifiers); } @@ -180,7 +180,7 @@ public function execute($insertedEntities) return $obj; } - private function fillColumns($obj, $insertedEntities) + private function fillColumns($obj, $insertedEntities): void { foreach ($this->columnFormatters as $field => $format) { if (null !== $format) { @@ -190,7 +190,7 @@ private function fillColumns($obj, $insertedEntities) } } - private function callMethods($obj, $insertedEntities) + private function callMethods($obj, $insertedEntities): void { foreach ($this->getModifiers() as $modifier) { $modifier($obj, $insertedEntities); diff --git a/src/Faker/ORM/Spot/Populator.php b/src/Faker/ORM/Spot/Populator.php index 67202bb3b7..1d13db54f6 100644 --- a/src/Faker/ORM/Spot/Populator.php +++ b/src/Faker/ORM/Spot/Populator.php @@ -38,7 +38,7 @@ public function addEntity( $customColumnFormatters = [], $customModifiers = [], $useExistingData = false - ) { + ): void { $mapper = $this->locator->mapper($entityName); if (null === $mapper) { diff --git a/src/Faker/Provider/DateTime.php b/src/Faker/Provider/DateTime.php index fc56108c08..00f4641aae 100644 --- a/src/Faker/Provider/DateTime.php +++ b/src/Faker/Provider/DateTime.php @@ -356,7 +356,7 @@ private static function setTimezone(\DateTime $dt, $timezone) * * @param string $timezone */ - public static function setDefaultTimezone($timezone = null) + public static function setDefaultTimezone($timezone = null): void { static::$defaultTimezone = $timezone; } diff --git a/src/Faker/Provider/HtmlLorem.php b/src/Faker/Provider/HtmlLorem.php index 06bcd87d49..a8434108da 100644 --- a/src/Faker/Provider/HtmlLorem.php +++ b/src/Faker/Provider/HtmlLorem.php @@ -94,7 +94,7 @@ private function addRandomSubTree(\DOMElement $root, $maxDepth, $maxWidth) return $root; } - private function addRandomLeaf(\DOMElement $node) + private function addRandomLeaf(\DOMElement $node): void { $rand = self::numberBetween(1, 10); @@ -146,7 +146,7 @@ private function addRandomLeaf(\DOMElement $node) } } - private function addRandomAttribute(\DOMElement $node) + private function addRandomAttribute(\DOMElement $node): void { $rand = self::numberBetween(1, 2); @@ -163,20 +163,20 @@ private function addRandomAttribute(\DOMElement $node) } } - private function addRandomP(\DOMElement $element, $maxLength = 10) + private function addRandomP(\DOMElement $element, $maxLength = 10): void { $node = $element->ownerDocument->createElement(static::P_TAG); $node->textContent = $this->generator->sentence(self::numberBetween(1, $maxLength)); $element->appendChild($node); } - private function addRandomText(\DOMElement $element, $maxLength = 10) + private function addRandomText(\DOMElement $element, $maxLength = 10): void { $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); $element->appendChild($text); } - private function addRandomA(\DOMElement $element, $maxLength = 10) + private function addRandomA(\DOMElement $element, $maxLength = 10): void { $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); $node = $element->ownerDocument->createElement(static::A_TAG); @@ -185,7 +185,7 @@ private function addRandomA(\DOMElement $element, $maxLength = 10) $element->appendChild($node); } - private function addRandomTitle(\DOMElement $element, $maxLength = 10) + private function addRandomTitle(\DOMElement $element, $maxLength = 10): void { $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); $node = $element->ownerDocument->createElement(static::TITLE_TAG); @@ -193,7 +193,7 @@ private function addRandomTitle(\DOMElement $element, $maxLength = 10) $element->appendChild($node); } - private function addRandomH(\DOMElement $element, $maxLength = 10) + private function addRandomH(\DOMElement $element, $maxLength = 10): void { $h = static::H_TAG . (string) self::numberBetween(1, 3); $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); @@ -202,7 +202,7 @@ private function addRandomH(\DOMElement $element, $maxLength = 10) $element->appendChild($node); } - private function addRandomB(\DOMElement $element, $maxLength = 10) + private function addRandomB(\DOMElement $element, $maxLength = 10): void { $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); $node = $element->ownerDocument->createElement(static::B_TAG); @@ -210,7 +210,7 @@ private function addRandomB(\DOMElement $element, $maxLength = 10) $element->appendChild($node); } - private function addRandomI(\DOMElement $element, $maxLength = 10) + private function addRandomI(\DOMElement $element, $maxLength = 10): void { $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); $node = $element->ownerDocument->createElement(static::I_TAG); @@ -218,7 +218,7 @@ private function addRandomI(\DOMElement $element, $maxLength = 10) $element->appendChild($node); } - private function addRandomSpan(\DOMElement $element, $maxLength = 10) + private function addRandomSpan(\DOMElement $element, $maxLength = 10): void { $text = $element->ownerDocument->createTextNode($this->generator->sentence(self::numberBetween(1, $maxLength))); $node = $element->ownerDocument->createElement(static::SPAN_TAG); @@ -226,7 +226,7 @@ private function addRandomSpan(\DOMElement $element, $maxLength = 10) $element->appendChild($node); } - private function addLoginForm(\DOMElement $element) + private function addLoginForm(\DOMElement $element): void { $textInput = $element->ownerDocument->createElement(static::INPUT_TAG); $textInput->setAttribute('type', 'text'); @@ -258,7 +258,7 @@ private function addLoginForm(\DOMElement $element) $element->appendChild($submit); } - private function addRandomTable(\DOMElement $element, $maxRows = 10, $maxCols = 6, $maxTitle = 4, $maxLength = 10) + private function addRandomTable(\DOMElement $element, $maxRows = 10, $maxCols = 6, $maxTitle = 4, $maxLength = 10): void { $rows = self::numberBetween(1, $maxRows); $cols = self::numberBetween(1, $maxCols); @@ -292,7 +292,7 @@ private function addRandomTable(\DOMElement $element, $maxRows = 10, $maxCols = $element->appendChild($table); } - private function addRandomUL(\DOMElement $element, $maxItems = 11, $maxLength = 4) + private function addRandomUL(\DOMElement $element, $maxItems = 11, $maxLength = 4): void { $num = self::numberBetween(1, $maxItems); $ul = $element->ownerDocument->createElement(static::UL_TAG); diff --git a/test/Faker/Calculator/EanTest.php b/test/Faker/Calculator/EanTest.php index 704ee31e43..f611285b9b 100644 --- a/test/Faker/Calculator/EanTest.php +++ b/test/Faker/Calculator/EanTest.php @@ -30,7 +30,7 @@ public function ean8ValidationProvider() /** * @dataProvider Ean8checksumProvider */ - public function testChecksumEan8($partial, $checksum) + public function testChecksumEan8($partial, $checksum): void { self::assertSame($checksum, Ean::checksum($partial)); } @@ -38,7 +38,7 @@ public function testChecksumEan8($partial, $checksum) /** * @dataProvider ean8ValidationProvider */ - public function testEan8Validation($ean8, $valid) + public function testEan8Validation($ean8, $valid): void { self::assertSame($valid, Ean::isValid($ean8)); } @@ -67,7 +67,7 @@ public function ean13ValidationProvider() /** * @dataProvider Ean13checksumProvider */ - public function testChecksumEan13($partial, $checksum) + public function testChecksumEan13($partial, $checksum): void { self::assertSame($checksum, Ean::checksum($partial)); } @@ -75,7 +75,7 @@ public function testChecksumEan13($partial, $checksum) /** * @dataProvider ean13ValidationProvider */ - public function testEan13Validation($ean13, $valid) + public function testEan13Validation($ean13, $valid): void { self::assertSame($valid, Ean::isValid($ean13)); } diff --git a/test/Faker/Calculator/IbanTest.php b/test/Faker/Calculator/IbanTest.php index 4ed7a57e39..e25444c62b 100644 --- a/test/Faker/Calculator/IbanTest.php +++ b/test/Faker/Calculator/IbanTest.php @@ -83,7 +83,7 @@ public function checksumProvider() /** * @dataProvider checksumProvider */ - public function testChecksum($iban, $checksum) + public function testChecksum($iban, $checksum): void { self::assertEquals($checksum, Iban::checksum($iban), $iban); } @@ -232,7 +232,7 @@ public function validatorProvider() /** * @dataProvider validatorProvider */ - public function testIsValid($iban, $isValid) + public function testIsValid($iban, $isValid): void { self::assertEquals($isValid, Iban::isValid($iban), $iban); } @@ -272,7 +272,7 @@ public function alphaToNumberProvider() /** * @dataProvider alphaToNumberProvider */ - public function testAlphaToNumber($letter, $number) + public function testAlphaToNumber($letter, $number): void { self::assertEquals($number, Iban::alphaToNumber($letter), $letter); } @@ -298,7 +298,7 @@ public function mod97Provider() /** * @dataProvider mod97Provider */ - public function testMod97($number, $result) + public function testMod97($number, $result): void { self::assertEquals($result, Iban::mod97($number), $number); } diff --git a/test/Faker/Calculator/LuhnTest.php b/test/Faker/Calculator/LuhnTest.php index 1adb81025d..3f1b106e4e 100644 --- a/test/Faker/Calculator/LuhnTest.php +++ b/test/Faker/Calculator/LuhnTest.php @@ -28,7 +28,7 @@ public function checkDigitProvider() /** * @dataProvider checkDigitProvider */ - public function testComputeCheckDigit($partialNumber, $checkDigit) + public function testComputeCheckDigit($partialNumber, $checkDigit): void { self::assertIsString($checkDigit); self::assertEquals($checkDigit, Luhn::computeCheckDigit($partialNumber)); @@ -55,12 +55,12 @@ public function validatorProvider() /** * @dataProvider validatorProvider */ - public function testIsValid($number, $isValid) + public function testIsValid($number, $isValid): void { self::assertEquals($isValid, Luhn::isValid($number)); } - public function testGenerateLuhnNumberWithInvalidPrefix() + public function testGenerateLuhnNumberWithInvalidPrefix(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage('Argument should be an integer.'); diff --git a/test/Faker/Core/BarcodeTest.php b/test/Faker/Core/BarcodeTest.php index fb4bd8592b..631350027c 100644 --- a/test/Faker/Core/BarcodeTest.php +++ b/test/Faker/Core/BarcodeTest.php @@ -10,14 +10,14 @@ final class BarcodeTest extends TestCase { - public function testEan8() + public function testEan8(): void { $code = $this->faker->ean8(); self::assertMatchesRegularExpression('/^\d{8}$/i', $code); self::assertTrue(Ean::isValid($code)); } - public function testEan13() + public function testEan13(): void { $code = $this->faker->ean13(); self::assertMatchesRegularExpression('/^\d{13}$/i', $code); diff --git a/test/Faker/Core/ColorTest.php b/test/Faker/Core/ColorTest.php index a75349fca8..13183c89ec 100644 --- a/test/Faker/Core/ColorTest.php +++ b/test/Faker/Core/ColorTest.php @@ -9,39 +9,39 @@ final class ColorTest extends TestCase { - public function testHexColor() + public function testHexColor(): void { $color = new Color(); self::assertMatchesRegularExpression('/^#[a-f0-9]{6}$/i', $color->hexColor()); } - public function testSafeHexColor() + public function testSafeHexColor(): void { $color = new Color(); self::assertMatchesRegularExpression('/^#[a-f0-9]{6}$/i', $color->safeHexColor()); } - public function testRgbColorAsArray() + public function testRgbColorAsArray(): void { $color = new Color(); self::assertCount(3, $color->rgbColorAsArray()); } - public function testRgbColor() + public function testRgbColor(): void { $color = new Color(); $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; self::assertMatchesRegularExpression('/^' . $regexp . ',' . $regexp . ',' . $regexp . '$/i', $color->rgbColor()); } - public function testRgbCssColor() + public function testRgbCssColor(): void { $color = new Color(); $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; self::assertMatchesRegularExpression('/^rgb\(' . $regexp . ',' . $regexp . ',' . $regexp . '\)$/i', $color->rgbCssColor()); } - public function testRgbaCssColor() + public function testRgbaCssColor(): void { $color = new Color(); $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; @@ -49,19 +49,19 @@ public function testRgbaCssColor() self::assertMatchesRegularExpression('/^rgba\(' . $regexp . ',' . $regexp . ',' . $regexp . ',' . $regexpAlpha . '\)$/i', $color->rgbaCssColor()); } - public function testSafeColorName() + public function testSafeColorName(): void { $color = new Color(); self::assertMatchesRegularExpression('/^[\w]+$/', $color->safeColorName()); } - public function testColorName() + public function testColorName(): void { $color = new Color(); self::assertMatchesRegularExpression('/^[\w]+$/', $color->colorName()); } - public function testHslColor() + public function testHslColor(): void { $color = new Color(); $regexp360 = '(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])'; @@ -69,7 +69,7 @@ public function testHslColor() self::assertMatchesRegularExpression('/^' . $regexp360 . ',' . $regexp100 . ',' . $regexp100 . '$/', $color->hslColor()); } - public function testHslColorArray() + public function testHslColorArray(): void { $color = new Color(); self::assertCount(3, $color->hslColorAsArray()); diff --git a/test/Faker/Core/DateTimeTest.php b/test/Faker/Core/DateTimeTest.php index 4b7da9fd76..f51cbc378d 100644 --- a/test/Faker/Core/DateTimeTest.php +++ b/test/Faker/Core/DateTimeTest.php @@ -24,7 +24,7 @@ protected function setUp(): void $this->extension = $this->faker->ext(DateTimeExtension::class); } - public function testDateTime() + public function testDateTime(): void { $dateTime = $this->extension->dateTime('2005-10-19T14:12:00'); @@ -32,7 +32,7 @@ public function testDateTime() self::assertEquals(new \DateTime('1990-09-29T12:12:53'), $dateTime); } - public function testDateTimeWithTimezone() + public function testDateTimeWithTimezone(): void { $dateTime = $this->extension->dateTime('2021-09-05T15:10:00', 'America/Los_Angeles'); @@ -41,7 +41,7 @@ public function testDateTimeWithTimezone() self::assertEquals(new \DateTimeZone('America/Los_Angeles'), $dateTime->getTimezone()); } - public function testDateTimeAD() + public function testDateTimeAD(): void { $dateTime = $this->extension->dateTimeAD('2012-04-12T19:22:23'); @@ -49,7 +49,7 @@ public function testDateTimeAD() self::assertEquals(new \DateTime('1166-06-01T17:43:42'), $dateTime); } - public function testDateTimeBetween() + public function testDateTimeBetween(): void { $dateTime = $this->extension->dateTimeBetween('1998-12-18T11:23:40', '2004-09-15T22:10:45'); @@ -57,13 +57,13 @@ public function testDateTimeBetween() self::assertEquals(new \DateTime('2002-04-17T09:33:38'), $dateTime); } - public function testDateTimeBetweenShouldThrowIfFromIsNotAnteriorToUntil() + public function testDateTimeBetweenShouldThrowIfFromIsNotAnteriorToUntil(): void { self::expectException(\InvalidArgumentException::class); $this->extension->dateTimeBetween('2004-09-15T22:10:45', '1998-12-18T11:23:40'); } - public function testDateTimeInInterval() + public function testDateTimeInInterval(): void { $dateTime = $this->extension->dateTimeInInterval('1999-07-16T17:30:12', '+2 years'); @@ -71,7 +71,7 @@ public function testDateTimeInInterval() self::assertEquals(new \DateTime('2000-09-12T07:10:58'), $dateTime); } - public function testDateTimeThisWeek() + public function testDateTimeThisWeek(): void { $dateTime = $this->extension->dateTimeThisWeek(); @@ -80,7 +80,7 @@ public function testDateTimeThisWeek() self::assertLessThanOrEqual(new \DateTime('sunday this week'), $dateTime); } - public function testDateTimeThisMonth() + public function testDateTimeThisMonth(): void { $dateTime = $this->extension->dateTimeThisMonth(); @@ -89,7 +89,7 @@ public function testDateTimeThisMonth() self::assertLessThanOrEqual(new \DateTime('last day of this month'), $dateTime); } - public function testDateTimeThisYear() + public function testDateTimeThisYear(): void { $dateTime = $this->extension->dateTimeThisYear(); @@ -98,7 +98,7 @@ public function testDateTimeThisYear() self::assertLessThanOrEqual(new \DateTime('last day of december'), $dateTime); } - public function testDateTimeThisDecade() + public function testDateTimeThisDecade(): void { $dateTime = $this->extension->dateTimeThisDecade(); @@ -109,7 +109,7 @@ public function testDateTimeThisDecade() self::assertLessThanOrEqual(new \DateTime('now'), $dateTime); } - public function testDateTimeThisCentury() + public function testDateTimeThisCentury(): void { $dateTime = $this->extension->dateTimeThisCentury(); @@ -120,7 +120,7 @@ public function testDateTimeThisCentury() self::assertLessThanOrEqual(new \DateTime('now'), $dateTime); } - public function testDate() + public function testDate(): void { $date = $this->extension->date('Y-m-d', '2102-11-12T14:45:29'); @@ -128,7 +128,7 @@ public function testDate() self::assertEquals('2046-12-26', $date); } - public function testTime() + public function testTime(): void { $time = $this->extension->time('H:i:s', '1978-06-27T09:43:21'); @@ -136,7 +136,7 @@ public function testTime() self::assertEquals('21:59:44', $time); } - public function testUnixTime() + public function testUnixTime(): void { $unixTime = $this->extension->unixTime('1993-08-29T15:10:00'); @@ -144,7 +144,7 @@ public function testUnixTime() self::assertEquals(432630664, $unixTime); } - public function testUnitTimeWithNumericUntil() + public function testUnitTimeWithNumericUntil(): void { $unixTime = $this->extension->unixTime(1643830258); @@ -152,7 +152,7 @@ public function testUnitTimeWithNumericUntil() self::assertEquals(952499510, $unixTime); } - public function testIso8601() + public function testIso8601(): void { $iso8601 = $this->extension->iso8601('1993-07-11T15:10:00'); @@ -161,7 +161,7 @@ public function testIso8601() self::assertEquals('1983-08-19T21:45:51+0000', $iso8601); } - public function testAmPm() + public function testAmPm(): void { $amPm = $this->extension->amPm('1929-04-14T15:10:23'); @@ -170,7 +170,7 @@ public function testAmPm() self::assertContains($amPm, ['am', 'pm']); } - public function testDayOfMonth() + public function testDayOfMonth(): void { $dayOfMonth = $this->extension->dayOfMonth('2001-04-29T15:10:12'); @@ -178,7 +178,7 @@ public function testDayOfMonth() self::assertEquals('25', $dayOfMonth); } - public function testDayOfWeek() + public function testDayOfWeek(): void { $dayOfWeek = $this->extension->dayOfWeek('2021-12-12T15:10:00'); @@ -186,7 +186,7 @@ public function testDayOfWeek() self::assertEquals('Monday', $dayOfWeek); } - public function testMonth() + public function testMonth(): void { $month = $this->extension->month('2021-05-23T15:10:00'); @@ -194,7 +194,7 @@ public function testMonth() self::assertEquals('10', $month); } - public function testMonthName() + public function testMonthName(): void { $monthName = $this->extension->monthName('2021-06-06T15:10:00'); @@ -202,7 +202,7 @@ public function testMonthName() self::assertEquals('October', $monthName); } - public function testYear() + public function testYear(): void { $year = $this->extension->year('2021-09-12T15:10:00'); @@ -210,7 +210,7 @@ public function testYear() self::assertEquals('1999', $year); } - public function testCentury() + public function testCentury(): void { $century = $this->extension->century(); @@ -218,7 +218,7 @@ public function testCentury() self::assertEquals('XIX', $century); } - public function testTimezone() + public function testTimezone(): void { $timezone = $this->extension->timezone(); $countryTimezone = $this->extension->timezone('US'); diff --git a/test/Faker/Core/NumberTest.php b/test/Faker/Core/NumberTest.php index bc8cea4120..38adfb7830 100644 --- a/test/Faker/Core/NumberTest.php +++ b/test/Faker/Core/NumberTest.php @@ -8,24 +8,24 @@ final class NumberTest extends TestCase { - public function testRandomDigitReturnsInteger() + public function testRandomDigitReturnsInteger(): void { self::assertIsInt($this->faker->randomDigit()); } - public function testRandomDigitReturnsDigit() + public function testRandomDigitReturnsDigit(): void { self::assertGreaterThanOrEqual(0, $this->faker->randomDigit()); self::assertLessThan(10, $this->faker->randomDigit()); } - public function testRandomDigitNotNullReturnsNotNullDigit() + public function testRandomDigitNotNullReturnsNotNullDigit(): void { self::assertGreaterThan(0, $this->faker->randomDigitNotZero()); self::assertLessThan(10, $this->faker->randomDigitNotZero()); } - public function testRandomDigitNotReturnsValidDigit() + public function testRandomDigitNotReturnsValidDigit(): void { for ($i = 0; $i <= 9; ++$i) { self::assertGreaterThanOrEqual(0, $this->faker->randomDigitNot($i)); @@ -34,35 +34,35 @@ public function testRandomDigitNotReturnsValidDigit() } } - public function testRandomNumberThrowsExceptionWhenCalledWithATooHighNumberOfDigits() + public function testRandomNumberThrowsExceptionWhenCalledWithATooHighNumberOfDigits(): void { $this->expectException(\InvalidArgumentException::class); $this->faker->randomNumber(10); } - public function testRandomNumberHasValidNullableAutogenerate() + public function testRandomNumberHasValidNullableAutogenerate(): void { self::assertGreaterThan(0, $this->faker->randomNumber()); } - public function testRandomNumberReturnsInteger() + public function testRandomNumberReturnsInteger(): void { self::assertIsInt($this->faker->randomNumber()); self::assertIsInt($this->faker->randomNumber(5, false)); } - public function testRandomNumberReturnsDigit() + public function testRandomNumberReturnsDigit(): void { self::assertGreaterThanOrEqual(0, $this->faker->randomNumber(3)); self::assertLessThan(1000, $this->faker->randomNumber(3)); } - public function testRandomNumberAcceptsStrictParamToEnforceNumberSize() + public function testRandomNumberAcceptsStrictParamToEnforceNumberSize(): void { self::assertEquals(5, strlen((string) $this->faker->randomNumber(5, true))); } - public function testNumberBetween() + public function testNumberBetween(): void { $min = 5; $max = 6; @@ -71,12 +71,12 @@ public function testNumberBetween() self::assertGreaterThanOrEqual($this->faker->numberBetween($min, $max), $max); } - public function testNumberBetweenAcceptsZeroAsMax() + public function testNumberBetweenAcceptsZeroAsMax(): void { self::assertEquals(0, $this->faker->numberBetween(0, 0)); } - public function testRandomFloat() + public function testRandomFloat(): void { $min = 4; $max = 10; @@ -92,7 +92,7 @@ public function testRandomFloat() self::assertLessThanOrEqual($nbMaxDecimals, strlen($parts[1])); } - public function testRandomFloatHasValidNullableAutogenerate() + public function testRandomFloatHasValidNullableAutogenerate(): void { self::assertGreaterThan(0, $this->faker->randomFloat()); } diff --git a/test/Faker/Core/UuidTest.php b/test/Faker/Core/UuidTest.php index 4e3b7b5088..0d2666063d 100644 --- a/test/Faker/Core/UuidTest.php +++ b/test/Faker/Core/UuidTest.php @@ -7,14 +7,14 @@ final class UuidTest extends TestCase { - public function testUuidReturnsUuid() + public function testUuidReturnsUuid(): void { $instance = new Uuid(); $uuid = $instance->uuid3(); self::assertTrue($this->isUuid($uuid)); } - public function testUuidExpectedSeed() + public function testUuidExpectedSeed(): void { $instance = new Uuid(); diff --git a/test/Faker/DefaultGeneratorTest.php b/test/Faker/DefaultGeneratorTest.php index 23eced28ea..8d88a342bc 100644 --- a/test/Faker/DefaultGeneratorTest.php +++ b/test/Faker/DefaultGeneratorTest.php @@ -9,7 +9,7 @@ final class DefaultGeneratorTest extends TestCase /** * @group legacy */ - public function testGeneratorReturnsNullByDefault() + public function testGeneratorReturnsNullByDefault(): void { $generator = new DefaultGenerator(); self::assertNull($generator->value); @@ -18,7 +18,7 @@ public function testGeneratorReturnsNullByDefault() /** * @group legacy */ - public function testGeneratorReturnsDefaultValueForAnyPropertyGet() + public function testGeneratorReturnsDefaultValueForAnyPropertyGet(): void { $generator = new DefaultGenerator(123); self::assertSame(123, $generator->foo); @@ -28,7 +28,7 @@ public function testGeneratorReturnsDefaultValueForAnyPropertyGet() /** * @group legacy */ - public function testGeneratorReturnsDefaultValueForAnyMethodCall() + public function testGeneratorReturnsDefaultValueForAnyMethodCall(): void { $generator = new DefaultGenerator(123); self::assertSame(123, $generator->foobar()); diff --git a/test/Faker/Extension/HelperTest.php b/test/Faker/Extension/HelperTest.php index b5bc654c41..6240b18798 100644 --- a/test/Faker/Extension/HelperTest.php +++ b/test/Faker/Extension/HelperTest.php @@ -7,76 +7,76 @@ final class HelperTest extends TestCase { - public function testRandomElementReturnsNullWhenArrayEmpty() + public function testRandomElementReturnsNullWhenArrayEmpty(): void { self::assertNull(Helper::randomElement([])); } - public function testRandomElementReturnsElementFromArray() + public function testRandomElementReturnsElementFromArray(): void { $elements = ['23', 'e', 32, '#']; self::assertContains(Helper::randomElement($elements), $elements); } - public function testRandomElementReturnsElementFromAssociativeArray() + public function testRandomElementReturnsElementFromAssociativeArray(): void { $elements = ['tata' => '23', 'toto' => 'e', 'tutu' => 32, 'titi' => '#']; self::assertContains(Helper::randomElement($elements), $elements); } - public function testNumerifyReturnsSameStringWhenItContainsNoHashSign() + public function testNumerifyReturnsSameStringWhenItContainsNoHashSign(): void { self::assertEquals('fooBar?', Helper::numerify('fooBar?')); } - public function testNumerifyReturnsStringWithHashSignsReplacedByDigits() + public function testNumerifyReturnsStringWithHashSignsReplacedByDigits(): void { self::assertMatchesRegularExpression('/foo\dBa\dr/', Helper::numerify('foo#Ba#r')); } - public function testNumerifyReturnsStringWithPercentageSignsReplacedByDigits() + public function testNumerifyReturnsStringWithPercentageSignsReplacedByDigits(): void { self::assertMatchesRegularExpression('/foo\dBa\dr/', Helper::numerify('foo%Ba%r')); } - public function testNumerifyReturnsStringWithPercentageSignsReplacedByNotNullDigits() + public function testNumerifyReturnsStringWithPercentageSignsReplacedByNotNullDigits(): void { self::assertNotEquals('0', Helper::numerify('%')); } - public function testNumerifyCanGenerateALargeNumberOfDigits() + public function testNumerifyCanGenerateALargeNumberOfDigits(): void { $largePattern = str_repeat('#', 20); // definitely larger than PHP_INT_MAX on all systems self::assertEquals(20, strlen(Helper::numerify($largePattern))); } - public function testNumerifyReturnsLargeNumber() + public function testNumerifyReturnsLargeNumber(): void { $result = Helper::numerify(str_repeat('#', 10)); self::assertGreaterThan(100, (int) $result); } - public function testLexifyReturnsSameStringWhenItContainsNoQuestionMark() + public function testLexifyReturnsSameStringWhenItContainsNoQuestionMark(): void { self::assertEquals('fooBar#', Helper::lexify('fooBar#')); } - public function testLexifyReturnsStringWithQuestionMarksReplacedByLetters() + public function testLexifyReturnsStringWithQuestionMarksReplacedByLetters(): void { self::assertMatchesRegularExpression('/foo[a-z]Ba[a-z]r/', Helper::lexify('foo?Ba?r')); } - public function testBothifyCombinesNumerifyAndLexify() + public function testBothifyCombinesNumerifyAndLexify(): void { self::assertMatchesRegularExpression('/foo[a-z]Ba\dr/', Helper::bothify('foo?Ba#r')); } - public function testBothifyAsterisk() + public function testBothifyAsterisk(): void { self::assertMatchesRegularExpression('/foo([a-z]|\d)Ba([a-z]|\d)r/', Helper::bothify('foo*Ba*r')); } - public function testBothifyUtf() + public function testBothifyUtf(): void { $utf = 'œ∑´®†¥¨ˆøπ“‘和製╯°□°╯︵ ┻━┻🐵 🙈 ﺚﻣ ﻦﻔﺳ ﺲﻘﻄﺗ ﻮﺑﺎﻠﺘﺣﺪﻳﺩ،, ﺝﺰﻳﺮﺘﻳ ﺏﺎﺴﺘﺧﺩﺎﻣ ﺄﻧ ﺪﻧﻭ. ﺇﺫ ﻪﻧﺍ؟ ﺎﻠﺴﺗﺍﺭ ﻮﺘ'; self::assertMatchesRegularExpression('/' . $utf . 'foo\dB[a-z]a([a-z]|\d)r/u', Helper::bothify($utf . 'foo#B?a*r')); diff --git a/test/Faker/GeneratorTest.php b/test/Faker/GeneratorTest.php index 4b14d7315f..2036b7cf5b 100644 --- a/test/Faker/GeneratorTest.php +++ b/test/Faker/GeneratorTest.php @@ -57,14 +57,14 @@ public function testMimeType(): void self::assertMatchesRegularExpression('|.*/.*|', $mime); } - public function testAddProviderGivesPriorityToNewlyAddedProvider() + public function testAddProviderGivesPriorityToNewlyAddedProvider(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); $this->faker->addProvider(new Fixture\Provider\BarProvider()); self::assertEquals('barfoo', $this->faker->format('fooFormatter')); } - public function testGetProvidersReturnsCorrectProviders() + public function testGetProvidersReturnsCorrectProviders(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); $this->faker->addProvider(new Fixture\Provider\BarProvider()); @@ -73,13 +73,13 @@ public function testGetProvidersReturnsCorrectProviders() self::assertCount(2, $this->faker->getProviders()); } - public function testGetFormatterReturnsCallable() + public function testGetFormatterReturnsCallable(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); self::assertIsCallable($this->faker->getFormatter('fooFormatter')); } - public function testGetFormatterReturnsCorrectFormatter() + public function testGetFormatterReturnsCorrectFormatter(): void { $provider = new Fixture\Provider\FooProvider(); $this->faker->addProvider($provider); @@ -105,26 +105,26 @@ public function testAddProviderClearsPreviousFormatters(): void self::assertSame($expected, $this->faker->getFormatter('fooFormatter')); } - public function testGetFormatterThrowsExceptionOnIncorrectProvider() + public function testGetFormatterThrowsExceptionOnIncorrectProvider(): void { $this->expectException(\InvalidArgumentException::class); $this->faker->getFormatter('fooFormatter'); } - public function testGetFormatterThrowsExceptionOnIncorrectFormatter() + public function testGetFormatterThrowsExceptionOnIncorrectFormatter(): void { $this->expectException(\InvalidArgumentException::class); $this->faker->addProvider(new Fixture\Provider\FooProvider()); $this->faker->getFormatter('barFormatter'); } - public function testFormatCallsFormatterOnProvider() + public function testFormatCallsFormatterOnProvider(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); self::assertEquals('foobar', $this->faker->format('fooFormatter')); } - public function testFormatTransfersArgumentsToFormatter() + public function testFormatTransfersArgumentsToFormatter(): void { $this->faker = new Generator(); $provider = new Fixture\Provider\FooProvider(); @@ -132,7 +132,7 @@ public function testFormatTransfersArgumentsToFormatter() self::assertEquals('bazfoo', $this->faker->format('fooFormatterWithArguments', ['foo'])); } - public function testFormatterCallsGenerator() + public function testFormatterCallsGenerator(): void { $builder = new ContainerBuilder(); $builder->add(Blood::class, BloodExtension::class); @@ -142,7 +142,7 @@ public function testFormatterCallsGenerator() self::assertTrue(in_array($output, ['A', 'AB', 'B', '0'], true)); } - public function testFormatterCallsExtension() + public function testFormatterCallsExtension(): void { $builder = new ContainerBuilder(); $builder->add(Blood::class); @@ -152,12 +152,12 @@ public function testFormatterCallsExtension() self::assertTrue(in_array($output, ['A', 'AB', 'B', '0'], true)); } - public function testParseReturnsSameStringWhenItContainsNoCurlyBraces() + public function testParseReturnsSameStringWhenItContainsNoCurlyBraces(): void { self::assertEquals('fooBar#?', $this->faker->parse('fooBar#?')); } - public function testParseReturnsStringWithTokensReplacedByFormatters() + public function testParseReturnsStringWithTokensReplacedByFormatters(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); self::assertEquals('This is foobar a text with foobar', $this->faker->parse('This is {{fooFormatter}} a text with {{ fooFormatter }}')); @@ -166,25 +166,25 @@ public function testParseReturnsStringWithTokensReplacedByFormatters() /** * @group legacy */ - public function testMagicGetCallsFormat() + public function testMagicGetCallsFormat(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); self::assertEquals('foobar', $this->faker->fooFormatter); } - public function testMagicCallCallsFormat() + public function testMagicCallCallsFormat(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); self::assertEquals('foobar', $this->faker->fooFormatter()); } - public function testMagicCallCallsFormatWithArguments() + public function testMagicCallCallsFormatWithArguments(): void { $this->faker->addProvider(new Fixture\Provider\FooProvider()); self::assertEquals('bazfoo', $this->faker->fooFormatterWithArguments('foo')); } - public function testSeed() + public function testSeed(): void { $this->faker->seed(0); $mtRandWithSeedZero = mt_rand(); diff --git a/test/Faker/Provider/AddressTest.php b/test/Faker/Provider/AddressTest.php index 908029dc6f..1307b7c931 100644 --- a/test/Faker/Provider/AddressTest.php +++ b/test/Faker/Provider/AddressTest.php @@ -10,7 +10,7 @@ */ final class AddressTest extends TestCase { - public function testLatitude() + public function testLatitude(): void { $latitude = $this->faker->latitude(); self::assertIsFloat($latitude); @@ -18,7 +18,7 @@ public function testLatitude() self::assertLessThanOrEqual(90, $latitude); } - public function testLongitude() + public function testLongitude(): void { $longitude = $this->faker->longitude(); self::assertIsFloat($longitude); @@ -26,7 +26,7 @@ public function testLongitude() self::assertLessThanOrEqual(180, $longitude); } - public function testCoordinate() + public function testCoordinate(): void { $coordinate = $this->faker->localCoordinates(); self::assertIsArray($coordinate); diff --git a/test/Faker/Provider/BarcodeTest.php b/test/Faker/Provider/BarcodeTest.php index 94734ecc34..97e78ead16 100644 --- a/test/Faker/Provider/BarcodeTest.php +++ b/test/Faker/Provider/BarcodeTest.php @@ -12,14 +12,14 @@ */ final class BarcodeTest extends TestCase { - public function testEan8() + public function testEan8(): void { $code = $this->faker->ean8(); self::assertMatchesRegularExpression('/^\d{8}$/i', $code); self::assertTrue(Ean::isValid($code)); } - public function testEan13() + public function testEan13(): void { $code = $this->faker->ean13(); self::assertMatchesRegularExpression('/^\d{13}$/i', $code); diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index 3af3de211e..fba14868c7 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -10,24 +10,24 @@ */ final class BaseTest extends TestCase { - public function testRandomDigitReturnsInteger() + public function testRandomDigitReturnsInteger(): void { self::assertIsInt(BaseProvider::randomDigit()); } - public function testRandomDigitReturnsDigit() + public function testRandomDigitReturnsDigit(): void { self::assertGreaterThanOrEqual(0, BaseProvider::randomDigit()); self::assertLessThan(10, BaseProvider::randomDigit()); } - public function testRandomDigitNotNullReturnsNotNullDigit() + public function testRandomDigitNotNullReturnsNotNullDigit(): void { self::assertGreaterThan(0, BaseProvider::randomDigitNotNull()); self::assertLessThan(10, BaseProvider::randomDigitNotNull()); } - public function testRandomDigitNotReturnsValidDigit() + public function testRandomDigitNotReturnsValidDigit(): void { for ($i = 0; $i <= 9; ++$i) { self::assertGreaterThanOrEqual(0, BaseProvider::randomDigitNot($i)); @@ -36,36 +36,36 @@ public function testRandomDigitNotReturnsValidDigit() } } - public function testRandomNumberThrowsExceptionWhenCalledWithAMax() + public function testRandomNumberThrowsExceptionWhenCalledWithAMax(): void { $this->expectException(\InvalidArgumentException::class); BaseProvider::randomNumber(5, 200); } - public function testRandomNumberThrowsExceptionWhenCalledWithATooHighNumberOfDigits() + public function testRandomNumberThrowsExceptionWhenCalledWithATooHighNumberOfDigits(): void { $this->expectException(\InvalidArgumentException::class); BaseProvider::randomNumber(10); } - public function testRandomNumberReturnsInteger() + public function testRandomNumberReturnsInteger(): void { self::assertIsInt(BaseProvider::randomNumber()); self::assertIsInt(BaseProvider::randomNumber(5, false)); } - public function testRandomNumberReturnsDigit() + public function testRandomNumberReturnsDigit(): void { self::assertGreaterThanOrEqual(0, BaseProvider::randomNumber(3)); self::assertLessThan(1000, BaseProvider::randomNumber(3)); } - public function testRandomNumberAcceptsStrictParamToEnforceNumberSize() + public function testRandomNumberAcceptsStrictParamToEnforceNumberSize(): void { self::assertEquals(5, strlen((string) BaseProvider::randomNumber(5, true))); } - public function testNumberBetween() + public function testNumberBetween(): void { $min = 5; $max = 6; @@ -74,12 +74,12 @@ public function testNumberBetween() self::assertGreaterThanOrEqual(BaseProvider::numberBetween($min, $max), $max); } - public function testNumberBetweenAcceptsZeroAsMax() + public function testNumberBetweenAcceptsZeroAsMax(): void { self::assertEquals(0, BaseProvider::numberBetween(0, 0)); } - public function testRandomFloat() + public function testRandomFloat(): void { $min = 4; $max = 10; @@ -95,94 +95,94 @@ public function testRandomFloat() self::assertLessThanOrEqual($nbMaxDecimals, strlen($parts[1])); } - public function testRandomLetterReturnsString() + public function testRandomLetterReturnsString(): void { self::assertIsString(BaseProvider::randomLetter()); } - public function testRandomLetterReturnsSingleLetter() + public function testRandomLetterReturnsSingleLetter(): void { self::assertEquals(1, strlen(BaseProvider::randomLetter())); } - public function testRandomLetterReturnsLowercaseLetter() + public function testRandomLetterReturnsLowercaseLetter(): void { $lowercaseLetters = 'abcdefghijklmnopqrstuvwxyz'; self::assertNotFalse(strpos($lowercaseLetters, BaseProvider::randomLetter())); } - public function testRandomAsciiReturnsString() + public function testRandomAsciiReturnsString(): void { self::assertIsString(BaseProvider::randomAscii()); } - public function testRandomAsciiReturnsSingleCharacter() + public function testRandomAsciiReturnsSingleCharacter(): void { self::assertEquals(1, strlen(BaseProvider::randomAscii())); } - public function testRandomAsciiReturnsAsciiCharacter() + public function testRandomAsciiReturnsAsciiCharacter(): void { $lowercaseLetters = '!"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'; self::assertNotFalse(strpos($lowercaseLetters, BaseProvider::randomAscii())); } - public function testRandomElementReturnsNullWhenArrayEmpty() + public function testRandomElementReturnsNullWhenArrayEmpty(): void { self::assertNull(BaseProvider::randomElement([])); } - public function testRandomElementReturnsNullWhenCollectionEmpty() + public function testRandomElementReturnsNullWhenCollectionEmpty(): void { self::assertNull(BaseProvider::randomElement(new Collection([]))); } - public function testRandomElementReturnsElementFromArray() + public function testRandomElementReturnsElementFromArray(): void { $elements = ['23', 'e', 32, '#']; self::assertContains(BaseProvider::randomElement($elements), $elements); } - public function testRandomElementReturnsElementFromAssociativeArray() + public function testRandomElementReturnsElementFromAssociativeArray(): void { $elements = ['tata' => '23', 'toto' => 'e', 'tutu' => 32, 'titi' => '#']; self::assertContains(BaseProvider::randomElement($elements), $elements); } - public function testRandomElementReturnsElementFromCollection() + public function testRandomElementReturnsElementFromCollection(): void { $collection = new Collection(['one', 'two', 'three']); self::assertContains(BaseProvider::randomElement($collection), $collection); } - public function testShuffleReturnsStringWhenPassedAStringArgument() + public function testShuffleReturnsStringWhenPassedAStringArgument(): void { self::assertIsString(BaseProvider::shuffle('foo')); } - public function testShuffleReturnsArrayWhenPassedAnArrayArgument() + public function testShuffleReturnsArrayWhenPassedAnArrayArgument(): void { self::assertIsArray(BaseProvider::shuffle([1, 2, 3])); } - public function testShuffleThrowsExceptionWhenPassedAnInvalidArgument() + public function testShuffleThrowsExceptionWhenPassedAnInvalidArgument(): void { $this->expectException(\InvalidArgumentException::class); BaseProvider::shuffle(false); } - public function testShuffleArraySupportsEmptyArrays() + public function testShuffleArraySupportsEmptyArrays(): void { self::assertEquals([], BaseProvider::shuffleArray([])); } - public function testShuffleArrayReturnsAnArrayOfTheSameSize() + public function testShuffleArrayReturnsAnArrayOfTheSameSize(): void { $array = [1, 2, 3, 4, 5]; self::assertSameSize($array, BaseProvider::shuffleArray($array)); } - public function testShuffleArrayReturnsAnArrayWithSameElements() + public function testShuffleArrayReturnsAnArrayWithSameElements(): void { $array = [2, 4, 6, 8, 10]; $shuffleArray = BaseProvider::shuffleArray($array); @@ -193,32 +193,32 @@ public function testShuffleArrayReturnsAnArrayWithSameElements() self::assertContains(10, $shuffleArray); } - public function testShuffleArrayReturnsADifferentArrayThanTheOriginal() + public function testShuffleArrayReturnsADifferentArrayThanTheOriginal(): void { $arr = [1, 2, 3, 4, 5]; $shuffledArray = BaseProvider::shuffleArray($arr); self::assertNotEquals($arr, $shuffledArray); } - public function testShuffleArrayLeavesTheOriginalArrayUntouched() + public function testShuffleArrayLeavesTheOriginalArrayUntouched(): void { $arr = [1, 2, 3, 4, 5]; BaseProvider::shuffleArray($arr); self::assertEquals($arr, [1, 2, 3, 4, 5]); } - public function testShuffleStringSupportsEmptyStrings() + public function testShuffleStringSupportsEmptyStrings(): void { self::assertEquals('', BaseProvider::shuffleString('')); } - public function testShuffleStringReturnsAnStringOfTheSameSize() + public function testShuffleStringReturnsAnStringOfTheSameSize(): void { $string = 'abcdef'; self::assertEquals(strlen($string), strlen(BaseProvider::shuffleString($string))); } - public function testShuffleStringReturnsAnStringWithSameElements() + public function testShuffleStringReturnsAnStringWithSameElements(): void { $string = 'acegi'; $shuffleString = BaseProvider::shuffleString($string); @@ -229,78 +229,78 @@ public function testShuffleStringReturnsAnStringWithSameElements() self::assertStringContainsString('i', $shuffleString); } - public function testShuffleStringReturnsADifferentStringThanTheOriginal() + public function testShuffleStringReturnsADifferentStringThanTheOriginal(): void { $string = 'abcdef'; $shuffledString = BaseProvider::shuffleString($string); self::assertNotEquals($string, $shuffledString); } - public function testShuffleStringLeavesTheOriginalStringUntouched() + public function testShuffleStringLeavesTheOriginalStringUntouched(): void { $string = 'abcdef'; BaseProvider::shuffleString($string); self::assertEquals($string, 'abcdef'); } - public function testNumerifyReturnsSameStringWhenItContainsNoHashSign() + public function testNumerifyReturnsSameStringWhenItContainsNoHashSign(): void { self::assertEquals('fooBar?', BaseProvider::numerify('fooBar?')); } - public function testNumerifyReturnsStringWithHashSignsReplacedByDigits() + public function testNumerifyReturnsStringWithHashSignsReplacedByDigits(): void { self::assertMatchesRegularExpression('/foo\dBa\dr/', BaseProvider::numerify('foo#Ba#r')); } - public function testNumerifyReturnsStringWithPercentageSignsReplacedByDigits() + public function testNumerifyReturnsStringWithPercentageSignsReplacedByDigits(): void { self::assertMatchesRegularExpression('/foo\dBa\dr/', BaseProvider::numerify('foo%Ba%r')); } - public function testNumerifyReturnsStringWithPercentageSignsReplacedByNotNullDigits() + public function testNumerifyReturnsStringWithPercentageSignsReplacedByNotNullDigits(): void { self::assertNotEquals('0', BaseProvider::numerify('%')); } - public function testNumerifyCanGenerateALargeNumberOfDigits() + public function testNumerifyCanGenerateALargeNumberOfDigits(): void { $largePattern = str_repeat('#', 20); // definitely larger than PHP_INT_MAX on all systems self::assertEquals(20, strlen(BaseProvider::numerify($largePattern))); } - public function testLexifyReturnsSameStringWhenItContainsNoQuestionMark() + public function testLexifyReturnsSameStringWhenItContainsNoQuestionMark(): void { self::assertEquals('fooBar#', BaseProvider::lexify('fooBar#')); } - public function testLexifyReturnsStringWithQuestionMarksReplacedByLetters() + public function testLexifyReturnsStringWithQuestionMarksReplacedByLetters(): void { self::assertMatchesRegularExpression('/foo[a-z]Ba[a-z]r/', BaseProvider::lexify('foo?Ba?r')); } - public function testBothifyCombinesNumerifyAndLexify() + public function testBothifyCombinesNumerifyAndLexify(): void { self::assertMatchesRegularExpression('/foo[a-z]Ba\dr/', BaseProvider::bothify('foo?Ba#r')); } - public function testBothifyAsterisk() + public function testBothifyAsterisk(): void { self::assertMatchesRegularExpression('/foo([a-z]|\d)Ba([a-z]|\d)r/', BaseProvider::bothify('foo*Ba*r')); } - public function testBothifyUtf() + public function testBothifyUtf(): void { $utf = 'œ∑´®†¥¨ˆøπ“‘和製╯°□°╯︵ ┻━┻🐵 🙈 ﺚﻣ ﻦﻔﺳ ﺲﻘﻄﺗ ﻮﺑﺎﻠﺘﺣﺪﻳﺩ،, ﺝﺰﻳﺮﺘﻳ ﺏﺎﺴﺘﺧﺩﺎﻣ ﺄﻧ ﺪﻧﻭ. ﺇﺫ ﻪﻧﺍ؟ ﺎﻠﺴﺗﺍﺭ ﻮﺘ'; self::assertMatchesRegularExpression('/' . $utf . 'foo\dB[a-z]a([a-z]|\d)r/u', BaseProvider::bothify($utf . 'foo#B?a*r')); } - public function testAsciifyReturnsSameStringWhenItContainsNoStarSign() + public function testAsciifyReturnsSameStringWhenItContainsNoStarSign(): void { self::assertEquals('fooBar?', BaseProvider::asciify('fooBar?')); } - public function testAsciifyReturnsStringWithStarSignsReplacedByAsciiChars() + public function testAsciifyReturnsStringWithStarSignsReplacedByAsciiChars(): void { self::assertMatchesRegularExpression('/foo.Ba.r/', BaseProvider::asciify('foo*Ba*r')); } @@ -319,7 +319,7 @@ public function regexifyBasicDataProvider() /** * @dataProvider regexifyBasicDataProvider */ - public function testRegexifyBasicFeatures($input, $output, $message) + public function testRegexifyBasicFeatures($input, $output, $message): void { self::assertEquals($output, BaseProvider::regexify($input), $message); } @@ -351,26 +351,26 @@ public function regexifyDataProvider() /** * @dataProvider regexifyDataProvider */ - public function testRegexifySupportedRegexSyntax($pattern, $message) + public function testRegexifySupportedRegexSyntax($pattern, $message): void { self::assertMatchesRegularExpression('/' . $pattern . '/', BaseProvider::regexify($pattern), 'Regexify supports ' . $message); } - public function testOptionalReturnsProviderValueWhenCalledWithWeight1() + public function testOptionalReturnsProviderValueWhenCalledWithWeight1(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); self::assertNotNull($faker->optional(100)->randomDigit); } - public function testOptionalReturnsNullWhenCalledWithWeight0() + public function testOptionalReturnsNullWhenCalledWithWeight0(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); self::assertNull($faker->optional(0)->randomDigit); } - public function testOptionalAllowsChainingPropertyAccess() + public function testOptionalAllowsChainingPropertyAccess(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -379,7 +379,7 @@ public function testOptionalAllowsChainingPropertyAccess() self::assertNull($faker->optional(0)->count); } - public function testOptionalAllowsChainingMethodCall() + public function testOptionalAllowsChainingMethodCall(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -388,7 +388,7 @@ public function testOptionalAllowsChainingMethodCall() self::assertNull($faker->optional(0)->count()); } - public function testOptionalAllowsChainingProviderCallRandomlyReturnNull() + public function testOptionalAllowsChainingProviderCallRandomlyReturnNull(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -410,7 +410,7 @@ public function testOptionalAllowsChainingProviderCallRandomlyReturnNull() /** * @see https://github.com/fzaninotto/Faker/issues/265 */ - public function testOptionalPercentageAndWeight() + public function testOptionalPercentageAndWeight(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -430,7 +430,7 @@ public function testOptionalPercentageAndWeight() ); } - public function testUniqueAllowsChainingPropertyAccess() + public function testUniqueAllowsChainingPropertyAccess(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -438,7 +438,7 @@ public function testUniqueAllowsChainingPropertyAccess() self::assertEquals(1, $faker->unique()->count); } - public function testUniqueAllowsChainingMethodCall() + public function testUniqueAllowsChainingMethodCall(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -446,7 +446,7 @@ public function testUniqueAllowsChainingMethodCall() self::assertEquals(1, $faker->unique()->count()); } - public function testUniqueReturnsOnlyUniqueValues() + public function testUniqueReturnsOnlyUniqueValues(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -459,7 +459,7 @@ public function testUniqueReturnsOnlyUniqueValues() self::assertEquals([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], $values); } - public function testUniqueThrowsExceptionWhenNoUniqueValueCanBeGenerated() + public function testUniqueThrowsExceptionWhenNoUniqueValueCanBeGenerated(): void { $this->expectException(\OverflowException::class); $faker = new \Faker\Generator(); @@ -470,7 +470,7 @@ public function testUniqueThrowsExceptionWhenNoUniqueValueCanBeGenerated() } } - public function testUniqueCanResetUniquesWhenPassedTrueAsArgument() + public function testUniqueCanResetUniquesWhenPassedTrueAsArgument(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -488,21 +488,21 @@ public function testUniqueCanResetUniquesWhenPassedTrueAsArgument() self::assertEquals([0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9], $values); } - public function testValidAllowsChainingPropertyAccess() + public function testValidAllowsChainingPropertyAccess(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); self::assertLessThan(10, $faker->valid()->randomDigit); } - public function testValidAllowsChainingMethodCall() + public function testValidAllowsChainingMethodCall(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); self::assertLessThan(10, $faker->valid()->numberBetween(5, 9)); } - public function testValidReturnsOnlyValidValues() + public function testValidReturnsOnlyValidValues(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -519,7 +519,7 @@ public function testValidReturnsOnlyValidValues() self::assertEquals([0, 2, 4, 6, 8], $uniqueValues); } - public function testValidThrowsExceptionWhenNoValidValueCanBeGenerated() + public function testValidThrowsExceptionWhenNoValidValueCanBeGenerated(): void { $this->expectException(\OverflowException::class); $faker = new \Faker\Generator(); @@ -533,7 +533,7 @@ public function testValidThrowsExceptionWhenNoValidValueCanBeGenerated() } } - public function testValidThrowsExceptionWhenParameterIsNotCallable() + public function testValidThrowsExceptionWhenParameterIsNotCallable(): void { $faker = new \Faker\Generator(); $faker->addProvider(new \Faker\Provider\Base($faker)); @@ -541,14 +541,14 @@ public function testValidThrowsExceptionWhenParameterIsNotCallable() $faker->valid(12)->randomElement([1, 3, 5, 7, 9]); } - public function testRandomElementsThrowsWhenRequestingTooManyKeys() + public function testRandomElementsThrowsWhenRequestingTooManyKeys(): void { $this->expectException(\LengthException::class); $this->expectExceptionMessage('Cannot get 2 elements, only 1 in array'); BaseProvider::randomElements(['foo'], 2); } - public function testRandomElements() + public function testRandomElements(): void { self::assertCount(1, BaseProvider::randomElements(), 'Should work without any input'); diff --git a/test/Faker/Provider/BiasedTest.php b/test/Faker/Provider/BiasedTest.php index a040c850b7..80eb9cb6ab 100644 --- a/test/Faker/Provider/BiasedTest.php +++ b/test/Faker/Provider/BiasedTest.php @@ -20,14 +20,14 @@ protected function setUp(): void $this->results = array_fill(1, self::MAX, 0); } - public function performFake($function) + public function performFake($function): void { for ($i = 0; $i < self::NUMBERS; ++$i) { ++$this->results[$this->faker->biasedNumberBetween(1, self::MAX, $function)]; } } - public function testUnbiased() + public function testUnbiased(): void { $this->performFake(['\Faker\Provider\Biased', 'unbiased']); @@ -42,7 +42,7 @@ public function testUnbiased() } } - public function testLinearHigh() + public function testLinearHigh(): void { $this->performFake(['\Faker\Provider\Biased', 'linearHigh']); @@ -56,7 +56,7 @@ public function testLinearHigh() } } - public function testLinearLow() + public function testLinearLow(): void { $this->performFake(['\Faker\Provider\Biased', 'linearLow']); diff --git a/test/Faker/Provider/ColorTest.php b/test/Faker/Provider/ColorTest.php index 90298a2b1c..49e1524622 100644 --- a/test/Faker/Provider/ColorTest.php +++ b/test/Faker/Provider/ColorTest.php @@ -10,58 +10,58 @@ */ final class ColorTest extends TestCase { - public function testHexColor() + public function testHexColor(): void { self::assertMatchesRegularExpression('/^#[a-f0-9]{6}$/i', Color::hexColor()); } - public function testSafeHexColor() + public function testSafeHexColor(): void { self::assertMatchesRegularExpression('/^#[a-f0-9]{6}$/i', Color::safeHexColor()); } - public function testRgbColorAsArray() + public function testRgbColorAsArray(): void { self::assertCount(3, Color::rgbColorAsArray()); } - public function testRgbColor() + public function testRgbColor(): void { $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; self::assertMatchesRegularExpression('/^' . $regexp . ',' . $regexp . ',' . $regexp . '$/i', Color::rgbColor()); } - public function testRgbCssColor() + public function testRgbCssColor(): void { $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; self::assertMatchesRegularExpression('/^rgb\(' . $regexp . ',' . $regexp . ',' . $regexp . '\)$/i', Color::rgbCssColor()); } - public function testRgbaCssColor() + public function testRgbaCssColor(): void { $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; $regexpAlpha = '([01]?(\.\d+)?)'; self::assertMatchesRegularExpression('/^rgba\(' . $regexp . ',' . $regexp . ',' . $regexp . ',' . $regexpAlpha . '\)$/i', Color::rgbaCssColor()); } - public function testSafeColorName() + public function testSafeColorName(): void { self::assertMatchesRegularExpression('/^[\w]+$/', Color::safeColorName()); } - public function testColorName() + public function testColorName(): void { self::assertMatchesRegularExpression('/^[\w]+$/', Color::colorName()); } - public function testHslColor() + public function testHslColor(): void { $regexp360 = '(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])'; $regexp100 = '(?:100|[1-9]?[0-9])'; self::assertMatchesRegularExpression('/^' . $regexp360 . ',' . $regexp100 . ',' . $regexp100 . '$/', Color::hslColor()); } - public function testHslColorArray() + public function testHslColorArray(): void { self::assertCount(3, Color::hslColorAsArray()); } diff --git a/test/Faker/Provider/CompanyTest.php b/test/Faker/Provider/CompanyTest.php index 418f2ad817..55002dec18 100644 --- a/test/Faker/Provider/CompanyTest.php +++ b/test/Faker/Provider/CompanyTest.php @@ -11,7 +11,7 @@ */ final class CompanyTest extends TestCase { - public function testJobTitle() + public function testJobTitle(): void { $jobTitle = $this->faker->jobTitle(); $pattern = '/^[A-Za-z]+$/'; diff --git a/test/Faker/Provider/DateTimeTest.php b/test/Faker/Provider/DateTimeTest.php index 86e076b9ca..5b0ce2bdf6 100644 --- a/test/Faker/Provider/DateTimeTest.php +++ b/test/Faker/Provider/DateTimeTest.php @@ -21,7 +21,7 @@ protected function tearDown(): void DateTimeProvider::setDefaultTimezone(); } - public function testPreferDefaultTimezoneOverSystemTimezone() + public function testPreferDefaultTimezoneOverSystemTimezone(): void { /** * Set the system timezone to something *other* than the timezone used @@ -45,7 +45,7 @@ public function testPreferDefaultTimezoneOverSystemTimezone() date_default_timezone_set($originalSystemTimezone); } - public function testUseSystemTimezoneWhenDefaultTimezoneIsNotSet() + public function testUseSystemTimezoneWhenDefaultTimezoneIsNotSet(): void { /** * Set the system timezone to something *other* than the timezone used @@ -71,7 +71,7 @@ public function testUseSystemTimezoneWhenDefaultTimezoneIsNotSet() date_default_timezone_set($originalSystemTimezone); } - public function testUnixTime() + public function testUnixTime(): void { $timestamp = DateTimeProvider::unixTime(); self::assertIsInt($timestamp); @@ -79,7 +79,7 @@ public function testUnixTime() self::assertLessThanOrEqual(time(), $timestamp); } - public function testDateTime() + public function testDateTime(): void { $date = DateTimeProvider::dateTime(); self::assertInstanceOf('\DateTime', $date); @@ -88,13 +88,13 @@ public function testDateTime() self::assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone()); } - public function testDateTimeWithTimezone() + public function testDateTimeWithTimezone(): void { $date = DateTimeProvider::dateTime('now', 'America/New_York'); self::assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York')); } - public function testDateTimeAD() + public function testDateTimeAD(): void { $date = DateTimeProvider::dateTimeAD(); self::assertInstanceOf('\DateTime', $date); @@ -103,7 +103,7 @@ public function testDateTimeAD() self::assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone()); } - public function testDateTimeThisCentury() + public function testDateTimeThisCentury(): void { $date = DateTimeProvider::dateTimeThisCentury(); self::assertInstanceOf('\DateTime', $date); @@ -112,7 +112,7 @@ public function testDateTimeThisCentury() self::assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone()); } - public function testDateTimeThisDecade() + public function testDateTimeThisDecade(): void { $date = DateTimeProvider::dateTimeThisDecade(); self::assertInstanceOf('\DateTime', $date); @@ -121,7 +121,7 @@ public function testDateTimeThisDecade() self::assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone()); } - public function testDateTimeThisYear() + public function testDateTimeThisYear(): void { $date = DateTimeProvider::dateTimeThisYear(); self::assertInstanceOf('\DateTime', $date); @@ -130,7 +130,7 @@ public function testDateTimeThisYear() self::assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone()); } - public function testDateTimeThisMonth() + public function testDateTimeThisMonth(): void { $date = DateTimeProvider::dateTimeThisMonth(); self::assertInstanceOf('\DateTime', $date); @@ -139,31 +139,31 @@ public function testDateTimeThisMonth() self::assertEquals(new \DateTimeZone($this->defaultTz), $date->getTimezone()); } - public function testDateTimeThisCenturyWithTimezone() + public function testDateTimeThisCenturyWithTimezone(): void { $date = DateTimeProvider::dateTimeThisCentury('now', 'America/New_York'); self::assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York')); } - public function testDateTimeThisDecadeWithTimezone() + public function testDateTimeThisDecadeWithTimezone(): void { $date = DateTimeProvider::dateTimeThisDecade('now', 'America/New_York'); self::assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York')); } - public function testDateTimeThisYearWithTimezone() + public function testDateTimeThisYearWithTimezone(): void { $date = DateTimeProvider::dateTimeThisYear('now', 'America/New_York'); self::assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York')); } - public function testDateTimeThisMonthWithTimezone() + public function testDateTimeThisMonthWithTimezone(): void { $date = DateTimeProvider::dateTimeThisMonth('now', 'America/New_York'); self::assertEquals($date->getTimezone(), new \DateTimeZone('America/New_York')); } - public function testIso8601() + public function testIso8601(): void { $date = DateTimeProvider::iso8601(); self::assertMatchesRegularExpression('/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-Z](\d{4})?$/', $date); @@ -171,7 +171,7 @@ public function testIso8601() self::assertLessThanOrEqual(new \DateTime(), new \DateTime($date)); } - public function testDate() + public function testDate(): void { $date = DateTimeProvider::date(); self::assertMatchesRegularExpression('/^\d{4}-\d{2}-\d{2}$/', $date); @@ -179,7 +179,7 @@ public function testDate() self::assertLessThanOrEqual(new \DateTime(), new \DateTime($date)); } - public function testTime() + public function testTime(): void { $date = DateTimeProvider::time(); self::assertMatchesRegularExpression('/^\d{2}:\d{2}:\d{2}$/', $date); @@ -188,7 +188,7 @@ public function testTime() /** * @dataProvider providerDateTimeBetween */ - public function testDateTimeBetween($start, $end) + public function testDateTimeBetween($start, $end): void { $date = DateTimeProvider::dateTimeBetween($start, $end); self::assertInstanceOf('\DateTime', $date); @@ -210,7 +210,7 @@ public function providerDateTimeBetween() /** * @dataProvider providerDateTimeInInterval */ - public function testDateTimeInInterval($start, $interval, $isInFuture) + public function testDateTimeInInterval($start, $interval, $isInFuture): void { $date = DateTimeProvider::dateTimeInInterval($start, $interval); self::assertInstanceOf('\DateTime', $date); @@ -236,7 +236,7 @@ public function providerDateTimeInInterval() ]; } - public function testFixedSeedWithMaximumTimestamp() + public function testFixedSeedWithMaximumTimestamp(): void { $max = '2118-03-01 12:00:00'; diff --git a/test/Faker/Provider/HtmlLoremTest.php b/test/Faker/Provider/HtmlLoremTest.php index f72b3723c3..0290d16966 100644 --- a/test/Faker/Provider/HtmlLoremTest.php +++ b/test/Faker/Provider/HtmlLoremTest.php @@ -10,14 +10,14 @@ */ final class HtmlLoremTest extends TestCase { - public function testProvider() + public function testProvider(): void { $node = $this->faker->randomHtml(6, 10); self::assertStringStartsWith('', $node); self::assertStringEndsWith("\n", $node); } - public function testRandomHtmlReturnsValidHTMLString() + public function testRandomHtmlReturnsValidHTMLString(): void { $node = $this->faker->randomHtml(6, 10); $dom = new \DOMDocument(); diff --git a/test/Faker/Provider/ImageTest.php b/test/Faker/Provider/ImageTest.php index 8b3897be49..7530c83946 100644 --- a/test/Faker/Provider/ImageTest.php +++ b/test/Faker/Provider/ImageTest.php @@ -10,7 +10,7 @@ */ final class ImageTest extends TestCase { - public function testImageUrlUses640x680AsTheDefaultSize() + public function testImageUrlUses640x680AsTheDefaultSize(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/640x480.png/#', @@ -18,7 +18,7 @@ public function testImageUrlUses640x680AsTheDefaultSize() ); } - public function testImageUrlAcceptsCustomWidthAndHeight() + public function testImageUrlAcceptsCustomWidthAndHeight(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/#', @@ -26,7 +26,7 @@ public function testImageUrlAcceptsCustomWidthAndHeight() ); } - public function testImageUrlAcceptsCustomCategory() + public function testImageUrlAcceptsCustomCategory(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/[\w]{6}\?text=nature\+.*#', @@ -34,7 +34,7 @@ public function testImageUrlAcceptsCustomCategory() ); } - public function testImageUrlAcceptsCustomText() + public function testImageUrlAcceptsCustomText(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/[\w]{6}\?text=nature\+Faker#', @@ -42,7 +42,7 @@ public function testImageUrlAcceptsCustomText() ); } - public function testImageUrlReturnsLinkToRegularImageWhenGrayIsFalse() + public function testImageUrlReturnsLinkToRegularImageWhenGrayIsFalse(): void { $imageUrl = Image::imageUrl( 800, @@ -59,7 +59,7 @@ public function testImageUrlReturnsLinkToRegularImageWhenGrayIsFalse() ); } - public function testImageUrlReturnsLinkToRegularImageWhenGrayIsTrue() + public function testImageUrlReturnsLinkToRegularImageWhenGrayIsTrue(): void { $imageUrl = Image::imageUrl( 800, @@ -76,7 +76,7 @@ public function testImageUrlReturnsLinkToRegularImageWhenGrayIsTrue() ); } - public function testImageUrlAddsARandomGetParameterByDefault() + public function testImageUrlAddsARandomGetParameterByDefault(): void { $url = Image::imageUrl(800, 400); $splitUrl = preg_split('/\?text=/', $url); @@ -85,7 +85,7 @@ public function testImageUrlAddsARandomGetParameterByDefault() self::assertMatchesRegularExpression('#\w*#', $splitUrl[1]); } - public function testImageUrlThrowsExceptionOnInvalidImageFormat() + public function testImageUrlThrowsExceptionOnInvalidImageFormat(): void { $this->expectException(\InvalidArgumentException::class); Image::imageUrl( @@ -99,7 +99,7 @@ public function testImageUrlThrowsExceptionOnInvalidImageFormat() ); } - public function testImageUrlAcceptsDifferentImageFormats() + public function testImageUrlAcceptsDifferentImageFormats(): void { foreach (Image::getFormats() as $format) { $imageUrl = Image::imageUrl( @@ -119,7 +119,7 @@ public function testImageUrlAcceptsDifferentImageFormats() } } - public function testDownloadWithDefaults() + public function testDownloadWithDefaults(): void { self::checkUrlConnection(Image::BASE_URL); @@ -129,7 +129,7 @@ public function testDownloadWithDefaults() self::checkImageProperties($file, 640, 480, 'png'); } - public function testDownloadWithDifferentImageFormats() + public function testDownloadWithDifferentImageFormats(): void { self::checkUrlConnection(Image::BASE_URL); @@ -158,7 +158,7 @@ private static function checkImageProperties( int $width, int $height, string $format - ) { + ): void { if (function_exists('getimagesize')) { $imageConstants = Image::getFormatConstants(); [$actualWidth, $actualHeight, $type, $attr] = getimagesize($file); @@ -174,7 +174,7 @@ private static function checkImageProperties( } } - private static function checkUrlConnection(string $url) + private static function checkUrlConnection(string $url): void { $curlPing = curl_init($url); curl_setopt($curlPing, CURLOPT_TIMEOUT, 5); diff --git a/test/Faker/Provider/InternetTest.php b/test/Faker/Provider/InternetTest.php index 646bab5397..8da667675b 100644 --- a/test/Faker/Provider/InternetTest.php +++ b/test/Faker/Provider/InternetTest.php @@ -16,7 +16,7 @@ final class InternetTest extends TestCase /** * @dataProvider localeDataProvider */ - public function testEmailIsValid($locale) + public function testEmailIsValid($locale): void { $this->loadLocalProviders($locale); self::assertNotFalse(filter_var($this->faker->email(), FILTER_VALIDATE_EMAIL)); @@ -25,7 +25,7 @@ public function testEmailIsValid($locale) /** * @dataProvider localeDataProvider */ - public function testUsernameIsValid($locale) + public function testUsernameIsValid($locale): void { $this->loadLocalProviders($locale); $pattern = '/^[A-Za-z0-9]+([._][A-Za-z0-9]+)*$/'; @@ -36,7 +36,7 @@ public function testUsernameIsValid($locale) /** * @dataProvider localeDataProvider */ - public function testDomainnameIsValid($locale) + public function testDomainnameIsValid($locale): void { $this->loadLocalProviders($locale); $pattern = '/^[a-z]+(\.[a-z]+)+$/'; @@ -47,7 +47,7 @@ public function testDomainnameIsValid($locale) /** * @dataProvider localeDataProvider */ - public function testDomainwordIsValid($locale) + public function testDomainwordIsValid($locale): void { $this->loadLocalProviders($locale); $pattern = '/^[a-z]+$/'; @@ -55,75 +55,75 @@ public function testDomainwordIsValid($locale) self::assertMatchesRegularExpression($pattern, $domainWord); } - public function loadLocalProviders($locale) + public function loadLocalProviders($locale): void { $this->loadLocalProvider($locale, 'Internet'); $this->loadLocalProvider($locale, 'Person'); $this->loadLocalProvider($locale, 'Company'); } - public function testPasswordIsValid() + public function testPasswordIsValid(): void { self::assertMatchesRegularExpression('/^.{6}$/', $this->faker->password(6, 6)); } - public function testSlugIsValid() + public function testSlugIsValid(): void { $pattern = '/^[a-z0-9-]+$/'; $slug = $this->faker->slug(); self::assertSame(preg_match($pattern, $slug), 1); } - public function testSlugWithoutVariableNbWordsProducesValidSlug() + public function testSlugWithoutVariableNbWordsProducesValidSlug(): void { $pattern = '/^[a-z0-9-]+$/'; $slug = $this->faker->slug(6, false); self::assertSame(preg_match($pattern, $slug), 1); } - public function testSlugWithoutVariableNbWordsProducesCorrectNumberOfNbWords() + public function testSlugWithoutVariableNbWordsProducesCorrectNumberOfNbWords(): void { $slug = $this->faker->slug(3, false); self::assertCount(3, explode('-', $slug)); } - public function testSlugWithoutNbWordsIsEmpty() + public function testSlugWithoutNbWordsIsEmpty(): void { $slug = $this->faker->slug(0); self::assertSame('', $slug); } - public function testUrlIsValid() + public function testUrlIsValid(): void { self::assertNotFalse(filter_var($this->faker->url(), FILTER_VALIDATE_URL)); } - public function testLocalIpv4() + public function testLocalIpv4(): void { self::assertNotFalse(filter_var($this->faker->localIpv4(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)); } - public function testIpv4() + public function testIpv4(): void { self::assertNotFalse(filter_var($this->faker->ipv4(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)); } - public function testIpv4NotLocalNetwork() + public function testIpv4NotLocalNetwork(): void { self::assertDoesNotMatchRegularExpression('/\A0\./', $this->faker->ipv4()); } - public function testIpv4NotBroadcast() + public function testIpv4NotBroadcast(): void { self::assertNotEquals('255.255.255.255', $this->faker->ipv4()); } - public function testIpv6() + public function testIpv6(): void { self::assertNotFalse(filter_var($this->faker->ipv6(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)); } - public function testMacAddress() + public function testMacAddress(): void { self::assertNotFalse(filter_var($this->faker->macAddress(), FILTER_VALIDATE_MAC)); } diff --git a/test/Faker/Provider/LoremTest.php b/test/Faker/Provider/LoremTest.php index 33ceceeab8..1d2ed8c917 100644 --- a/test/Faker/Provider/LoremTest.php +++ b/test/Faker/Provider/LoremTest.php @@ -10,48 +10,48 @@ */ final class LoremTest extends TestCase { - public function testTextThrowsExceptionWhenAskedTextSizeLessThan5() + public function testTextThrowsExceptionWhenAskedTextSizeLessThan5(): void { $this->expectException(\InvalidArgumentException::class); Lorem::text(4); } - public function testTextReturnsWordsWhenAskedSizeLessThan25() + public function testTextReturnsWordsWhenAskedSizeLessThan25(): void { self::assertEquals('Word word word word.', TestableLorem::text(24)); } - public function testTextReturnsSentencesWhenAskedSizeLessThan100() + public function testTextReturnsSentencesWhenAskedSizeLessThan100(): void { self::assertEquals('This is a test sentence. This is a test sentence. This is a test sentence.', TestableLorem::text(99)); } - public function testTextReturnsParagraphsWhenAskedSizeGreaterOrEqualThanThan100() + public function testTextReturnsParagraphsWhenAskedSizeGreaterOrEqualThanThan100(): void { self::assertEquals('This is a test paragraph. It has three sentences. Exactly three.', TestableLorem::text(100)); } - public function testSentenceWithZeroNbWordsReturnsEmptyString() + public function testSentenceWithZeroNbWordsReturnsEmptyString(): void { self::assertEquals('', Lorem::sentence(0)); } - public function testSentenceWithNegativeNbWordsReturnsEmptyString() + public function testSentenceWithNegativeNbWordsReturnsEmptyString(): void { self::assertEquals('', Lorem::sentence(-1)); } - public function testParagraphWithZeroNbSentencesReturnsEmptyString() + public function testParagraphWithZeroNbSentencesReturnsEmptyString(): void { self::assertEquals('', Lorem::paragraph(0)); } - public function testParagraphWithNegativeNbSentencesReturnsEmptyString() + public function testParagraphWithNegativeNbSentencesReturnsEmptyString(): void { self::assertEquals('', Lorem::paragraph(-1)); } - public function testSentenceWithPositiveNbWordsReturnsAtLeastOneWord() + public function testSentenceWithPositiveNbWordsReturnsAtLeastOneWord(): void { $sentence = Lorem::sentence(1); @@ -59,7 +59,7 @@ public function testSentenceWithPositiveNbWordsReturnsAtLeastOneWord() self::assertGreaterThanOrEqual(1, count(explode(' ', $sentence))); } - public function testParagraphWithPositiveNbSentencesReturnsAtLeastOneWord() + public function testParagraphWithPositiveNbSentencesReturnsAtLeastOneWord(): void { $paragraph = Lorem::paragraph(1); @@ -67,21 +67,21 @@ public function testParagraphWithPositiveNbSentencesReturnsAtLeastOneWord() self::assertGreaterThanOrEqual(1, count(explode(' ', $paragraph))); } - public function testWordssAsText() + public function testWordssAsText(): void { $words = TestableLorem::words(2, true); self::assertEquals('word word', $words); } - public function testSentencesAsText() + public function testSentencesAsText(): void { $sentences = TestableLorem::sentences(2, true); self::assertEquals('This is a test sentence. This is a test sentence.', $sentences); } - public function testParagraphsAsText() + public function testParagraphsAsText(): void { $paragraphs = TestableLorem::paragraphs(2, true); diff --git a/test/Faker/Provider/MiscellaneousTest.php b/test/Faker/Provider/MiscellaneousTest.php index 233b9ca271..51336d8e3b 100644 --- a/test/Faker/Provider/MiscellaneousTest.php +++ b/test/Faker/Provider/MiscellaneousTest.php @@ -10,52 +10,52 @@ */ final class MiscellaneousTest extends TestCase { - public function testBoolean() + public function testBoolean(): void { self::assertContains(Miscellaneous::boolean(), [true, false]); } - public function testMd5() + public function testMd5(): void { self::assertMatchesRegularExpression('/^[a-z0-9]{32}$/', Miscellaneous::md5()); } - public function testSha1() + public function testSha1(): void { self::assertMatchesRegularExpression('/^[a-z0-9]{40}$/', Miscellaneous::sha1()); } - public function testSha256() + public function testSha256(): void { self::assertMatchesRegularExpression('/^[a-z0-9]{64}$/', Miscellaneous::sha256()); } - public function testLocale() + public function testLocale(): void { self::assertMatchesRegularExpression('/^[a-z]{2,3}_[A-Z]{2}$/', Miscellaneous::locale()); } - public function testCountryCode() + public function testCountryCode(): void { self::assertMatchesRegularExpression('/^[A-Z]{2}$/', Miscellaneous::countryCode()); } - public function testCountryISOAlpha3() + public function testCountryISOAlpha3(): void { self::assertMatchesRegularExpression('/^[A-Z]{3}$/', Miscellaneous::countryISOAlpha3()); } - public function testLanguage() + public function testLanguage(): void { self::assertMatchesRegularExpression('/^[a-z]{2}$/', Miscellaneous::languageCode()); } - public function testCurrencyCode() + public function testCurrencyCode(): void { self::assertMatchesRegularExpression('/^[A-Z]{3}$/', Miscellaneous::currencyCode()); } - public function testEmoji() + public function testEmoji(): void { self::assertMatchesRegularExpression('/^[\x{1F600}-\x{1F637}]$/u', Miscellaneous::emoji()); } diff --git a/test/Faker/Provider/PaymentTest.php b/test/Faker/Provider/PaymentTest.php index f564d07b28..1e90da0d9e 100644 --- a/test/Faker/Provider/PaymentTest.php +++ b/test/Faker/Provider/PaymentTest.php @@ -15,7 +15,7 @@ */ final class PaymentTest extends TestCase { - public function testCreditCardTypeReturnsValidVendorName() + public function testCreditCardTypeReturnsValidVendorName(): void { self::assertContains($this->faker->creditCardType, ['Visa', 'Visa Retired', 'MasterCard', 'American Express', 'Discover Card', 'JCB']); } @@ -34,26 +34,26 @@ public function creditCardNumberProvider() /** * @dataProvider creditCardNumberProvider */ - public function testCreditCardNumberReturnsValidCreditCardNumber($type, $regexp) + public function testCreditCardNumberReturnsValidCreditCardNumber($type, $regexp): void { $cardNumber = $this->faker->creditCardNumber($type); self::assertMatchesRegularExpression($regexp, $cardNumber); self::assertTrue(Luhn::isValid($cardNumber)); } - public function testCreditCardNumberCanFormatOutput() + public function testCreditCardNumberCanFormatOutput(): void { self::assertMatchesRegularExpression('/^6011-\d{4}-\d{4}-\d{4}$/', $this->faker->creditCardNumber('Discover Card', true)); } - public function testCreditCardExpirationDateReturnsValidDateByDefault() + public function testCreditCardExpirationDateReturnsValidDateByDefault(): void { $expirationDate = $this->faker->creditCardExpirationDate; self::assertGreaterThan(time(), $expirationDate->getTimestamp()); self::assertLessThan(strtotime('+36 months'), $expirationDate->getTimestamp()); } - public function testRandomCard() + public function testRandomCard(): void { $cardDetails = $this->faker->creditCardDetails; self::assertEquals(count($cardDetails), 4); @@ -132,7 +132,7 @@ public function testRandomCard() /** * @dataProvider localeDataProvider */ - public function testBankAccountNumber($locale) + public function testBankAccountNumber($locale): void { $parts = explode('_', $locale); $countryCode = array_pop($parts); @@ -176,7 +176,7 @@ public function ibanFormatProvider() /** * @dataProvider ibanFormatProvider */ - public function testIban($countryCode, $regex) + public function testIban($countryCode, $regex): void { $iban = $this->faker->iban($countryCode); diff --git a/test/Faker/Provider/PersonTest.php b/test/Faker/Provider/PersonTest.php index 469c25f380..1d2b02265d 100644 --- a/test/Faker/Provider/PersonTest.php +++ b/test/Faker/Provider/PersonTest.php @@ -13,7 +13,7 @@ final class PersonTest extends TestCase /** * @dataProvider firstNameProvider */ - public function testFirstName($gender, $expected) + public function testFirstName($gender, $expected): void { self::assertContains($this->faker->firstName($gender), $expected); } @@ -28,12 +28,12 @@ public function firstNameProvider() ]; } - public function testFirstNameMale() + public function testFirstNameMale(): void { self::assertContains(Person::firstNameMale(), ['John']); } - public function testFirstNameFemale() + public function testFirstNameFemale(): void { self::assertContains(Person::firstNameFemale(), ['Jane']); } @@ -41,7 +41,7 @@ public function testFirstNameFemale() /** * @dataProvider titleProvider */ - public function testTitle($gender, $expected) + public function testTitle($gender, $expected): void { self::assertContains($this->faker->title($gender), $expected); } @@ -56,22 +56,22 @@ public function titleProvider() ]; } - public function testTitleMale() + public function testTitleMale(): void { self::assertContains(Person::titleMale(), ['Mr.', 'Dr.', 'Prof.']); } - public function testTitleFemale() + public function testTitleFemale(): void { self::assertContains(Person::titleFemale(), ['Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.']); } - public function testLastNameReturnsDoe() + public function testLastNameReturnsDoe(): void { self::assertEquals($this->faker->lastName(), 'Doe'); } - public function testNameReturnsFirstNameAndLastName() + public function testNameReturnsFirstNameAndLastName(): void { self::assertContains($this->faker->name(), ['John Doe', 'Jane Doe']); self::assertContains($this->faker->name('foobar'), ['John Doe', 'Jane Doe']); diff --git a/test/Faker/Provider/PhoneNumberTest.php b/test/Faker/Provider/PhoneNumberTest.php index 8a1b3c7238..fe412d8406 100644 --- a/test/Faker/Provider/PhoneNumberTest.php +++ b/test/Faker/Provider/PhoneNumberTest.php @@ -11,7 +11,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 1000; ++$i) { $number = $this->faker->e164PhoneNumber(); @@ -20,7 +20,7 @@ public function testE164PhoneNumberFormat() } } - public function testImeiReturnsValidNumber() + public function testImeiReturnsValidNumber(): void { $imei = $this->faker->imei(); self::assertTrue(Luhn::isValid($imei)); diff --git a/test/Faker/Provider/ProviderOverrideTest.php b/test/Faker/Provider/ProviderOverrideTest.php index 2d04495947..de07e803b6 100644 --- a/test/Faker/Provider/ProviderOverrideTest.php +++ b/test/Faker/Provider/ProviderOverrideTest.php @@ -31,7 +31,7 @@ final class ProviderOverrideTest extends TestCase * * @param string $locale */ - public function testAddress($locale = null) + public function testAddress($locale = null): void { $faker = Faker\Factory::create($locale); @@ -46,7 +46,7 @@ public function testAddress($locale = null) * * @param string $locale */ - public function testCompany($locale = null) + public function testCompany($locale = null): void { $faker = Faker\Factory::create($locale); @@ -58,7 +58,7 @@ public function testCompany($locale = null) * * @param string $locale */ - public function testDateTime($locale = null) + public function testDateTime($locale = null): void { $faker = Faker\Factory::create($locale); @@ -71,7 +71,7 @@ public function testDateTime($locale = null) * * @param string $locale */ - public function testInternet($locale = null) + public function testInternet($locale = null): void { $faker = Faker\Factory::create($locale); @@ -88,7 +88,7 @@ public function testInternet($locale = null) * * @param string $locale */ - public function testPerson($locale = null) + public function testPerson($locale = null): void { $faker = Faker\Factory::create($locale); @@ -103,7 +103,7 @@ public function testPerson($locale = null) * * @param string $locale */ - public function testPhoneNumber($locale = null) + public function testPhoneNumber($locale = null): void { $faker = Faker\Factory::create($locale); @@ -115,7 +115,7 @@ public function testPhoneNumber($locale = null) * * @param string $locale */ - public function testUserAgent($locale = null) + public function testUserAgent($locale = null): void { $faker = Faker\Factory::create($locale); @@ -128,7 +128,7 @@ public function testUserAgent($locale = null) * @param null $locale * @param string $locale */ - public function testUuid($locale = null) + public function testUuid($locale = null): void { $faker = Faker\Factory::create($locale); diff --git a/test/Faker/Provider/TextTest.php b/test/Faker/Provider/TextTest.php index 65c648cf07..05b79e95a4 100644 --- a/test/Faker/Provider/TextTest.php +++ b/test/Faker/Provider/TextTest.php @@ -21,7 +21,7 @@ final class TextTest extends TestCase * [200] * [500] */ - public function testRealTextMaxLength($length) + public function testRealTextMaxLength($length): void { self::assertLessThan($length, strlen($this->faker->realText($length))); } @@ -37,12 +37,12 @@ public function testRealTextMaxLength($length) * [200] * [500] */ - public function testRealTextMinLength($length) + public function testRealTextMinLength($length): void { self::assertGreaterThanOrEqual($length * 0.8, strlen($this->faker->realText($length))); } - public function testRealTextMaxIndex() + public function testRealTextMaxIndex(): void { $this->expectException(\InvalidArgumentException::class); @@ -51,7 +51,7 @@ public function testRealTextMaxIndex() self::fail('The index should be less than or equal to 5.'); } - public function testRealTextMinIndex() + public function testRealTextMinIndex(): void { $this->expectException(\InvalidArgumentException::class); @@ -60,7 +60,7 @@ public function testRealTextMinIndex() self::fail('The index should be greater than or equal to 1.'); } - public function testRealTextMinNbChars() + public function testRealTextMinNbChars(): void { $this->expectException(\InvalidArgumentException::class); @@ -78,7 +78,7 @@ public function testRealTextMinNbChars() * [180, 200] * [1950, 2000] */ - public function testRealTextBetweenTextLength($min, $max) + public function testRealTextBetweenTextLength($min, $max): void { $strlen = strlen($this->faker->realTextBetween($min, $max)); @@ -86,7 +86,7 @@ public function testRealTextBetweenTextLength($min, $max) self::assertLessThan($max, $strlen); } - public function testRealTextBetweenMinNbChars() + public function testRealTextBetweenMinNbChars(): void { $this->expectException(\InvalidArgumentException::class); @@ -95,7 +95,7 @@ public function testRealTextBetweenMinNbChars() self::fail('minNbChars should be smaller than maxNbChars'); } - public function testRealTextBetweenMinNbCharsGreaterThan1() + public function testRealTextBetweenMinNbCharsGreaterThan1(): void { $this->expectException(\InvalidArgumentException::class); diff --git a/test/Faker/Provider/UserAgentTest.php b/test/Faker/Provider/UserAgentTest.php index cf7386a474..15a9ae6b7f 100644 --- a/test/Faker/Provider/UserAgentTest.php +++ b/test/Faker/Provider/UserAgentTest.php @@ -10,7 +10,7 @@ */ final class UserAgentTest extends TestCase { - public function testAllAgents() + public function testAllAgents(): void { $agent = new UserAgent($this->faker); $reflection = new \ReflectionClass($agent); @@ -22,37 +22,37 @@ public function testAllAgents() } } - public function testRandomUserAgent() + public function testRandomUserAgent(): void { self::assertNotNull(UserAgent::userAgent()); } - public function testFirefoxUserAgent() + public function testFirefoxUserAgent(): void { self::assertStringContainsString(' Firefox/', UserAgent::firefox()); } - public function testSafariUserAgent() + public function testSafariUserAgent(): void { self::assertStringContainsString('Safari/', UserAgent::safari()); } - public function testInternetExplorerUserAgent() + public function testInternetExplorerUserAgent(): void { self::assertStringStartsWith('Mozilla/5.0 (compatible; MSIE ', UserAgent::internetExplorer()); } - public function testOperaUserAgent() + public function testOperaUserAgent(): void { self::assertStringStartsWith('Opera/', UserAgent::opera()); } - public function testChromeUserAgent() + public function testChromeUserAgent(): void { self::assertStringContainsString('(KHTML, like Gecko) Chrome/', UserAgent::chrome()); } - public function testMSEdgeUserAgent() + public function testMSEdgeUserAgent(): void { self::assertStringContainsString('Edg', UserAgent::msedge()); } diff --git a/test/Faker/Provider/UuidTest.php b/test/Faker/Provider/UuidTest.php index 8d047c5255..ea410ffe6c 100644 --- a/test/Faker/Provider/UuidTest.php +++ b/test/Faker/Provider/UuidTest.php @@ -10,13 +10,13 @@ */ final class UuidTest extends TestCase { - public function testUuidReturnsUuid() + public function testUuidReturnsUuid(): void { $uuid = BaseProvider::uuid(); self::assertTrue($this->isUuid($uuid)); } - public function testUuidExpectedSeed() + public function testUuidExpectedSeed(): void { if (pack('L', 0x6162797A) == pack('N', 0x6162797A)) { self::markTestSkipped('Big Endian'); diff --git a/test/Faker/Provider/ar_EG/CompanyTest.php b/test/Faker/Provider/ar_EG/CompanyTest.php index 189dfb12c8..382f328b83 100644 --- a/test/Faker/Provider/ar_EG/CompanyTest.php +++ b/test/Faker/Provider/ar_EG/CompanyTest.php @@ -11,14 +11,14 @@ */ final class CompanyTest extends TestCase { - public function testCompanyTaxIdNumberIsValid() + public function testCompanyTaxIdNumberIsValid(): void { $companyTaxIdNumber = $this->faker->companyTaxIdNumber(); self::assertMatchesRegularExpression('/\d{9}$/', $companyTaxIdNumber); self::assertTrue(Luhn::isValid($companyTaxIdNumber)); } - public function testCompanyTradeRegisterNumberIsValid() + public function testCompanyTradeRegisterNumberIsValid(): void { $companyTradeRegisterNumber = $this->faker->companyTradeRegisterNumber(); self::assertMatchesRegularExpression('/\d{6}$/', $companyTradeRegisterNumber); diff --git a/test/Faker/Provider/ar_EG/InternetTest.php b/test/Faker/Provider/ar_EG/InternetTest.php index ebb07c9f14..8be152ad3d 100644 --- a/test/Faker/Provider/ar_EG/InternetTest.php +++ b/test/Faker/Provider/ar_EG/InternetTest.php @@ -10,7 +10,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertMatchesRegularExpression('/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-z]{2,3}$/', $email); diff --git a/test/Faker/Provider/ar_EG/PersonTest.php b/test/Faker/Provider/ar_EG/PersonTest.php index 226788eabc..b940c7be63 100644 --- a/test/Faker/Provider/ar_EG/PersonTest.php +++ b/test/Faker/Provider/ar_EG/PersonTest.php @@ -11,7 +11,7 @@ */ final class PersonTest extends TestCase { - public function testNationalIdNumber() + public function testNationalIdNumber(): void { $nationalIdNumber = $this->faker->nationalIdNumber(); self::assertMatchesRegularExpression('/^2\d{13}$/', $nationalIdNumber); diff --git a/test/Faker/Provider/ar_EG/TextTest.php b/test/Faker/Provider/ar_EG/TextTest.php index 8191b48137..c18b51950c 100644 --- a/test/Faker/Provider/ar_EG/TextTest.php +++ b/test/Faker/Provider/ar_EG/TextTest.php @@ -10,7 +10,7 @@ */ final class TextTest extends TestCase { - public function testText() + public function testText(): void { self::assertNotSame('', $this->faker->realtext(200, 2)); } diff --git a/test/Faker/Provider/ar_JO/InternetTest.php b/test/Faker/Provider/ar_JO/InternetTest.php index c184b97df6..534965a784 100644 --- a/test/Faker/Provider/ar_JO/InternetTest.php +++ b/test/Faker/Provider/ar_JO/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/ar_SA/CompanyTest.php b/test/Faker/Provider/ar_SA/CompanyTest.php index 84c277012f..e79272d83e 100644 --- a/test/Faker/Provider/ar_SA/CompanyTest.php +++ b/test/Faker/Provider/ar_SA/CompanyTest.php @@ -11,7 +11,7 @@ */ final class CompanyTest extends TestCase { - public function testCompanyIdNumberIsValid() + public function testCompanyIdNumberIsValid(): void { $companyIdNumber = $this->faker->companyIdNumber; self::assertMatchesRegularExpression('/^700\d{7}$/', $companyIdNumber); diff --git a/test/Faker/Provider/ar_SA/InternetTest.php b/test/Faker/Provider/ar_SA/InternetTest.php index af8bcc993e..5b666a02e8 100644 --- a/test/Faker/Provider/ar_SA/InternetTest.php +++ b/test/Faker/Provider/ar_SA/InternetTest.php @@ -10,7 +10,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/ar_SA/PersonTest.php b/test/Faker/Provider/ar_SA/PersonTest.php index d8ad7f6de1..c3c46faa2e 100644 --- a/test/Faker/Provider/ar_SA/PersonTest.php +++ b/test/Faker/Provider/ar_SA/PersonTest.php @@ -11,21 +11,21 @@ */ final class PersonTest extends TestCase { - public function testIdNumber() + public function testIdNumber(): void { $idNumber = $this->faker->idNumber; self::assertMatchesRegularExpression('/^[1|2]\d{9}$/', $idNumber); self::assertTrue(Luhn::isValid($idNumber)); } - public function testNationalIdNumber() + public function testNationalIdNumber(): void { $nationalIdNumber = $this->faker->nationalIdNumber; self::assertMatchesRegularExpression('/^1\d{9}$/', $nationalIdNumber); self::assertTrue(Luhn::isValid($nationalIdNumber)); } - public function testForeignerIdNumber() + public function testForeignerIdNumber(): void { $foreignerIdNumber = $this->faker->foreignerIdNumber; self::assertMatchesRegularExpression('/^2\d{9}$/', $foreignerIdNumber); diff --git a/test/Faker/Provider/bg_BG/PaymentTest.php b/test/Faker/Provider/bg_BG/PaymentTest.php index 2ff0be9143..e429e64e86 100644 --- a/test/Faker/Provider/bg_BG/PaymentTest.php +++ b/test/Faker/Provider/bg_BG/PaymentTest.php @@ -10,7 +10,7 @@ */ final class PaymentTest extends TestCase { - public function testVatIsValid() + public function testVatIsValid(): void { $vat = $this->faker->vat(); $unspacedVat = $this->faker->vat(false); diff --git a/test/Faker/Provider/bn_BD/PersonTest.php b/test/Faker/Provider/bn_BD/PersonTest.php index 2da1a5b58e..38223f4d0f 100644 --- a/test/Faker/Provider/bn_BD/PersonTest.php +++ b/test/Faker/Provider/bn_BD/PersonTest.php @@ -10,13 +10,13 @@ */ final class PersonTest extends TestCase { - public function testIfFirstNameMaleCanReturnData() + public function testIfFirstNameMaleCanReturnData(): void { $firstNameMale = $this->faker->firstNameMale(); self::assertNotEmpty($firstNameMale); } - public function testIfFirstNameFemaleCanReturnData() + public function testIfFirstNameFemaleCanReturnData(): void { $firstNameFemale = $this->faker->firstNameFemale(); self::assertNotEmpty($firstNameFemale); diff --git a/test/Faker/Provider/cs_CZ/PersonTest.php b/test/Faker/Provider/cs_CZ/PersonTest.php index 767ce65ba7..5d0adaf845 100644 --- a/test/Faker/Provider/cs_CZ/PersonTest.php +++ b/test/Faker/Provider/cs_CZ/PersonTest.php @@ -11,7 +11,7 @@ */ final class PersonTest extends TestCase { - public function testBirthNumber() + public function testBirthNumber(): void { for ($i = 0; $i < 1000; ++$i) { $birthNumber = $this->faker->birthNumber(); diff --git a/test/Faker/Provider/da_DK/InternetTest.php b/test/Faker/Provider/da_DK/InternetTest.php index 6a1b04fb81..ad84d6f0f0 100644 --- a/test/Faker/Provider/da_DK/InternetTest.php +++ b/test/Faker/Provider/da_DK/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/de_AT/AddressTest.php b/test/Faker/Provider/de_AT/AddressTest.php index 74c3598d36..7bc8072b4a 100644 --- a/test/Faker/Provider/de_AT/AddressTest.php +++ b/test/Faker/Provider/de_AT/AddressTest.php @@ -13,7 +13,7 @@ final class AddressTest extends TestCase /** * @see https://en.wikipedia.org/wiki/List_of_postal_codes_in_Austria */ - public function testPostcodeReturnsPostcodeThatMatchesAustrianFormat() + public function testPostcodeReturnsPostcodeThatMatchesAustrianFormat(): void { $postcode = $this->faker->postcode; diff --git a/test/Faker/Provider/de_AT/InternetTest.php b/test/Faker/Provider/de_AT/InternetTest.php index 7c7203b431..9c65a42ba5 100644 --- a/test/Faker/Provider/de_AT/InternetTest.php +++ b/test/Faker/Provider/de_AT/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/de_AT/PaymentTest.php b/test/Faker/Provider/de_AT/PaymentTest.php index 067c28f54a..378571a09c 100644 --- a/test/Faker/Provider/de_AT/PaymentTest.php +++ b/test/Faker/Provider/de_AT/PaymentTest.php @@ -10,7 +10,7 @@ */ final class PaymentTest extends TestCase { - public function testVatIsValid() + public function testVatIsValid(): void { $vat = $this->faker->vat(); $unspacedVat = $this->faker->vat(false); @@ -18,7 +18,7 @@ public function testVatIsValid() self::assertMatchesRegularExpression('/^(ATU\d{8})$/', $unspacedVat); } - public function testBankAccountNumber() + public function testBankAccountNumber(): void { $accNo = $this->faker->bankAccountNumber; self::assertEquals(substr($accNo, 0, 2), 'AT'); diff --git a/test/Faker/Provider/de_AT/PersonTest.php b/test/Faker/Provider/de_AT/PersonTest.php index 3086d36aa1..26217fc6e9 100644 --- a/test/Faker/Provider/de_AT/PersonTest.php +++ b/test/Faker/Provider/de_AT/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testSsnWithDefaultValuesCorrect() + public function testSsnWithDefaultValuesCorrect(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->ssn; @@ -27,7 +27,7 @@ public function testSsnWithDefaultValuesCorrect() } } - public function testSsnWithGivenBirthDateCorrect() + public function testSsnWithGivenBirthDateCorrect(): void { $number = $this->faker->ssn(new \DateTime('2010-09-08 06:05:04')); @@ -50,7 +50,7 @@ protected function getProviders(): iterable yield new Person($this->faker); } - private function assertCorrectSsnVerificationNumber($ssn) + private function assertCorrectSsnVerificationNumber($ssn): void { $weights = [3, 7, 9, 0, 5, 8, 4, 2, 1, 6]; $checkSum = 0; diff --git a/test/Faker/Provider/de_AT/PhoneNumberTest.php b/test/Faker/Provider/de_AT/PhoneNumberTest.php index 5c41215a92..85551e8bc0 100644 --- a/test/Faker/Provider/de_AT/PhoneNumberTest.php +++ b/test/Faker/Provider/de_AT/PhoneNumberTest.php @@ -10,13 +10,13 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumberFormat() + public function testPhoneNumberFormat(): void { $number = $this->faker->phoneNumber; self::assertMatchesRegularExpression('/^06\d{2} \d{7}|\+43 \d{4} \d{4}(-\d{2})?$/', $number); } - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->e164PhoneNumber(); diff --git a/test/Faker/Provider/de_CH/AddressTest.php b/test/Faker/Provider/de_CH/AddressTest.php index 2837c96b76..d12dbcb90e 100644 --- a/test/Faker/Provider/de_CH/AddressTest.php +++ b/test/Faker/Provider/de_CH/AddressTest.php @@ -11,7 +11,7 @@ */ final class AddressTest extends TestCase { - public function testCanton() + public function testCanton(): void { $canton = $this->faker->canton(); self::assertIsArray($canton); @@ -25,21 +25,21 @@ public function testCanton() } } - public function testCantonName() + public function testCantonName(): void { $cantonName = $this->faker->cantonName(); self::assertIsString($cantonName); self::assertGreaterThan(2, strlen($cantonName)); } - public function testCantonShort() + public function testCantonShort(): void { $cantonShort = $this->faker->cantonShort(); self::assertIsString($cantonShort); self::assertEquals(2, strlen($cantonShort)); } - public function testAddress() + public function testAddress(): void { $address = $this->faker->address(); self::assertIsString($address); diff --git a/test/Faker/Provider/de_CH/InternetTest.php b/test/Faker/Provider/de_CH/InternetTest.php index e4faee0d43..6cf3cc1c74 100644 --- a/test/Faker/Provider/de_CH/InternetTest.php +++ b/test/Faker/Provider/de_CH/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/de_CH/PersonTest.php b/test/Faker/Provider/de_CH/PersonTest.php index 9fc60b2890..6de728bd03 100644 --- a/test/Faker/Provider/de_CH/PersonTest.php +++ b/test/Faker/Provider/de_CH/PersonTest.php @@ -11,14 +11,14 @@ */ final class PersonTest extends TestCase { - public function testAvs13Number() + public function testAvs13Number(): void { $avs = $this->faker->avs13; self::assertMatchesRegularExpression('/^756\.([0-9]{4})\.([0-9]{4})\.([0-9]{2})$/', $avs); self::assertTrue(Ean::isValid(str_replace('.', '', $avs))); } - public function testAhv13Number() + public function testAhv13Number(): void { $ahv = $this->faker->ahv13; self::assertMatchesRegularExpression('/^756\.([0-9]{4})\.([0-9]{4})\.([0-9]{2})$/', $ahv); diff --git a/test/Faker/Provider/de_CH/PhoneNumberTest.php b/test/Faker/Provider/de_CH/PhoneNumberTest.php index 551414688d..853589f5aa 100644 --- a/test/Faker/Provider/de_CH/PhoneNumberTest.php +++ b/test/Faker/Provider/de_CH/PhoneNumberTest.php @@ -10,17 +10,17 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { self::assertMatchesRegularExpression('/^0\d{2} ?\d{3} ?\d{2} ?\d{2}|\+41 ?(\(0\))?\d{2} ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->phoneNumber()); } - public function testMobileNumber() + public function testMobileNumber(): void { self::assertMatchesRegularExpression('/^07[56789] ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->mobileNumber()); } - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->e164PhoneNumber(); diff --git a/test/Faker/Provider/de_DE/InternetTest.php b/test/Faker/Provider/de_DE/InternetTest.php index 48c6fd07d8..7fabbd4183 100644 --- a/test/Faker/Provider/de_DE/InternetTest.php +++ b/test/Faker/Provider/de_DE/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/de_DE/PhoneNumberTest.php b/test/Faker/Provider/de_DE/PhoneNumberTest.php index a57a8097c4..c0a66cd77d 100644 --- a/test/Faker/Provider/de_DE/PhoneNumberTest.php +++ b/test/Faker/Provider/de_DE/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->phoneNumber(); @@ -20,7 +20,7 @@ public function testPhoneNumber() } } - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->e164PhoneNumber(); @@ -28,7 +28,7 @@ public function testE164PhoneNumberFormat() } } - public function testMobileNumberFormat() + public function testMobileNumberFormat(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->mobileNumber(); @@ -36,7 +36,7 @@ public function testMobileNumberFormat() } } - public function testTollFreeAreaCode() + public function testTollFreeAreaCode(): void { self::assertContains($this->faker->tollFreeAreaCode(), [800]); } diff --git a/test/Faker/Provider/el_GR/PhoneNumberTest.php b/test/Faker/Provider/el_GR/PhoneNumberTest.php index 85421a3bad..2403fdd510 100644 --- a/test/Faker/Provider/el_GR/PhoneNumberTest.php +++ b/test/Faker/Provider/el_GR/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testFixedLineNumber() + public function testFixedLineNumber(): void { $fixedLineNumber = $this->faker->fixedLineNumber(); self::assertNotSame(' ', $fixedLineNumber[0]); @@ -20,7 +20,7 @@ public function testFixedLineNumber() ); } - public function testMobileNumber() + public function testMobileNumber(): void { $mobileNumber = $this->faker->mobileNumber(); self::assertNotSame(' ', $mobileNumber[0]); @@ -30,7 +30,7 @@ public function testMobileNumber() ); } - public function testPersonalNumber() + public function testPersonalNumber(): void { $personalNumber = $this->faker->personalNumber(); self::assertNotSame(' ', $personalNumber[0]); @@ -40,7 +40,7 @@ public function testPersonalNumber() ); } - public function testTollFreeNumber() + public function testTollFreeNumber(): void { $tollFreeNumber = $this->faker->tollFreeNumber(); self::assertNotSame(' ', $tollFreeNumber[0]); @@ -50,7 +50,7 @@ public function testTollFreeNumber() ); } - public function testSharedCostNumber() + public function testSharedCostNumber(): void { $sharedCostNumber = $this->faker->sharedCostNumber(); self::assertNotSame(' ', $sharedCostNumber[0]); @@ -60,7 +60,7 @@ public function testSharedCostNumber() ); } - public function testPremiumRateNumber() + public function testPremiumRateNumber(): void { $premiumRateNumber = $this->faker->premiumRateNumber(); self::assertNotSame(' ', $premiumRateNumber[0]); diff --git a/test/Faker/Provider/el_GR/TextTest.php b/test/Faker/Provider/el_GR/TextTest.php index 5ffa347749..666912593e 100644 --- a/test/Faker/Provider/el_GR/TextTest.php +++ b/test/Faker/Provider/el_GR/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.', diff --git a/test/Faker/Provider/en_AU/AddressTest.php b/test/Faker/Provider/en_AU/AddressTest.php index 78ce98c16b..35a5853cc7 100644 --- a/test/Faker/Provider/en_AU/AddressTest.php +++ b/test/Faker/Provider/en_AU/AddressTest.php @@ -9,7 +9,7 @@ */ final class AddressTest extends TestCase { - public function testCityPrefix() + public function testCityPrefix(): void { $cityPrefix = $this->faker->cityPrefix(); self::assertNotEmpty($cityPrefix); @@ -17,7 +17,7 @@ public function testCityPrefix() self::assertMatchesRegularExpression('/[A-Z][a-z]+/', $cityPrefix); } - public function testStreetSuffix() + public function testStreetSuffix(): void { $streetSuffix = $this->faker->streetSuffix(); self::assertNotEmpty($streetSuffix); @@ -25,7 +25,7 @@ public function testStreetSuffix() self::assertMatchesRegularExpression('/[A-Z][a-z]+/', $streetSuffix); } - public function testState() + public function testState(): void { $state = $this->faker->state(); self::assertNotEmpty($state); diff --git a/test/Faker/Provider/en_CA/AddressTest.php b/test/Faker/Provider/en_CA/AddressTest.php index 1f269dc091..6deff229d5 100644 --- a/test/Faker/Provider/en_CA/AddressTest.php +++ b/test/Faker/Provider/en_CA/AddressTest.php @@ -12,7 +12,7 @@ final class AddressTest extends TestCase /** * Test the validity of province */ - public function testProvince() + public function testProvince(): void { $province = $this->faker->province(); self::assertNotEmpty($province); @@ -23,7 +23,7 @@ public function testProvince() /** * Test the validity of province abbreviation */ - public function testProvinceAbbr() + public function testProvinceAbbr(): void { $provinceAbbr = $this->faker->provinceAbbr(); self::assertNotEmpty($provinceAbbr); @@ -34,7 +34,7 @@ public function testProvinceAbbr() /** * Test the validity of postcode letter */ - public function testPostcodeLetter() + public function testPostcodeLetter(): void { $postcodeLetter = $this->faker->randomPostcodeLetter(); self::assertNotEmpty($postcodeLetter); @@ -45,7 +45,7 @@ public function testPostcodeLetter() /** * Test the validity of Canadian postcode */ - public function testPostcode() + public function testPostcode(): void { $postcode = $this->faker->postcode(); self::assertNotEmpty($postcode); diff --git a/test/Faker/Provider/en_GB/AddressTest.php b/test/Faker/Provider/en_GB/AddressTest.php index 18862ec1f0..adc49b852c 100644 --- a/test/Faker/Provider/en_GB/AddressTest.php +++ b/test/Faker/Provider/en_GB/AddressTest.php @@ -9,7 +9,7 @@ */ final class AddressTest extends TestCase { - public function testPostcode() + public function testPostcode(): void { $postcode = $this->faker->postcode(); self::assertNotEmpty($postcode); diff --git a/test/Faker/Provider/en_GB/CompanyTest.php b/test/Faker/Provider/en_GB/CompanyTest.php index 3d423a5ba8..125ba2e56e 100644 --- a/test/Faker/Provider/en_GB/CompanyTest.php +++ b/test/Faker/Provider/en_GB/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testModulus97Algorithm() + public function testModulus97Algorithm(): void { // 9755 format self::assertSame('27', $this->faker->calculateModulus97(1234567)); @@ -20,30 +20,30 @@ public function testModulus97Algorithm() self::assertSame('06', $this->faker->calculateModulus97(1271786)); } - public function testModulus97AlgorithmWithInvalidArgument() + public function testModulus97AlgorithmWithInvalidArgument(): void { $this->expectException(\InvalidArgumentException::class); $this->faker->calculateModulus97(123); } - public function testVat() + public function testVat(): void { $this->assertDefaultVatFormat($this->faker->vat()); $this->assertDefaultVatFormat($this->faker->vat(Company::VAT_TYPE_DEFAULT)); } - private function assertDefaultVatFormat($number) + private function assertDefaultVatFormat($number): void { self::assertEquals(1, preg_match('/^GB[\d]{3} [\d]{4} [\d]{2}$/', $number)); } - public function testVatBranchType() + public function testVatBranchType(): void { $number = $this->faker->vat(Company::VAT_TYPE_BRANCH); self::assertEquals(1, preg_match('/^GB[\d]{3} [\d]{4} [\d]{2} [\d]{3}$/', $number)); } - public function testVatGovernmentType() + public function testVatGovernmentType(): void { $number = $this->faker->vat(Company::VAT_TYPE_GOVERNMENT); $match = preg_match('/^GBGD([\d]{3})$/', $number, $matches); @@ -51,7 +51,7 @@ public function testVatGovernmentType() self::assertTrue($matches[1] < 499); } - public function testVatHealthAuthorityType() + public function testVatHealthAuthorityType(): void { $number = $this->faker->vat(Company::VAT_TYPE_HEALTH_AUTHORITY); $match = preg_match('/^GBHA([\d]{3})$/', $number, $matches); diff --git a/test/Faker/Provider/en_GB/PersonTest.php b/test/Faker/Provider/en_GB/PersonTest.php index 413659e4a0..8219993951 100644 --- a/test/Faker/Provider/en_GB/PersonTest.php +++ b/test/Faker/Provider/en_GB/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testNationalInsuranceNumber() + public function testNationalInsuranceNumber(): void { $result = $this->faker->nino; diff --git a/test/Faker/Provider/en_GB/PhoneNumberTest.php b/test/Faker/Provider/en_GB/PhoneNumberTest.php index 14b05b58d2..db6ee1d122 100644 --- a/test/Faker/Provider/en_GB/PhoneNumberTest.php +++ b/test/Faker/Provider/en_GB/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->e164PhoneNumber(); diff --git a/test/Faker/Provider/en_IN/AddressTest.php b/test/Faker/Provider/en_IN/AddressTest.php index 01e4cec1b2..3cba11481d 100644 --- a/test/Faker/Provider/en_IN/AddressTest.php +++ b/test/Faker/Provider/en_IN/AddressTest.php @@ -9,7 +9,7 @@ */ final class AddressTest extends TestCase { - public function testCity() + public function testCity(): void { $city = $this->faker->city(); self::assertNotEmpty($city); @@ -17,7 +17,7 @@ public function testCity() self::assertMatchesRegularExpression('/[A-Z][a-z]+/', $city); } - public function testCountry() + public function testCountry(): void { $country = $this->faker->country(); self::assertNotEmpty($country); @@ -25,7 +25,7 @@ public function testCountry() self::assertMatchesRegularExpression('/[A-Z][a-z]+/', $country); } - public function testLocalityName() + public function testLocalityName(): void { $localityName = $this->faker->localityName(); self::assertNotEmpty($localityName); @@ -33,7 +33,7 @@ public function testLocalityName() self::assertMatchesRegularExpression('/[A-Z][a-z]+/', $localityName); } - public function testAreaSuffix() + public function testAreaSuffix(): void { $areaSuffix = $this->faker->areaSuffix(); self::assertNotEmpty($areaSuffix); diff --git a/test/Faker/Provider/en_NG/AddressTest.php b/test/Faker/Provider/en_NG/AddressTest.php index 8e81b9c94f..41dd59184b 100644 --- a/test/Faker/Provider/en_NG/AddressTest.php +++ b/test/Faker/Provider/en_NG/AddressTest.php @@ -9,7 +9,7 @@ */ final class AddressTest extends TestCase { - public function testPostcodeIsNotEmptyAndIsValid() + public function testPostcodeIsNotEmptyAndIsValid(): void { $postcode = $this->faker->postcode(); @@ -20,7 +20,7 @@ public function testPostcodeIsNotEmptyAndIsValid() /** * Test the name of the Nigerian State/County */ - public function testCountyIsAValidString() + public function testCountyIsAValidString(): void { $county = $this->faker->county; @@ -31,7 +31,7 @@ public function testCountyIsAValidString() /** * Test the name of the Nigerian Region in a State. */ - public function testRegionIsAValidString() + public function testRegionIsAValidString(): void { $region = $this->faker->region; diff --git a/test/Faker/Provider/en_NG/InternetTest.php b/test/Faker/Provider/en_NG/InternetTest.php index 2b430dbb4a..3acb9b57ee 100644 --- a/test/Faker/Provider/en_NG/InternetTest.php +++ b/test/Faker/Provider/en_NG/InternetTest.php @@ -11,7 +11,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/en_NG/PersonTest.php b/test/Faker/Provider/en_NG/PersonTest.php index 562b833664..42aa5902b3 100644 --- a/test/Faker/Provider/en_NG/PersonTest.php +++ b/test/Faker/Provider/en_NG/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testPersonNameIsAValidString() + public function testPersonNameIsAValidString(): void { $name = $this->faker->name; diff --git a/test/Faker/Provider/en_NG/PhoneNumberTest.php b/test/Faker/Provider/en_NG/PhoneNumberTest.php index 2e61165ebc..9e913df28e 100644 --- a/test/Faker/Provider/en_NG/PhoneNumberTest.php +++ b/test/Faker/Provider/en_NG/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumberReturnsPhoneNumberWithOrWithoutCountryCode() + public function testPhoneNumberReturnsPhoneNumberWithOrWithoutCountryCode(): void { $phoneNumber = $this->faker->phoneNumber(); diff --git a/test/Faker/Provider/en_NZ/PhoneNumberTest.php b/test/Faker/Provider/en_NZ/PhoneNumberTest.php index 9375421601..a65c24d9f4 100644 --- a/test/Faker/Provider/en_NZ/PhoneNumberTest.php +++ b/test/Faker/Provider/en_NZ/PhoneNumberTest.php @@ -10,13 +10,13 @@ */ final class PhoneNumberTest extends TestCase { - public function testIfPhoneNumberCanReturnData() + public function testIfPhoneNumberCanReturnData(): void { $number = $this->faker->phoneNumber; self::assertNotEmpty($number); } - public function phoneNumberFormat() + public function phoneNumberFormat(): void { $number = $this->faker->phoneNumber; self::assertMatchesRegularExpression( diff --git a/test/Faker/Provider/en_PH/AddressTest.php b/test/Faker/Provider/en_PH/AddressTest.php index ce9c707bea..0e202c4a6f 100644 --- a/test/Faker/Provider/en_PH/AddressTest.php +++ b/test/Faker/Provider/en_PH/AddressTest.php @@ -10,28 +10,28 @@ */ final class AddressTest extends TestCase { - public function testProvince() + public function testProvince(): void { $province = $this->faker->province(); self::assertNotEmpty($province); self::assertIsString($province); } - public function testCity() + public function testCity(): void { $city = $this->faker->city(); self::assertNotEmpty($city); self::assertIsString($city); } - public function testMunicipality() + public function testMunicipality(): void { $municipality = $this->faker->municipality(); self::assertNotEmpty($municipality); self::assertIsString($municipality); } - public function testBarangay() + public function testBarangay(): void { $barangay = $this->faker->barangay(); self::assertIsString($barangay); diff --git a/test/Faker/Provider/en_SG/AddressTest.php b/test/Faker/Provider/en_SG/AddressTest.php index 0eb445f2b0..1a376e9faa 100644 --- a/test/Faker/Provider/en_SG/AddressTest.php +++ b/test/Faker/Provider/en_SG/AddressTest.php @@ -10,12 +10,12 @@ */ final class AddressTest extends TestCase { - public function testStreetNumber() + public function testStreetNumber(): void { self::assertMatchesRegularExpression('/^\d{2,3}$/', $this->faker->streetNumber()); } - public function testBlockNumber() + public function testBlockNumber(): void { self::assertMatchesRegularExpression('/^Blk\s*\d{2,3}[A-H]*$/i', $this->faker->blockNumber()); } diff --git a/test/Faker/Provider/en_SG/PhoneNumberTest.php b/test/Faker/Provider/en_SG/PhoneNumberTest.php index 1b4f7a5eae..26e8ad4a91 100644 --- a/test/Faker/Provider/en_SG/PhoneNumberTest.php +++ b/test/Faker/Provider/en_SG/PhoneNumberTest.php @@ -13,7 +13,7 @@ final class PhoneNumberTest extends TestCase // http://en.wikipedia.org/wiki/Telephone_numbers_in_Singapore#Numbering_plan // x means 0 to 9 // y means 0 to 8 only - public function testMobilePhoneNumberStartWith9Returns9yxxxxxx() + public function testMobilePhoneNumberStartWith9Returns9yxxxxxx(): void { $startsWith9 = false; @@ -28,7 +28,7 @@ public function testMobilePhoneNumberStartWith9Returns9yxxxxxx() // http://en.wikipedia.org/wiki/Telephone_numbers_in_Singapore#Numbering_plan // x means 0 to 9 // z means 1 to 8 only - public function testMobilePhoneNumberStartWith8Returns8zxxxxxx() + public function testMobilePhoneNumberStartWith8Returns8zxxxxxx(): void { $startsWith8 = false; @@ -44,27 +44,27 @@ protected function getProviders(): iterable yield new PhoneNumber($this->faker); } - public function testTollFreeInternationalNumber() + public function testTollFreeInternationalNumber(): void { self::assertMatchesRegularExpression('/^800\s*\d{3}\s*\d{4}$/', $this->faker->tollFreeInternationalNumber); } - public function testTollFreeLineNumber() + public function testTollFreeLineNumber(): void { self::assertMatchesRegularExpression('/^1800\s*\d{3}\s*\d{4}$/', $this->faker->tollFreeLineNumber); } - public function testPremiumPhoneNumber() + public function testPremiumPhoneNumber(): void { self::assertMatchesRegularExpression('/^1900\s*\d{3}\s*\d{4}$/', $this->faker->premiumPhoneNumber); } - public function testFixedLineNumber() + public function testFixedLineNumber(): void { self::assertMatchesRegularExpression('/^(\+65|65)?\s*6\d{3}\s*\d{4}$/', $this->faker->fixedLineNumber); } - public function testVoipNumber() + public function testVoipNumber(): void { self::assertMatchesRegularExpression('/^(\+65|65)?\s*3\d{3}\s*\d{4}$/', $this->faker->voipNumber); } diff --git a/test/Faker/Provider/en_UG/AddressTest.php b/test/Faker/Provider/en_UG/AddressTest.php index 83285982bd..0ccab4cdb3 100644 --- a/test/Faker/Provider/en_UG/AddressTest.php +++ b/test/Faker/Provider/en_UG/AddressTest.php @@ -10,21 +10,21 @@ */ final class AddressTest extends TestCase { - public function testCityName() + public function testCityName(): void { $city = $this->faker->cityName(); self::assertNotEmpty($city); self::assertIsString($city); } - public function testDistrict() + public function testDistrict(): void { $district = $this->faker->district(); self::assertNotEmpty($district); self::assertIsString($district); } - public function testRegion() + public function testRegion(): void { $region = $this->faker->region(); self::assertNotEmpty($region); diff --git a/test/Faker/Provider/en_US/CompanyTest.php b/test/Faker/Provider/en_US/CompanyTest.php index 66815c4cb1..219384056e 100644 --- a/test/Faker/Provider/en_US/CompanyTest.php +++ b/test/Faker/Provider/en_US/CompanyTest.php @@ -13,7 +13,7 @@ final class CompanyTest extends TestCase /** * @see https://stackoverflow.com/questions/4242433/regex-for-ein-number-and-ssn-number-format-in-jquery/35471665#35471665 */ - public function testEin() + public function testEin(): void { $number = $this->faker->ein; diff --git a/test/Faker/Provider/en_US/PaymentTest.php b/test/Faker/Provider/en_US/PaymentTest.php index 38641c2cd2..168f390a24 100644 --- a/test/Faker/Provider/en_US/PaymentTest.php +++ b/test/Faker/Provider/en_US/PaymentTest.php @@ -9,14 +9,14 @@ */ final class PaymentTest extends TestCase { - public function testBankAccountNumber() + public function testBankAccountNumber(): void { $accNo = $this->faker->bankAccountNumber; self::assertTrue(ctype_digit($accNo)); self::assertLessThanOrEqual(17, strlen($accNo)); } - public function testBankRoutingNumber() + public function testBankRoutingNumber(): void { $routingNo = $this->faker->bankRoutingNumber; self::assertMatchesRegularExpression('/^\d{9}$/', $routingNo); @@ -67,7 +67,7 @@ public function routingNumberProvider() /** * @dataProvider routingNumberProvider */ - public function testCalculateRoutingNumberChecksum($routingNo) + public function testCalculateRoutingNumberChecksum($routingNo): void { self::assertEquals($routingNo[8], Payment::calculateRoutingNumberChecksum($routingNo), $routingNo); } diff --git a/test/Faker/Provider/en_US/PersonTest.php b/test/Faker/Provider/en_US/PersonTest.php index c13b81bb49..ced8e54f18 100644 --- a/test/Faker/Provider/en_US/PersonTest.php +++ b/test/Faker/Provider/en_US/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testSsn() + public function testSsn(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->ssn; diff --git a/test/Faker/Provider/en_US/PhoneNumberTest.php b/test/Faker/Provider/en_US/PhoneNumberTest.php index 00fc64e5c6..6782c5712f 100644 --- a/test/Faker/Provider/en_US/PhoneNumberTest.php +++ b/test/Faker/Provider/en_US/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->phoneNumber; @@ -39,12 +39,12 @@ public function testPhoneNumber() } } - public function testTollFreeAreaCode() + public function testTollFreeAreaCode(): void { self::assertContains($this->faker->tollFreeAreaCode, [800, 822, 833, 844, 855, 866, 877, 888, 880, 887, 889]); } - public function testTollFreePhoneNumber() + public function testTollFreePhoneNumber(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->tollFreePhoneNumber; @@ -72,7 +72,7 @@ public function testTollFreePhoneNumber() } } - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->e164PhoneNumber(); diff --git a/test/Faker/Provider/en_ZA/CompanyTest.php b/test/Faker/Provider/en_ZA/CompanyTest.php index 9963bd6122..3f3056f159 100644 --- a/test/Faker/Provider/en_ZA/CompanyTest.php +++ b/test/Faker/Provider/en_ZA/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testGenerateValidCompanyNumber() + public function testGenerateValidCompanyNumber(): void { $companyRegNo = $this->faker->companyNumber(); diff --git a/test/Faker/Provider/en_ZA/InternetTest.php b/test/Faker/Provider/en_ZA/InternetTest.php index 29c14a68f4..ae53f03596 100644 --- a/test/Faker/Provider/en_ZA/InternetTest.php +++ b/test/Faker/Provider/en_ZA/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/en_ZA/PersonTest.php b/test/Faker/Provider/en_ZA/PersonTest.php index 300d4f103a..5a0cb2298a 100644 --- a/test/Faker/Provider/en_ZA/PersonTest.php +++ b/test/Faker/Provider/en_ZA/PersonTest.php @@ -11,7 +11,7 @@ */ final class PersonTest extends TestCase { - public function testIdNumberWithDefaults() + public function testIdNumberWithDefaults(): void { $idNumber = $this->faker->idNumber(); @@ -20,7 +20,7 @@ public function testIdNumberWithDefaults() self::assertIsString($idNumber); } - public function testIdNumberForMales() + public function testIdNumberForMales(): void { $idNumber = $this->faker->idNumber(new \DateTime(), true, 'male'); @@ -29,7 +29,7 @@ public function testIdNumberForMales() self::assertContains($genderDigit, ['5', '6', '7', '8', '9']); } - public function testIdNumberForFemales() + public function testIdNumberForFemales(): void { $idNumber = $this->faker->idNumber(new \DateTime(), true, 'female'); @@ -38,21 +38,21 @@ public function testIdNumberForFemales() self::assertContains($genderDigit, ['0', '1', '2', '3', '4']); } - public function testLicenceCode() + public function testLicenceCode(): void { $validLicenceCodes = ['A', 'A1', 'B', 'C', 'C1', 'C2', 'EB', 'EC', 'EC1', 'I', 'L', 'L1']; self::assertContains($this->faker->licenceCode, $validLicenceCodes); } - public function testMaleTitles() + public function testMaleTitles(): void { $validMaleTitles = ['Mr.', 'Dr.', 'Prof.', 'Rev.', 'Hon.']; self::assertContains(Person::titleMale(), $validMaleTitles); } - public function testFemaleTitles() + public function testFemaleTitles(): void { $validateFemaleTitles = ['Mrs.', 'Ms.', 'Miss', 'Dr.', 'Prof.', 'Rev.', 'Hon.']; diff --git a/test/Faker/Provider/en_ZA/PhoneNumberTest.php b/test/Faker/Provider/en_ZA/PhoneNumberTest.php index 60453fa8bf..95561ebc12 100644 --- a/test/Faker/Provider/en_ZA/PhoneNumberTest.php +++ b/test/Faker/Provider/en_ZA/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->phoneNumber; @@ -26,7 +26,7 @@ public function testPhoneNumber() } } - public function testTollFreePhoneNumber() + public function testTollFreePhoneNumber(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->tollFreeNumber; @@ -41,7 +41,7 @@ public function testTollFreePhoneNumber() } } - public function testCellPhoneNumber() + public function testCellPhoneNumber(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->mobileNumber; diff --git a/test/Faker/Provider/es_ES/PaymentTest.php b/test/Faker/Provider/es_ES/PaymentTest.php index 0ff85c4563..b22644b795 100644 --- a/test/Faker/Provider/es_ES/PaymentTest.php +++ b/test/Faker/Provider/es_ES/PaymentTest.php @@ -10,7 +10,7 @@ */ final class PaymentTest extends TestCase { - public function testVAT() + public function testVAT(): void { $vat = $this->faker->vat(); diff --git a/test/Faker/Provider/es_ES/PersonTest.php b/test/Faker/Provider/es_ES/PersonTest.php index 77efebca1e..5d7797efd5 100644 --- a/test/Faker/Provider/es_ES/PersonTest.php +++ b/test/Faker/Provider/es_ES/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testDNI() + public function testDNI(): void { self::assertTrue($this->isValidDNI($this->faker->dni)); } @@ -30,7 +30,7 @@ public function isValidDNI($string) return strtoupper($letter) === $map[((int) $number) % 23]; } - public function testLicenceCode() + public function testLicenceCode(): void { $validLicenceCodes = ['AM', 'A1', 'A2', 'A', 'B', 'B+E', 'C1', 'C1+E', 'C', 'C+E', 'D1', 'D1+E', 'D', 'D+E']; diff --git a/test/Faker/Provider/es_ES/PhoneNumberTest.php b/test/Faker/Provider/es_ES/PhoneNumberTest.php index d581981fc3..10abb0cecf 100644 --- a/test/Faker/Provider/es_ES/PhoneNumberTest.php +++ b/test/Faker/Provider/es_ES/PhoneNumberTest.php @@ -10,12 +10,12 @@ */ final class PhoneNumberTest extends TestCase { - public function testMobileNumber() + public function testMobileNumber(): void { self::assertNotEquals('', $this->faker->mobileNumber()); } - public function testTollFreeNumber() + public function testTollFreeNumber(): void { self::assertEquals(11, strlen($this->faker->tollFreeNumber())); } diff --git a/test/Faker/Provider/es_ES/TextTest.php b/test/Faker/Provider/es_ES/TextTest.php index c5a09d5053..da29c0282f 100644 --- a/test/Faker/Provider/es_ES/TextTest.php +++ b/test/Faker/Provider/es_ES/TextTest.php @@ -10,7 +10,7 @@ */ final class TextTest extends TestCase { - public function testText() + public function testText(): void { self::assertNotSame('', $this->faker->realtext(200, 2)); } diff --git a/test/Faker/Provider/es_PE/CompanyTest.php b/test/Faker/Provider/es_PE/CompanyTest.php index 0c64b80910..d2302e888d 100644 --- a/test/Faker/Provider/es_PE/CompanyTest.php +++ b/test/Faker/Provider/es_PE/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testGenerateValidRuc() + public function testGenerateValidRuc(): void { $companyRUC = $this->faker->ruc(); @@ -18,14 +18,14 @@ public function testGenerateValidRuc() self::assertMatchesRegularExpression('/^([1|2])0\d{9}$/', $companyRUC); } - public function testGenerateValidRucPersonaNatural() + public function testGenerateValidRucPersonaNatural(): void { $companyRUC = $this->faker->ruc(true); self::assertMatchesRegularExpression('/^10\d{9}$/', $companyRUC); } - public function testGenerateValidRucPersonaJuridica() + public function testGenerateValidRucPersonaJuridica(): void { $companyRUC = $this->faker->ruc(false); diff --git a/test/Faker/Provider/es_PE/PersonTest.php b/test/Faker/Provider/es_PE/PersonTest.php index 2d726593e6..504dd5ddb8 100644 --- a/test/Faker/Provider/es_PE/PersonTest.php +++ b/test/Faker/Provider/es_PE/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testDNI() + public function testDNI(): void { $dni = $this->faker->dni; self::assertMatchesRegularExpression('/\A[0-9]{8}\Z/', $dni); diff --git a/test/Faker/Provider/es_VE/CompanyTest.php b/test/Faker/Provider/es_VE/CompanyTest.php index eb08588fba..7df86f8815 100644 --- a/test/Faker/Provider/es_VE/CompanyTest.php +++ b/test/Faker/Provider/es_VE/CompanyTest.php @@ -13,7 +13,7 @@ final class CompanyTest extends TestCase /** * national Id format validator */ - public function testNationalId() + public function testNationalId(): void { $pattern = '/^[VJGECP]-?\d{8}-?\d$/'; $rif = $this->faker->taxpayerIdentificationNumber; diff --git a/test/Faker/Provider/es_VE/PersonTest.php b/test/Faker/Provider/es_VE/PersonTest.php index 7cadc4a6f4..3827b6684c 100644 --- a/test/Faker/Provider/es_VE/PersonTest.php +++ b/test/Faker/Provider/es_VE/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testNationalId() + public function testNationalId(): void { $pattern = '/(?:^V-?\d{5,9}$)|(?:^E-?\d{8,9}$)/'; diff --git a/test/Faker/Provider/fa_IR/PersonTest.php b/test/Faker/Provider/fa_IR/PersonTest.php index f3ac4da0f2..cec0e12ae9 100644 --- a/test/Faker/Provider/fa_IR/PersonTest.php +++ b/test/Faker/Provider/fa_IR/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testNationalCode() + public function testNationalCode(): void { for ($i = 0; $i < 100; ++$i) { $nationalCode = $this->faker->nationalCode; diff --git a/test/Faker/Provider/fi_FI/InternetTest.php b/test/Faker/Provider/fi_FI/InternetTest.php index b30be29ef5..1725d33b51 100644 --- a/test/Faker/Provider/fi_FI/InternetTest.php +++ b/test/Faker/Provider/fi_FI/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/fi_FI/PersonTest.php b/test/Faker/Provider/fi_FI/PersonTest.php index 88b27cea73..51fe056ab5 100644 --- a/test/Faker/Provider/fi_FI/PersonTest.php +++ b/test/Faker/Provider/fi_FI/PersonTest.php @@ -25,7 +25,7 @@ public function provideSeedAndExpectedReturn() /** * @dataProvider provideSeedAndExpectedReturn */ - public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected) + public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected): void { $faker = $this->faker; $faker->seed($seed); @@ -33,7 +33,7 @@ public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthd self::assertEquals($expected, $pin); } - public function testPersonalIdentityNumberGeneratesCompliantNumbers() + public function testPersonalIdentityNumberGeneratesCompliantNumbers(): void { if (strtotime('1800-01-01 00:00:00')) { $min = '1900'; @@ -62,13 +62,13 @@ public function testPersonalIdentityNumberGeneratesCompliantNumbers() } } - public function testPersonalIdentityNumberGeneratesOddValuesForMales() + public function testPersonalIdentityNumberGeneratesOddValuesForMales(): void { $pin = $this->faker->personalIdentityNumber(null, 'male'); self::assertEquals(1, $pin[9] % 2); } - public function testPersonalIdentityNumberGeneratesEvenValuesForFemales() + public function testPersonalIdentityNumberGeneratesEvenValuesForFemales(): void { $pin = $this->faker->personalIdentityNumber(null, 'female'); self::assertEquals(0, $pin[9] % 2); diff --git a/test/Faker/Provider/fr_BE/PaymentTest.php b/test/Faker/Provider/fr_BE/PaymentTest.php index c7beffef61..26e25353b6 100644 --- a/test/Faker/Provider/fr_BE/PaymentTest.php +++ b/test/Faker/Provider/fr_BE/PaymentTest.php @@ -10,7 +10,7 @@ */ final class PaymentTest extends TestCase { - public function testVatIsValid() + public function testVatIsValid(): void { $vat = $this->faker->vat(); $unspacedVat = $this->faker->vat(false); diff --git a/test/Faker/Provider/fr_CH/AddressTest.php b/test/Faker/Provider/fr_CH/AddressTest.php index b942b43c9a..75ad46bc0b 100644 --- a/test/Faker/Provider/fr_CH/AddressTest.php +++ b/test/Faker/Provider/fr_CH/AddressTest.php @@ -11,7 +11,7 @@ */ final class AddressTest extends TestCase { - public function testCanton() + public function testCanton(): void { $canton = $this->faker->canton(); self::assertIsArray($canton); @@ -25,21 +25,21 @@ public function testCanton() } } - public function testCantonName() + public function testCantonName(): void { $cantonName = $this->faker->cantonName(); self::assertIsString($cantonName); self::assertGreaterThan(2, strlen($cantonName)); } - public function testCantonShort() + public function testCantonShort(): void { $cantonShort = $this->faker->cantonShort(); self::assertIsString($cantonShort); self::assertEquals(2, strlen($cantonShort)); } - public function testAddress() + public function testAddress(): void { $address = $this->faker->address(); self::assertIsString($address); diff --git a/test/Faker/Provider/fr_CH/InternetTest.php b/test/Faker/Provider/fr_CH/InternetTest.php index 33e1aa07b7..2e4e35a675 100644 --- a/test/Faker/Provider/fr_CH/InternetTest.php +++ b/test/Faker/Provider/fr_CH/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/fr_CH/PersonTest.php b/test/Faker/Provider/fr_CH/PersonTest.php index 4b59bbb735..6352331019 100644 --- a/test/Faker/Provider/fr_CH/PersonTest.php +++ b/test/Faker/Provider/fr_CH/PersonTest.php @@ -11,7 +11,7 @@ */ final class PersonTest extends TestCase { - public function testAvs13Number() + public function testAvs13Number(): void { $avs = $this->faker->avs13; self::assertMatchesRegularExpression('/^756\.([0-9]{4})\.([0-9]{4})\.([0-9]{2})$/', $avs); diff --git a/test/Faker/Provider/fr_CH/PhoneNumberTest.php b/test/Faker/Provider/fr_CH/PhoneNumberTest.php index 22d5d767e3..e095befb7b 100644 --- a/test/Faker/Provider/fr_CH/PhoneNumberTest.php +++ b/test/Faker/Provider/fr_CH/PhoneNumberTest.php @@ -10,12 +10,12 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { self::assertMatchesRegularExpression('/^0\d{2} ?\d{3} ?\d{2} ?\d{2}|\+41 ?(\(0\))?\d{2} ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->phoneNumber()); } - public function testMobileNumber() + public function testMobileNumber(): void { self::assertMatchesRegularExpression('/^07[56789] ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->mobileNumber()); } diff --git a/test/Faker/Provider/fr_FR/AddressTest.php b/test/Faker/Provider/fr_FR/AddressTest.php index 04c05fec62..1f48f54d5f 100644 --- a/test/Faker/Provider/fr_FR/AddressTest.php +++ b/test/Faker/Provider/fr_FR/AddressTest.php @@ -10,13 +10,13 @@ */ final class AddressTest extends TestCase { - public function testSecondaryAddress() + public function testSecondaryAddress(): void { self::assertEquals('Étage 007', $this->faker->secondaryAddress()); self::assertEquals('Bât. 932', $this->faker->secondaryAddress()); } - public function testRegion() + public function testRegion(): void { self::assertEquals('Occitanie', $this->faker->region()); self::assertEquals('Auvergne-Rhône-Alpes', $this->faker->region()); diff --git a/test/Faker/Provider/fr_FR/ColorTest.php b/test/Faker/Provider/fr_FR/ColorTest.php index ea3d9ea48b..e9b1d34c93 100644 --- a/test/Faker/Provider/fr_FR/ColorTest.php +++ b/test/Faker/Provider/fr_FR/ColorTest.php @@ -10,13 +10,13 @@ */ final class ColorTest extends TestCase { - public function testColorName() + public function testColorName(): void { self::assertEquals('Mandarine', $this->faker->colorName()); self::assertEquals('Acajou', $this->faker->colorName()); } - public function testSafeColorName() + public function testSafeColorName(): void { self::assertEquals('bleu', $this->faker->safeColorName()); self::assertEquals('noir', $this->faker->safeColorName()); diff --git a/test/Faker/Provider/fr_FR/CompanyTest.php b/test/Faker/Provider/fr_FR/CompanyTest.php index 2c2cac270f..2e78e5ca0b 100644 --- a/test/Faker/Provider/fr_FR/CompanyTest.php +++ b/test/Faker/Provider/fr_FR/CompanyTest.php @@ -11,14 +11,14 @@ */ final class CompanyTest extends TestCase { - public function testSiretReturnsAValidSiret() + public function testSiretReturnsAValidSiret(): void { $siret = $this->faker->siret(false); self::assertMatchesRegularExpression("/^\d{14}$/", $siret); self::assertTrue(Luhn::isValid($siret)); } - public function testSiretReturnsAWellFormattedSiret() + public function testSiretReturnsAWellFormattedSiret(): void { $siret = $this->faker->siret(); self::assertMatchesRegularExpression("/^\d{3}\s\d{3}\s\d{3}\s\d{5}$/", $siret); @@ -26,14 +26,14 @@ public function testSiretReturnsAWellFormattedSiret() self::assertTrue(Luhn::isValid($siret)); } - public function testSirenReturnsAValidSiren() + public function testSirenReturnsAValidSiren(): void { $siren = $this->faker->siren(false); self::assertMatchesRegularExpression("/^\d{9}$/", $siren); self::assertTrue(Luhn::isValid($siren)); } - public function testSirenReturnsAWellFormattedSiren() + public function testSirenReturnsAWellFormattedSiren(): void { $siren = $this->faker->siren(); self::assertMatchesRegularExpression("/^\d{3}\s\d{3}\s\d{3}$/", $siren); @@ -41,18 +41,18 @@ public function testSirenReturnsAWellFormattedSiren() self::assertTrue(Luhn::isValid($siren)); } - public function testCatchPhraseReturnsValidCatchPhrase() + public function testCatchPhraseReturnsValidCatchPhrase(): void { self::assertTrue(TestableCompany::isCatchPhraseValid($this->faker->catchPhrase())); } - public function testIsCatchPhraseValidReturnsFalseWhenAWordsAppearsTwice() + public function testIsCatchPhraseValidReturnsFalseWhenAWordsAppearsTwice(): void { $isCatchPhraseValid = TestableCompany::isCatchPhraseValid('La sécurité de rouler en toute sécurité'); self::assertFalse($isCatchPhraseValid); } - public function testIsCatchPhraseValidReturnsTrueWhenNoWordAppearsTwice() + public function testIsCatchPhraseValidReturnsTrueWhenNoWordAppearsTwice(): void { $isCatchPhraseValid = TestableCompany::isCatchPhraseValid('La sécurité de rouler en toute simplicité'); self::assertTrue($isCatchPhraseValid); diff --git a/test/Faker/Provider/fr_FR/PaymentTest.php b/test/Faker/Provider/fr_FR/PaymentTest.php index 8ecdf8fffe..f9f1743933 100644 --- a/test/Faker/Provider/fr_FR/PaymentTest.php +++ b/test/Faker/Provider/fr_FR/PaymentTest.php @@ -11,7 +11,7 @@ */ final class PaymentTest extends TestCase { - public function testFormattedVat() + public function testFormattedVat(): void { $vat = $this->faker->vat(true); self::assertMatchesRegularExpression("/^FR\s\w{2}\s\d{3}\s\d{3}\s\d{3}$/", $vat); @@ -27,7 +27,7 @@ public function testFormattedVat() } } - public function testUnformattedVat() + public function testUnformattedVat(): void { $vat = $this->faker->vat(false); self::assertMatchesRegularExpression("/^FR\w{2}\d{9}$/", $vat); diff --git a/test/Faker/Provider/fr_FR/PersonTest.php b/test/Faker/Provider/fr_FR/PersonTest.php index 680daaa45e..49f82e2ef6 100644 --- a/test/Faker/Provider/fr_FR/PersonTest.php +++ b/test/Faker/Provider/fr_FR/PersonTest.php @@ -10,19 +10,19 @@ */ final class PersonTest extends TestCase { - public function testNIRReturnsTheRightGender() + public function testNIRReturnsTheRightGender(): void { $nir = $this->faker->nir(\Faker\Provider\Person::GENDER_MALE); self::assertStringStartsWith('1', $nir); } - public function testNIRReturnsTheRightPattern() + public function testNIRReturnsTheRightPattern(): void { $nir = $this->faker->nir; self::assertMatchesRegularExpression("/^[12]\d{5}[0-9A-B]\d{8}$/", $nir); } - public function testNIRFormattedReturnsTheRightPattern() + public function testNIRFormattedReturnsTheRightPattern(): void { $nir = $this->faker->nir(null, true); self::assertMatchesRegularExpression("/^[12]\s\d{2}\s\d{2}\s\d{1}[0-9A-B]\s\d{3}\s\d{3}\s\d{2}$/", $nir); diff --git a/test/Faker/Provider/fr_FR/PhoneNumberTest.php b/test/Faker/Provider/fr_FR/PhoneNumberTest.php index 440cfc0918..20db5bb351 100644 --- a/test/Faker/Provider/fr_FR/PhoneNumberTest.php +++ b/test/Faker/Provider/fr_FR/PhoneNumberTest.php @@ -10,43 +10,43 @@ */ final class PhoneNumberTest extends TestCase { - public function testMobileNumber() + public function testMobileNumber(): void { $mobileNumber = $this->faker->mobileNumber(); self::assertMatchesRegularExpression('/^(\+33 |\+33 \(0\)|0)(6|7)(?:(\s{1})?\d{2}){4}$/', $mobileNumber); } - public function testMobileNumber07Format() + public function testMobileNumber07Format(): void { $mobileNumberFormat = $this->faker->phoneNumber07(); self::assertMatchesRegularExpression('/^([3-9]{1})\d(\d{2}){3}$/', $mobileNumberFormat); } - public function testMobileNumber07WithSeparatorFormat() + public function testMobileNumber07WithSeparatorFormat(): void { $mobileNumberFormat = $this->faker->phoneNumber07WithSeparator(); self::assertMatchesRegularExpression('/^([3-9]{1})\d( \d{2}){3}$/', $mobileNumberFormat); } - public function testServiceNumber() + public function testServiceNumber(): void { $serviceNumber = $this->faker->serviceNumber(); self::assertMatchesRegularExpression('/^(\+33 |\+33 \(0\)|0)8(?:(\s{1})?\d{2}){4}$/', $serviceNumber); } - public function testServiceNumberFormat() + public function testServiceNumberFormat(): void { $serviceNumberFormat = $this->faker->phoneNumber08(); self::assertMatchesRegularExpression('/^((0|1|2)\d{1}|9[^46])\d{6}$/', $serviceNumberFormat); } - public function testServiceNumberWithSeparatorFormat() + public function testServiceNumberWithSeparatorFormat(): void { $serviceNumberFormat = $this->faker->phoneNumber08WithSeparator(); self::assertMatchesRegularExpression('/^((0|1|2)\d{1}|9[^46])( \d{2}){3}$/', $serviceNumberFormat); } - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->e164PhoneNumber(); diff --git a/test/Faker/Provider/fr_FR/TextTest.php b/test/Faker/Provider/fr_FR/TextTest.php index c43164114c..45b9c2a0ae 100644 --- a/test/Faker/Provider/fr_FR/TextTest.php +++ b/test/Faker/Provider/fr_FR/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Que faisaient-elles maintenant? À.', diff --git a/test/Faker/Provider/hu_HU/PersonTest.php b/test/Faker/Provider/hu_HU/PersonTest.php index db28110b1b..8618cafdff 100644 --- a/test/Faker/Provider/hu_HU/PersonTest.php +++ b/test/Faker/Provider/hu_HU/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testValidMariedFemaleLastnames() + public function testValidMariedFemaleLastnames(): void { self::assertEquals('Báró Vassné Zsóka', $this->faker->name('female')); self::assertEquals('Prof. Szőke Bendegúz', $this->faker->name('female')); diff --git a/test/Faker/Provider/id_ID/PersonTest.php b/test/Faker/Provider/id_ID/PersonTest.php index 8519256bc5..164c1ad29a 100644 --- a/test/Faker/Provider/id_ID/PersonTest.php +++ b/test/Faker/Provider/id_ID/PersonTest.php @@ -49,31 +49,31 @@ final class PersonTest extends TestCase '9171', '9201', '9202', '9203', '9204', '9205', '9206', '9207', '9208', '9209', '9210', '9211', '9212', '9271', ]; - public function testIfFirstNameMaleCanReturnData() + public function testIfFirstNameMaleCanReturnData(): void { $firstNameMale = $this->faker->firstNameMale(); self::assertNotEmpty($firstNameMale); } - public function testIfLastNameMaleCanReturnData() + public function testIfLastNameMaleCanReturnData(): void { $lastNameMale = $this->faker->lastNameMale(); self::assertNotEmpty($lastNameMale); } - public function testIfFirstNameFemaleCanReturnData() + public function testIfFirstNameFemaleCanReturnData(): void { $firstNameFemale = $this->faker->firstNameFemale(); self::assertNotEmpty($firstNameFemale); } - public function testIfLastNameFemaleCanReturnData() + public function testIfLastNameFemaleCanReturnData(): void { $lastNameFemale = $this->faker->lastNameFemale(); self::assertNotEmpty($lastNameFemale); } - public function testNikContainsBirthPlace() + public function testNikContainsBirthPlace(): void { $nik = $this->faker->nik(); diff --git a/test/Faker/Provider/it_CH/AddressTest.php b/test/Faker/Provider/it_CH/AddressTest.php index 8e95fcb023..51d534878a 100644 --- a/test/Faker/Provider/it_CH/AddressTest.php +++ b/test/Faker/Provider/it_CH/AddressTest.php @@ -11,7 +11,7 @@ */ final class AddressTest extends TestCase { - public function testCanton() + public function testCanton(): void { $canton = $this->faker->canton(); self::assertIsArray($canton); @@ -25,21 +25,21 @@ public function testCanton() } } - public function testCantonName() + public function testCantonName(): void { $cantonName = $this->faker->cantonName(); self::assertIsString($cantonName); self::assertGreaterThan(2, strlen($cantonName)); } - public function testCantonShort() + public function testCantonShort(): void { $cantonShort = $this->faker->cantonShort(); self::assertIsString($cantonShort); self::assertEquals(2, strlen($cantonShort)); } - public function testAddress() + public function testAddress(): void { $address = $this->faker->address(); self::assertIsString($address); diff --git a/test/Faker/Provider/it_CH/InternetTest.php b/test/Faker/Provider/it_CH/InternetTest.php index 53ff2c4371..8756315c6f 100644 --- a/test/Faker/Provider/it_CH/InternetTest.php +++ b/test/Faker/Provider/it_CH/InternetTest.php @@ -12,7 +12,7 @@ */ final class InternetTest extends TestCase { - public function testEmailIsValid() + public function testEmailIsValid(): void { $email = $this->faker->email(); self::assertNotFalse(filter_var($email, FILTER_VALIDATE_EMAIL)); diff --git a/test/Faker/Provider/it_CH/PersonTest.php b/test/Faker/Provider/it_CH/PersonTest.php index d4c4e71390..3a309e09b9 100644 --- a/test/Faker/Provider/it_CH/PersonTest.php +++ b/test/Faker/Provider/it_CH/PersonTest.php @@ -11,7 +11,7 @@ */ final class PersonTest extends TestCase { - public function testAvs13Number() + public function testAvs13Number(): void { $avs = $this->faker->avs13; self::assertMatchesRegularExpression('/^756\.([0-9]{4})\.([0-9]{4})\.([0-9]{2})$/', $avs); diff --git a/test/Faker/Provider/it_CH/PhoneNumberTest.php b/test/Faker/Provider/it_CH/PhoneNumberTest.php index 3de6b7e8e2..bed8e17833 100644 --- a/test/Faker/Provider/it_CH/PhoneNumberTest.php +++ b/test/Faker/Provider/it_CH/PhoneNumberTest.php @@ -10,12 +10,12 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { self::assertMatchesRegularExpression('/^0\d{2} ?\d{3} ?\d{2} ?\d{2}|\+41 ?(\(0\))?\d{2} ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->phoneNumber()); } - public function testMobileNumber() + public function testMobileNumber(): void { self::assertMatchesRegularExpression('/^07[56789] ?\d{3} ?\d{2} ?\d{2}$/', $this->faker->mobileNumber()); } diff --git a/test/Faker/Provider/it_IT/CompanyTest.php b/test/Faker/Provider/it_IT/CompanyTest.php index 3a69164ec1..2eba849892 100644 --- a/test/Faker/Provider/it_IT/CompanyTest.php +++ b/test/Faker/Provider/it_IT/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testIfTaxIdCanReturnData() + public function testIfTaxIdCanReturnData(): void { $vat = $this->faker->vat(); self::assertMatchesRegularExpression('/^IT[0-9]{11}$/', $vat); diff --git a/test/Faker/Provider/it_IT/PersonTest.php b/test/Faker/Provider/it_IT/PersonTest.php index 8fdc4a9115..75705b1712 100644 --- a/test/Faker/Provider/it_IT/PersonTest.php +++ b/test/Faker/Provider/it_IT/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testIfTaxIdCanReturnData() + public function testIfTaxIdCanReturnData(): void { $taxId = $this->faker->taxId(); self::assertMatchesRegularExpression('/^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/', $taxId); diff --git a/test/Faker/Provider/ja_JP/InternetTest.php b/test/Faker/Provider/ja_JP/InternetTest.php index d2a448976a..8837fe910a 100644 --- a/test/Faker/Provider/ja_JP/InternetTest.php +++ b/test/Faker/Provider/ja_JP/InternetTest.php @@ -10,12 +10,12 @@ */ final class InternetTest extends TestCase { - public function testUserName() + public function testUserName(): void { self::assertEquals('akira72', $this->faker->userName); } - public function testDomainName() + public function testDomainName(): void { self::assertEquals('nakajima.com', $this->faker->domainName); } diff --git a/test/Faker/Provider/ja_JP/PersonTest.php b/test/Faker/Provider/ja_JP/PersonTest.php index cd2913b267..d16e9f4b3d 100644 --- a/test/Faker/Provider/ja_JP/PersonTest.php +++ b/test/Faker/Provider/ja_JP/PersonTest.php @@ -10,27 +10,27 @@ */ final class PersonTest extends TestCase { - public function testKanaNameMaleReturns() + public function testKanaNameMaleReturns(): void { self::assertEquals('アオタ ミノル', $this->faker->kanaName('male')); } - public function testKanaNameFemaleReturns() + public function testKanaNameFemaleReturns(): void { self::assertEquals('アオタ ミキ', $this->faker->kanaName('female')); } - public function testFirstKanaNameMaleReturns() + public function testFirstKanaNameMaleReturns(): void { self::assertEquals('ヒデキ', $this->faker->firstKanaName('male')); } - public function testFirstKanaNameFemaleReturns() + public function testFirstKanaNameFemaleReturns(): void { self::assertEquals('マアヤ', $this->faker->firstKanaName('female')); } - public function testLastKanaNameReturnsNakajima() + public function testLastKanaNameReturnsNakajima(): void { self::assertEquals('ナカジマ', $this->faker->lastKanaName); } diff --git a/test/Faker/Provider/ja_JP/PhoneNumberTest.php b/test/Faker/Provider/ja_JP/PhoneNumberTest.php index 9993e9692f..6502f5a7af 100644 --- a/test/Faker/Provider/ja_JP/PhoneNumberTest.php +++ b/test/Faker/Provider/ja_JP/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { for ($i = 0; $i < 10; ++$i) { $phoneNumber = $this->faker->phoneNumber; diff --git a/test/Faker/Provider/ka_GE/TextTest.php b/test/Faker/Provider/ka_GE/TextTest.php index 9a8da29c3a..6da481f69f 100644 --- a/test/Faker/Provider/ka_GE/TextTest.php +++ b/test/Faker/Provider/ka_GE/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'ჭეშმარიტია. ჩვენც ისე.', diff --git a/test/Faker/Provider/kk_KZ/CompanyTest.php b/test/Faker/Provider/kk_KZ/CompanyTest.php index d84f4984ae..ed06d8d88a 100644 --- a/test/Faker/Provider/kk_KZ/CompanyTest.php +++ b/test/Faker/Provider/kk_KZ/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testBusinessIdentificationNumberIsValid() + public function testBusinessIdentificationNumberIsValid(): void { $registrationDate = new \DateTime('now'); $businessIdentificationNumber = $this->faker->businessIdentificationNumber($registrationDate); diff --git a/test/Faker/Provider/kk_KZ/PersonTest.php b/test/Faker/Provider/kk_KZ/PersonTest.php index dadde4ec33..7d8e0348ac 100644 --- a/test/Faker/Provider/kk_KZ/PersonTest.php +++ b/test/Faker/Provider/kk_KZ/PersonTest.php @@ -16,7 +16,7 @@ final class PersonTest extends TestCase * 2000-01-01 - 2000-12-31 counts as 21th century * 1900-01-01 - 1900-12-31 counts as 20th century */ - public function testIndividualIdentificationNumberIsValid() + public function testIndividualIdentificationNumberIsValid(): void { // 21st century. $birthDate = DateTime::dateTimeBetween('2000-01-01', '2099-12-31'); diff --git a/test/Faker/Provider/kk_KZ/TextTest.php b/test/Faker/Provider/kk_KZ/TextTest.php index 4257bc6faa..7c636ee10c 100644 --- a/test/Faker/Provider/kk_KZ/TextTest.php +++ b/test/Faker/Provider/kk_KZ/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Арыстан баб кесенесі - көне Отырар.', diff --git a/test/Faker/Provider/ko_KR/TextTest.php b/test/Faker/Provider/ko_KR/TextTest.php index b03542e4e2..0130eb373a 100644 --- a/test/Faker/Provider/ko_KR/TextTest.php +++ b/test/Faker/Provider/ko_KR/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( '최석(崔晳)으로부터 최후의 편지가.', diff --git a/test/Faker/Provider/lt_LT/AddressTest.php b/test/Faker/Provider/lt_LT/AddressTest.php index ae099195dd..bbaeffc09f 100644 --- a/test/Faker/Provider/lt_LT/AddressTest.php +++ b/test/Faker/Provider/lt_LT/AddressTest.php @@ -10,7 +10,7 @@ */ final class AddressTest extends TestCase { - public function testMunicipality() + public function testMunicipality(): void { self::assertStringEndsWith('savivaldybė', $this->faker->municipality()); } diff --git a/test/Faker/Provider/mn_MN/PersonTest.php b/test/Faker/Provider/mn_MN/PersonTest.php index c187b9fb5c..2c69686bd5 100644 --- a/test/Faker/Provider/mn_MN/PersonTest.php +++ b/test/Faker/Provider/mn_MN/PersonTest.php @@ -10,12 +10,12 @@ */ final class PersonTest extends TestCase { - public function testName() + public function testName(): void { self::assertMatchesRegularExpression('/^[А-Я]{1}\.[\w\W]+$/u', $this->faker->name); } - public function testIdNumber() + public function testIdNumber(): void { self::assertMatchesRegularExpression('/^[А-Я]{2}\d{8}$/u', $this->faker->idNumber); } diff --git a/test/Faker/Provider/ms_MY/PersonTest.php b/test/Faker/Provider/ms_MY/PersonTest.php index 0322dbd9b0..eee1408f25 100644 --- a/test/Faker/Provider/ms_MY/PersonTest.php +++ b/test/Faker/Provider/ms_MY/PersonTest.php @@ -13,7 +13,7 @@ final class PersonTest extends TestCase /** * @see https://en.wikipedia.org/wiki/Malaysian_identity_card#Structure_of_the_National_Registration_Identity_Card_Number_(NRIC) */ - public function testPersonalIdentityCardNumber() + public function testPersonalIdentityCardNumber(): void { $myKadNumber = $this->faker->myKadNumber; diff --git a/test/Faker/Provider/nb_NO/PhoneNumberTest.php b/test/Faker/Provider/nb_NO/PhoneNumberTest.php index 6930395434..faacafbc6d 100644 --- a/test/Faker/Provider/nb_NO/PhoneNumberTest.php +++ b/test/Faker/Provider/nb_NO/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testMobileNumber() + public function testMobileNumber(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->mobileNumber; diff --git a/test/Faker/Provider/nl_BE/PaymentTest.php b/test/Faker/Provider/nl_BE/PaymentTest.php index 61f6e2bfcb..d3883b8840 100644 --- a/test/Faker/Provider/nl_BE/PaymentTest.php +++ b/test/Faker/Provider/nl_BE/PaymentTest.php @@ -10,7 +10,7 @@ */ final class PaymentTest extends TestCase { - public function testVatIsValid() + public function testVatIsValid(): void { $vat = $this->faker->vat(); $unspacedVat = $this->faker->vat(false); @@ -21,7 +21,7 @@ public function testVatIsValid() $this->validateChecksum($unspacedVat); } - private function validateChecksum($vat) + private function validateChecksum($vat): void { // Remove the "BE " part from the beginning $numbers = trim(substr($vat, 2)); diff --git a/test/Faker/Provider/nl_BE/PersonTest.php b/test/Faker/Provider/nl_BE/PersonTest.php index ab0e124e07..311887ca18 100644 --- a/test/Faker/Provider/nl_BE/PersonTest.php +++ b/test/Faker/Provider/nl_BE/PersonTest.php @@ -13,7 +13,7 @@ */ final class PersonTest extends TestCase { - public function testRrnIsValid() + public function testRrnIsValid(): void { $rrn = $this->faker->rrn(); @@ -29,13 +29,13 @@ public function testRrnIsValid() self::assertLessThan(997, $middle); } - public function testRrnIsMale() + public function testRrnIsMale(): void { $rrn = $this->faker->rrn('male'); self::assertEquals(substr($rrn, 6, 3) % 2, 1); } - public function testRrnIsFemale() + public function testRrnIsFemale(): void { $rrn = $this->faker->rrn('female'); self::assertEquals(substr($rrn, 6, 3) % 2, 0); diff --git a/test/Faker/Provider/nl_NL/CompanyTest.php b/test/Faker/Provider/nl_NL/CompanyTest.php index cc0c2ca979..6aa4d3d79d 100644 --- a/test/Faker/Provider/nl_NL/CompanyTest.php +++ b/test/Faker/Provider/nl_NL/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testGenerateValidVatNumber() + public function testGenerateValidVatNumber(): void { $vatNo = $this->faker->vat(); @@ -18,7 +18,7 @@ public function testGenerateValidVatNumber() self::assertMatchesRegularExpression('/^NL[0-9]{9}B[0-9]{2}$/', $vatNo); } - public function testGenerateValidBtwNumberAlias() + public function testGenerateValidBtwNumberAlias(): void { $btwNo = $this->faker->btw(); diff --git a/test/Faker/Provider/nl_NL/PersonTest.php b/test/Faker/Provider/nl_NL/PersonTest.php index 06ebe7bad9..e8938b08f0 100644 --- a/test/Faker/Provider/nl_NL/PersonTest.php +++ b/test/Faker/Provider/nl_NL/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testGenerateValidIdNumber() + public function testGenerateValidIdNumber(): void { $idNumber = $this->faker->idNumber(); self::assertEquals(9, strlen($idNumber)); diff --git a/test/Faker/Provider/pl_PL/AddressTest.php b/test/Faker/Provider/pl_PL/AddressTest.php index 10f3d0f20d..e69cbb9160 100644 --- a/test/Faker/Provider/pl_PL/AddressTest.php +++ b/test/Faker/Provider/pl_PL/AddressTest.php @@ -10,7 +10,7 @@ */ final class AddressTest extends TestCase { - public function testState() + public function testState(): void { $state = $this->faker->state(); self::assertNotEmpty($state); diff --git a/test/Faker/Provider/pl_PL/LicensePlateTest.php b/test/Faker/Provider/pl_PL/LicensePlateTest.php index 436396abe2..d0b5bf9464 100644 --- a/test/Faker/Provider/pl_PL/LicensePlateTest.php +++ b/test/Faker/Provider/pl_PL/LicensePlateTest.php @@ -12,7 +12,7 @@ final class LicensePlateTest extends TestCase /** * Test the validity of license plate */ - public function testNonSpecialLicensePlates() + public function testNonSpecialLicensePlates(): void { for ($i = 0; $i < 40; ++$i) { $licensePlate = $this->faker->licensePlate; @@ -25,7 +25,7 @@ public function testNonSpecialLicensePlates() /** * Test that special license plates are filtered out */ - public function testExplicitlyNonSpecialLicensePlates() + public function testExplicitlyNonSpecialLicensePlates(): void { for ($i = 0; $i < 40; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -40,7 +40,7 @@ public function testExplicitlyNonSpecialLicensePlates() /** * Test that special license plates are filtered out */ - public function testWithSpecialLicensePlates() + public function testWithSpecialLicensePlates(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -55,7 +55,7 @@ public function testWithSpecialLicensePlates() /** * Test that license plate belongs to podkapracikie voivodeship */ - public function testPodkarpackieLicensePlate() + public function testPodkarpackieLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -71,7 +71,7 @@ public function testPodkarpackieLicensePlate() /** * Test that license plate belongs to łodzkie voivodeship or to army */ - public function testLodzkieOrArmyLicensePlate() + public function testLodzkieOrArmyLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -87,7 +87,7 @@ public function testLodzkieOrArmyLicensePlate() /** * Test that license plate belongs to łodzkie voivodeship but filters out army */ - public function testLodzkieButNotArmyLicensePlate() + public function testLodzkieButNotArmyLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -103,7 +103,7 @@ public function testLodzkieButNotArmyLicensePlate() /** * Test that license plate belongs is generated when invorrect voivodeship is given */ - public function testNoCorrectVoivodeshipLicensePlate() + public function testNoCorrectVoivodeshipLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -119,7 +119,7 @@ public function testNoCorrectVoivodeshipLicensePlate() /** * Test that correct license plate is generated when no voivodeship is given */ - public function testNoVoivodeshipLicensePlate() + public function testNoVoivodeshipLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -135,7 +135,7 @@ public function testNoVoivodeshipLicensePlate() /** * Test that correct license plate is generated when no voivodeship or county is given */ - public function testNoVoivodeshipNoCountyLicensePlate() + public function testNoVoivodeshipNoCountyLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -152,7 +152,7 @@ public function testNoVoivodeshipNoCountyLicensePlate() /** * Test that license plate belongs to one of warszawski zachodni or radomski counties or to Border Guard */ - public function testVoivodeshipCountyLicensePlate() + public function testVoivodeshipCountyLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -169,7 +169,7 @@ public function testVoivodeshipCountyLicensePlate() /** * Test that correct license plate belonging to the correct voivedeship is generated when non-existing county is given */ - public function testVoivodeshipFakeCountyLicensePlate() + public function testVoivodeshipFakeCountyLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -186,7 +186,7 @@ public function testVoivodeshipFakeCountyLicensePlate() /** * Test that correct license plate is generated when non-existing voivodeship is given */ - public function testVoivodeshipFakeVoivodeshipLicensePlate() + public function testVoivodeshipFakeVoivodeshipLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -203,7 +203,7 @@ public function testVoivodeshipFakeVoivodeshipLicensePlate() /** * Test that correct license plate is generated when null is given instead of voivodeships list */ - public function testVoivodeshipNullVoivodeshipArrayLicensePlate() + public function testVoivodeshipNullVoivodeshipArrayLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -220,7 +220,7 @@ public function testVoivodeshipNullVoivodeshipArrayLicensePlate() /** * Test that correct license plate is generated when null is given in voivodeships array */ - public function testVoivodeshipNullVoivodeshipLicensePlate() + public function testVoivodeshipNullVoivodeshipLicensePlate(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -237,7 +237,7 @@ public function testVoivodeshipNullVoivodeshipLicensePlate() /** * Test that special license plate is not generated when 1st argument is false */ - public function testVoivodeship1stArgumentFalse() + public function testVoivodeship1stArgumentFalse(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( @@ -254,7 +254,7 @@ public function testVoivodeship1stArgumentFalse() /** * Test that special license plate is generated when 1st argument is true */ - public function testVoivodeship1stArgumentTrue() + public function testVoivodeship1stArgumentTrue(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( diff --git a/test/Faker/Provider/pl_PL/PersonTest.php b/test/Faker/Provider/pl_PL/PersonTest.php index a56f7c663a..f5319c4145 100644 --- a/test/Faker/Provider/pl_PL/PersonTest.php +++ b/test/Faker/Provider/pl_PL/PersonTest.php @@ -10,14 +10,14 @@ */ final class PersonTest extends TestCase { - public function testPeselLenght() + public function testPeselLenght(): void { $pesel = $this->faker->pesel(); self::assertEquals(11, strlen($pesel)); } - public function testPeselDate() + public function testPeselDate(): void { $date = new \DateTime('1990-01-01'); $pesel = $this->faker->pesel($date); @@ -27,7 +27,7 @@ public function testPeselDate() self::assertEquals('01', substr($pesel, 4, 2)); } - public function testPeselDateWithYearAfter2000() + public function testPeselDateWithYearAfter2000(): void { $date = new \DateTime('2001-01-01'); $pesel = $this->faker->pesel($date); @@ -37,7 +37,7 @@ public function testPeselDateWithYearAfter2000() self::assertEquals('01', substr($pesel, 4, 2)); } - public function testPeselDateWithYearAfter2100() + public function testPeselDateWithYearAfter2100(): void { $date = new \DateTime('2101-01-01'); $pesel = $this->faker->pesel($date); @@ -47,7 +47,7 @@ public function testPeselDateWithYearAfter2100() self::assertEquals('01', substr($pesel, 4, 2)); } - public function testPeselDateWithYearAfter2200() + public function testPeselDateWithYearAfter2200(): void { $date = new \DateTime('2201-01-01'); $pesel = $this->faker->pesel($date); @@ -57,7 +57,7 @@ public function testPeselDateWithYearAfter2200() self::assertEquals('01', substr($pesel, 4, 2)); } - public function testPeselDateWithYearBefore1900() + public function testPeselDateWithYearBefore1900(): void { $date = new \DateTime('1801-01-01'); $pesel = $this->faker->pesel($date); @@ -67,7 +67,7 @@ public function testPeselDateWithYearBefore1900() self::assertEquals('01', substr($pesel, 4, 2)); } - public function testPeselSex() + public function testPeselSex(): void { $male = $this->faker->pesel(null, 'M'); $female = $this->faker->pesel(null, 'F'); @@ -76,7 +76,7 @@ public function testPeselSex() self::assertEquals(0, $female[9] % 2); } - public function testPeselCheckSum() + public function testPeselCheckSum(): void { $pesel = $this->faker->pesel(); $weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3, 1]; @@ -89,7 +89,7 @@ public function testPeselCheckSum() self::assertEquals(0, $sum % 10); } - public function testTitle() + public function testTitle(): void { self::assertContains($this->faker->titleFemale(), ['mgr', 'inż.', 'dr', 'doc.']); self::assertContains($this->faker->titleMale(), ['mgr', 'inż.', 'dr', 'doc.']); diff --git a/test/Faker/Provider/pt_BR/CompanyTest.php b/test/Faker/Provider/pt_BR/CompanyTest.php index 9d8e04d892..3b8a38bad7 100644 --- a/test/Faker/Provider/pt_BR/CompanyTest.php +++ b/test/Faker/Provider/pt_BR/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testCnpjFormatIsValid() + public function testCnpjFormatIsValid(): void { $cnpj = $this->faker->cnpj(false); self::assertMatchesRegularExpression('/\d{8}\d{4}\d{2}/', $cnpj); diff --git a/test/Faker/Provider/pt_BR/PersonTest.php b/test/Faker/Provider/pt_BR/PersonTest.php index 2c373d2238..2bce811f36 100644 --- a/test/Faker/Provider/pt_BR/PersonTest.php +++ b/test/Faker/Provider/pt_BR/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testCpfFormatIsValid() + public function testCpfFormatIsValid(): void { $cpf = $this->faker->cpf(false); self::assertMatchesRegularExpression('/\d{9}\d{2}/', $cpf); @@ -18,7 +18,7 @@ public function testCpfFormatIsValid() self::assertMatchesRegularExpression('/\d{3}\.\d{3}\.\d{3}-\d{2}/', $cpf); } - public function testRgFormatIsValid() + public function testRgFormatIsValid(): void { $rg = $this->faker->rg(false); self::assertMatchesRegularExpression('/\d{8}\d/', $rg); diff --git a/test/Faker/Provider/pt_BR/TextTest.php b/test/Faker/Provider/pt_BR/TextTest.php index f0b8f60796..1f15f91cfb 100644 --- a/test/Faker/Provider/pt_BR/TextTest.php +++ b/test/Faker/Provider/pt_BR/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Uma noite destas.', diff --git a/test/Faker/Provider/pt_PT/AddressTest.php b/test/Faker/Provider/pt_PT/AddressTest.php index 6ea91f6bfa..8a3759e187 100644 --- a/test/Faker/Provider/pt_PT/AddressTest.php +++ b/test/Faker/Provider/pt_PT/AddressTest.php @@ -11,7 +11,7 @@ */ final class AddressTest extends TestCase { - public function testPostCodeIsValid() + public function testPostCodeIsValid(): void { $main = '[1-9]{1}[0-9]{2}[0,1,4,5,9]{1}'; $pattern = "/^($main)|($main-[0-9]{3})+$/"; @@ -19,7 +19,7 @@ public function testPostCodeIsValid() self::assertSame(preg_match($pattern, $postcode), 1, $postcode); } - public function testAddressIsSingleLine() + public function testAddressIsSingleLine(): void { $this->faker->addProvider(new Person($this->faker)); diff --git a/test/Faker/Provider/pt_PT/PersonTest.php b/test/Faker/Provider/pt_PT/PersonTest.php index 2b32e2ef95..3528eaf400 100644 --- a/test/Faker/Provider/pt_PT/PersonTest.php +++ b/test/Faker/Provider/pt_PT/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testTaxpayerIdentificationNumberIsValid() + public function testTaxpayerIdentificationNumberIsValid(): void { $tin = $this->faker->taxpayerIdentificationNumber(); self::assertTrue(self::isValidTin($tin), $tin); diff --git a/test/Faker/Provider/pt_PT/PhoneNumberTest.php b/test/Faker/Provider/pt_PT/PhoneNumberTest.php index 3bb7fcd76e..8221aecdd9 100644 --- a/test/Faker/Provider/pt_PT/PhoneNumberTest.php +++ b/test/Faker/Provider/pt_PT/PhoneNumberTest.php @@ -10,12 +10,12 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumberReturnsPhoneNumberWithOrWithoutPrefix() + public function testPhoneNumberReturnsPhoneNumberWithOrWithoutPrefix(): void { self::assertMatchesRegularExpression('/^(9[1,2,3,6][0-9]{7})|(2[0-9]{8})|(\+351 [2][0-9]{8})|(\+351 9[1,2,3,6][0-9]{7})/', $this->faker->phoneNumber()); } - public function testMobileNumberReturnsMobileNumberWithOrWithoutPrefix() + public function testMobileNumberReturnsMobileNumberWithOrWithoutPrefix(): void { self::assertMatchesRegularExpression('/^(9[1,2,3,6][0-9]{7})/', $this->faker->mobileNumber()); } diff --git a/test/Faker/Provider/ro_RO/PersonTest.php b/test/Faker/Provider/ro_RO/PersonTest.php index 76849e42af..68c938d4cf 100644 --- a/test/Faker/Provider/ro_RO/PersonTest.php +++ b/test/Faker/Provider/ro_RO/PersonTest.php @@ -76,7 +76,7 @@ public function validInputDataProvider() ]; } - public function testAllRandomReturnsValidCnp() + public function testAllRandomReturnsValidCnp(): void { $cnp = $this->faker->cnp; self::assertTrue( @@ -85,7 +85,7 @@ public function testAllRandomReturnsValidCnp() ); } - public function testValidGenderReturnsValidCnp() + public function testValidGenderReturnsValidCnp(): void { $cnp = $this->faker->cnp(Person::GENDER_MALE); self::assertTrue( @@ -105,7 +105,7 @@ public function testValidGenderReturnsValidCnp() * * @dataProvider invalidGenderProvider */ - public function testInvalidGenderThrowsException($value) + public function testInvalidGenderThrowsException($value): void { $this->expectException(\InvalidArgumentException::class); $this->faker->cnp($value); @@ -116,7 +116,7 @@ public function testInvalidGenderThrowsException($value) * * @dataProvider validYearProvider */ - public function testValidYearReturnsValidCnp($value) + public function testValidYearReturnsValidCnp($value): void { $cnp = $this->faker->cnp(null, $value); self::assertTrue( @@ -130,7 +130,7 @@ public function testValidYearReturnsValidCnp($value) * * @dataProvider invalidYearProvider */ - public function testInvalidYearThrowsException($value) + public function testInvalidYearThrowsException($value): void { $this->expectException(\InvalidArgumentException::class); $this->faker->cnp(null, $value); @@ -141,7 +141,7 @@ public function testInvalidYearThrowsException($value) * * @dataProvider validCountyCodeProvider */ - public function testValidCountyCodeReturnsValidCnp($value) + public function testValidCountyCodeReturnsValidCnp($value): void { $cnp = $this->faker->cnp(null, null, $value); self::assertTrue( @@ -155,13 +155,13 @@ public function testValidCountyCodeReturnsValidCnp($value) * * @dataProvider invalidCountyCodeProvider */ - public function testInvalidCountyCodeThrowsException($value) + public function testInvalidCountyCodeThrowsException($value): void { $this->expectException(\InvalidArgumentException::class); $this->faker->cnp(null, null, $value); } - public function testNonResidentReturnsValidCnp() + public function testNonResidentReturnsValidCnp(): void { $cnp = $this->faker->cnp(null, null, null, false); self::assertTrue( @@ -184,7 +184,7 @@ public function testNonResidentReturnsValidCnp() * * @dataProvider validInputDataProvider */ - public function testValidInputDataReturnsValidCnp($gender, $dateOfBirth, $county, $isResident, $expectedCnpStart) + public function testValidInputDataReturnsValidCnp($gender, $dateOfBirth, $county, $isResident, $expectedCnpStart): void { $cnp = $this->faker->cnp($gender, $dateOfBirth, $county, $isResident); self::assertStringStartsWith( diff --git a/test/Faker/Provider/ro_RO/PhoneNumberTest.php b/test/Faker/Provider/ro_RO/PhoneNumberTest.php index 886de91ed5..2de759974d 100644 --- a/test/Faker/Provider/ro_RO/PhoneNumberTest.php +++ b/test/Faker/Provider/ro_RO/PhoneNumberTest.php @@ -10,17 +10,17 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumberReturnsNormalPhoneNumber() + public function testPhoneNumberReturnsNormalPhoneNumber(): void { self::assertMatchesRegularExpression('/^0(?:[23][13-7]|7\d)\d{7}$/', $this->faker->phoneNumber()); } - public function testTollFreePhoneNumberReturnsTollFreePhoneNumber() + public function testTollFreePhoneNumberReturnsTollFreePhoneNumber(): void { self::assertMatchesRegularExpression('/^08(?:0[01267]|70)\d{6}$/', $this->faker->tollFreePhoneNumber()); } - public function testPremiumRatePhoneNumberReturnsPremiumRatePhoneNumber() + public function testPremiumRatePhoneNumberReturnsPremiumRatePhoneNumber(): void { self::assertMatchesRegularExpression('/^090[036]\d{6}$/', $this->faker->premiumRatePhoneNumber()); } diff --git a/test/Faker/Provider/ru_RU/CompanyTest.php b/test/Faker/Provider/ru_RU/CompanyTest.php index 614f371c23..c9dc9f48c1 100644 --- a/test/Faker/Provider/ru_RU/CompanyTest.php +++ b/test/Faker/Provider/ru_RU/CompanyTest.php @@ -10,14 +10,14 @@ */ final class CompanyTest extends TestCase { - public function testINN() + public function testINN(): void { self::assertMatchesRegularExpression('/^[0-9]{10}$/', $this->faker->inn10); self::assertEquals('77', substr($this->faker->inn10('77'), 0, 2)); self::assertEquals('02', substr($this->faker->inn10(2), 0, 2)); } - public function testKPP() + public function testKPP(): void { self::assertMatchesRegularExpression('/^[0-9]{9}$/', $this->faker->kpp); self::assertEquals('01001', substr($this->faker->kpp, -5, 5)); @@ -25,7 +25,7 @@ public function testKPP() self::assertEquals(substr($inn10, 0, 4), substr($this->faker->kpp($inn10), 0, 4)); } - public function testCatchPhrase() + public function testCatchPhrase(): void { $phrase = $this->faker->catchPhrase; self::assertNotNull($phrase); @@ -50,7 +50,7 @@ public function checksumProvider() /** * @dataProvider checksumProvider */ - public function testInn10Checksum($inn10, $checksum) + public function testInn10Checksum($inn10, $checksum): void { self::assertSame($checksum, $this->faker->inn10Checksum($inn10), $inn10); } @@ -71,7 +71,7 @@ public function inn10ValidatorProvider() /** * @dataProvider inn10ValidatorProvider */ - public function testInn10IsValid($inn10, $isValid) + public function testInn10IsValid($inn10, $isValid): void { self::assertSame($isValid, $this->faker->inn10IsValid($inn10), $inn10); } diff --git a/test/Faker/Provider/ru_RU/PersonTest.php b/test/Faker/Provider/ru_RU/PersonTest.php index 9af11a5dfa..aa34376d4d 100644 --- a/test/Faker/Provider/ru_RU/PersonTest.php +++ b/test/Faker/Provider/ru_RU/PersonTest.php @@ -10,17 +10,17 @@ */ final class PersonTest extends TestCase { - public function testLastNameFemale() + public function testLastNameFemale(): void { self::assertEquals('а', substr($this->faker->lastName('female'), -2, 2)); } - public function testLastNameMale() + public function testLastNameMale(): void { self::assertNotEquals('а', substr($this->faker->lastName('male'), -2, 2)); } - public function testLastNameRandom() + public function testLastNameRandom(): void { self::assertNotNull($this->faker->lastName()); } diff --git a/test/Faker/Provider/ru_RU/TextTest.php b/test/Faker/Provider/ru_RU/TextTest.php index 8e975aeef0..0c05422f72 100644 --- a/test/Faker/Provider/ru_RU/TextTest.php +++ b/test/Faker/Provider/ru_RU/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'На другой день Чичиков отправился на обед и вечер.', diff --git a/test/Faker/Provider/sv_SE/MunicipalityTest.php b/test/Faker/Provider/sv_SE/MunicipalityTest.php index 339e77d5d5..7ac7f91da2 100644 --- a/test/Faker/Provider/sv_SE/MunicipalityTest.php +++ b/test/Faker/Provider/sv_SE/MunicipalityTest.php @@ -10,7 +10,7 @@ */ final class MunicipalityTest extends TestCase { - public function testGenerate() + public function testGenerate(): void { self::assertNotEmpty($this->faker->municipality()); } diff --git a/test/Faker/Provider/sv_SE/PersonTest.php b/test/Faker/Provider/sv_SE/PersonTest.php index db08d5b1d2..b2182dc541 100644 --- a/test/Faker/Provider/sv_SE/PersonTest.php +++ b/test/Faker/Provider/sv_SE/PersonTest.php @@ -25,7 +25,7 @@ public function provideSeedAndExpectedReturn() /** * @dataProvider provideSeedAndExpectedReturn */ - public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected) + public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthdate, $expected): void { $faker = $this->faker; $faker->seed($seed); @@ -33,25 +33,25 @@ public function testPersonalIdentityNumberUsesBirthDateIfProvided($seed, $birthd self::assertEquals($expected, $pin); } - public function testPersonalIdentityNumberGeneratesLuhnCompliantNumbers() + public function testPersonalIdentityNumberGeneratesLuhnCompliantNumbers(): void { $pin = str_replace('-', '', $this->faker->personalIdentityNumber()); self::assertTrue(Luhn::isValid($pin)); } - public function testPersonalIdentityNumberGeneratesOddValuesForMales() + public function testPersonalIdentityNumberGeneratesOddValuesForMales(): void { $pin = $this->faker->personalIdentityNumber(null, 'male'); self::assertEquals(1, $pin[9] % 2); } - public function testPersonalIdentityNumberGeneratesEvenValuesForFemales() + public function testPersonalIdentityNumberGeneratesEvenValuesForFemales(): void { $pin = $this->faker->personalIdentityNumber(null, 'female'); self::assertEquals(0, $pin[9] % 2); } - public function testBirthNumberNot000() + public function testBirthNumberNot000(): void { $faker = $this->faker; $faker->seed(97270); @@ -60,7 +60,7 @@ public function testBirthNumberNot000() self::assertNotEquals('000', substr($pin, 7, 3)); } - public function testBirthNumberGeneratesEvenValuesForFemales() + public function testBirthNumberGeneratesEvenValuesForFemales(): void { $faker = $this->faker; $faker->seed(372920); diff --git a/test/Faker/Provider/tr_TR/CompanyTest.php b/test/Faker/Provider/tr_TR/CompanyTest.php index f9123ddd71..6e34e6833d 100644 --- a/test/Faker/Provider/tr_TR/CompanyTest.php +++ b/test/Faker/Provider/tr_TR/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testCompany() + public function testCompany(): void { $company = $this->faker->companyField; self::assertNotNull($company); diff --git a/test/Faker/Provider/tr_TR/PaymentTest.php b/test/Faker/Provider/tr_TR/PaymentTest.php index 0c5e327d1c..cafc08dfc4 100644 --- a/test/Faker/Provider/tr_TR/PaymentTest.php +++ b/test/Faker/Provider/tr_TR/PaymentTest.php @@ -9,7 +9,7 @@ */ final class PaymentTest extends TestCase { - public function testBankAccountNumber() + public function testBankAccountNumber(): void { $accNo = $this->faker->bankAccountNumber; self::assertSame(substr($accNo, 0, 2), 'TR'); diff --git a/test/Faker/Provider/tr_TR/PersonTest.php b/test/Faker/Provider/tr_TR/PersonTest.php index ab5aeb9c05..f9760983f4 100644 --- a/test/Faker/Provider/tr_TR/PersonTest.php +++ b/test/Faker/Provider/tr_TR/PersonTest.php @@ -10,7 +10,7 @@ */ final class PersonTest extends TestCase { - public function testTCNo() + public function testTCNo(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->tcNo; @@ -37,7 +37,7 @@ public function tcNoChecksumProvider() * @param string $tcNo * @param string $checksum */ - public function testTcNoChecksum($tcNo, $checksum) + public function testTcNoChecksum($tcNo, $checksum): void { self::assertSame($checksum, $this->faker->tcNoChecksum($tcNo), $tcNo); } @@ -62,7 +62,7 @@ public function tcNoValidatorProvider() * @param string $tcNo * @param bool $isValid */ - public function testIsValid($tcNo, $isValid) + public function testIsValid($tcNo, $isValid): void { self::assertSame($isValid, $this->faker->tcNoisValid($tcNo), $tcNo); } diff --git a/test/Faker/Provider/tr_TR/PhoneNumberTest.php b/test/Faker/Provider/tr_TR/PhoneNumberTest.php index b4439cb9d6..47fbf14af6 100644 --- a/test/Faker/Provider/tr_TR/PhoneNumberTest.php +++ b/test/Faker/Provider/tr_TR/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumber() + public function testPhoneNumber(): void { for ($i = 0; $i < 100; ++$i) { $number = $this->faker->phoneNumber; @@ -21,7 +21,7 @@ public function testPhoneNumber() } } - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { for ($i = 0; $i < 10; ++$i) { $number = $this->faker->e164PhoneNumber(); diff --git a/test/Faker/Provider/uk_UA/AddressTest.php b/test/Faker/Provider/uk_UA/AddressTest.php index dcbc7c99f3..fb9e6d256e 100644 --- a/test/Faker/Provider/uk_UA/AddressTest.php +++ b/test/Faker/Provider/uk_UA/AddressTest.php @@ -10,7 +10,7 @@ */ final class AddressTest extends TestCase { - public function testPostCodeIsValid() + public function testPostCodeIsValid(): void { $main = '[0-9]{5}'; $pattern = "/^($main)|($main-[0-9]{3})+$/"; @@ -18,13 +18,13 @@ public function testPostCodeIsValid() self::assertMatchesRegularExpression($pattern, $postcode, 'Post code ' . $postcode . ' is wrong!'); } - public function testEmptySuffixes() + public function testEmptySuffixes(): void { self::assertEmpty($this->faker->citySuffix, 'City suffix should be empty!'); self::assertEmpty($this->faker->streetSuffix, 'Street suffix should be empty!'); } - public function testStreetCyrOnly() + public function testStreetCyrOnly(): void { $pattern = "/[0-9А-ЩЯІЇЄЮа-щяіїєюьIVXCM][0-9А-ЩЯІЇЄЮа-щяіїєюь \'-.]*[А-Яа-я.]/u"; $streetName = $this->faker->streetName; @@ -35,7 +35,7 @@ public function testStreetCyrOnly() ); } - public function testCityNameCyrOnly() + public function testCityNameCyrOnly(): void { $pattern = "/[А-ЩЯІЇЄЮа-щяіїєюь][0-9А-ЩЯІЇЄЮа-щяіїєюь \'-]*[А-Яа-я]/u"; $city = $this->faker->city; @@ -46,7 +46,7 @@ public function testCityNameCyrOnly() ); } - public function testRegionNameCyrOnly() + public function testRegionNameCyrOnly(): void { $pattern = '/[А-ЩЯІЇЄЮ][А-ЩЯІЇЄЮа-щяіїєюь]*а$/u'; $regionName = $this->faker->region; @@ -57,7 +57,7 @@ public function testRegionNameCyrOnly() ); } - public function testCountryCyrOnly() + public function testCountryCyrOnly(): void { $pattern = "/[А-ЩЯІЇЄЮа-щяіїєюьIVXCM][А-ЩЯІЇЄЮа-щяіїєюь \'-]*[А-Яа-я.]/u"; $country = $this->faker->country; diff --git a/test/Faker/Provider/uk_UA/PersonTest.php b/test/Faker/Provider/uk_UA/PersonTest.php index 8c742b8457..3773c984b0 100644 --- a/test/Faker/Provider/uk_UA/PersonTest.php +++ b/test/Faker/Provider/uk_UA/PersonTest.php @@ -10,27 +10,27 @@ */ final class PersonTest extends TestCase { - public function testFirstNameMaleReturns() + public function testFirstNameMaleReturns(): void { self::assertEquals('Максим', $this->faker->firstNameMale()); } - public function testFirstNameFemaleReturns() + public function testFirstNameFemaleReturns(): void { self::assertEquals('Людмила', $this->faker->firstNameFemale()); } - public function testMiddleNameMaleReturns() + public function testMiddleNameMaleReturns(): void { self::assertEquals('Миколайович', $this->faker->middleNameMale()); } - public function testMiddleNameFemaleReturns() + public function testMiddleNameFemaleReturns(): void { self::assertEquals('Миколаївна', $this->faker->middleNameFemale()); } - public function testLastNameReturns() + public function testLastNameReturns(): void { self::assertEquals('Броваренко', $this->faker->lastName()); } diff --git a/test/Faker/Provider/uk_UA/PhoneNumberTest.php b/test/Faker/Provider/uk_UA/PhoneNumberTest.php index c6cac9336b..1bd22271c7 100644 --- a/test/Faker/Provider/uk_UA/PhoneNumberTest.php +++ b/test/Faker/Provider/uk_UA/PhoneNumberTest.php @@ -10,7 +10,7 @@ */ final class PhoneNumberTest extends TestCase { - public function testPhoneNumberFormat() + public function testPhoneNumberFormat(): void { $pattern = "/((\+38)(((\(\d{3}\))\d{7}|(\(\d{4}\))\d{6})|(\d{8})))|0\d{9}/"; $phoneNumber = $this->faker->phoneNumber; @@ -21,7 +21,7 @@ public function testPhoneNumberFormat() ); } - public function testE164PhoneNumberFormat() + public function testE164PhoneNumberFormat(): void { $pattern = '/^\+?380[1-9]\d{8}$/'; $phoneNumber = $this->faker->e164PhoneNumber; diff --git a/test/Faker/Provider/zh_TW/CompanyTest.php b/test/Faker/Provider/zh_TW/CompanyTest.php index 2b4d1d4c10..fe7ce63264 100644 --- a/test/Faker/Provider/zh_TW/CompanyTest.php +++ b/test/Faker/Provider/zh_TW/CompanyTest.php @@ -10,7 +10,7 @@ */ final class CompanyTest extends TestCase { - public function testVAT() + public function testVAT(): void { self::assertEquals(8, floor(log10($this->faker->VAT) + 1)); } diff --git a/test/Faker/Provider/zh_TW/PersonTest.php b/test/Faker/Provider/zh_TW/PersonTest.php index cfdc200667..923ae0990c 100644 --- a/test/Faker/Provider/zh_TW/PersonTest.php +++ b/test/Faker/Provider/zh_TW/PersonTest.php @@ -13,7 +13,7 @@ final class PersonTest extends TestCase /** * @see https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89 */ - public function testPersonalIdentityNumber() + public function testPersonalIdentityNumber(): void { $id = $this->faker->personalIdentityNumber; diff --git a/test/Faker/Provider/zh_TW/TextTest.php b/test/Faker/Provider/zh_TW/TextTest.php index b5f236298e..e839c8cc97 100644 --- a/test/Faker/Provider/zh_TW/TextTest.php +++ b/test/Faker/Provider/zh_TW/TextTest.php @@ -25,7 +25,7 @@ protected function getMethod($name) return $method; } - public function testItShouldExplodeTheStringToArray() + public function testItShouldExplodeTheStringToArray(): void { self::assertSame( ['中', '文', '測', '試', '真', '有', '趣'], @@ -38,7 +38,7 @@ public function testItShouldExplodeTheStringToArray() ); } - public function testItShouldReturnTheStringLength() + public function testItShouldReturnTheStringLength(): void { self::assertContains( $this->getMethod('strlen')->invokeArgs(null, ['中文測試真有趣']), @@ -46,7 +46,7 @@ public function testItShouldReturnTheStringLength() ); } - public function testItShouldReturnTheCharacterIsValidStartOrNot() + public function testItShouldReturnTheCharacterIsValidStartOrNot(): void { self::assertTrue($this->getMethod('validStart')->invokeArgs(null, ['中'])); @@ -59,7 +59,7 @@ public function testItShouldReturnTheCharacterIsValidStartOrNot() self::assertFalse($this->getMethod('validStart')->invokeArgs(null, ['!'])); } - public function testItShouldAppendEndPunctToTheEndOfString() + public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( '中文測試真有趣。', From ce5a1c6289bbc51c7a4126405b3774f03e099698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 17:31:03 +0100 Subject: [PATCH 040/229] Fix: Configure no_trailing_comma_in_singleline instead of deprecated no_trailing_comma_in_singleline_array fixer (#553) --- .php-cs-fixer.dist.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 83bb1fa7be..d7e95b54aa 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -102,7 +102,11 @@ 'no_spaces_around_offset' => true, 'no_superfluous_elseif' => true, 'no_superfluous_phpdoc_tags' => true, - 'no_trailing_comma_in_singleline_array' => true, + 'no_trailing_comma_in_singleline' => [ + 'elements' => [ + 'array', + ], + ], 'no_unneeded_control_parentheses' => true, 'no_unneeded_curly_braces' => true, 'no_unneeded_final_method' => true, From 9491824167939526a4c184a58522280f858a4165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 17:31:42 +0100 Subject: [PATCH 041/229] Fix: Assemble cache key from branch name (#552) --- .github/workflows/coding-standards.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 81ea1d81f3..38e6da99e5 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -52,9 +52,10 @@ jobs: uses: "actions/cache@v3" with: path: ".php_cs.cache" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ github.ref_name }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}-${{ matrix.php-version }}-main + composer-${{ runner.os }}-${{ matrix.php-version }} composer-${{ runner.os }}- composer- From a6761a0e32cb5fb78f81dda6fef3afd9d7306145 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Dec 2022 16:32:07 +0000 Subject: [PATCH 042/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#550) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 4.30.0 to 5.1.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/4.30.0...5.1.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 743 ++++++++++++++++++++++++--------- 2 files changed, 545 insertions(+), 200 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 3f22978855..5d1dda31f6 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^4.30.0" + "vimeo/psalm": "^5.1.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index bd4c905f85..ae14540e94 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "6440bd3321cecaca3d65a7d334326aab", + "content-hash": "d606595cc2efeff717a214f5a70ec023", "packages": [ { "name": "amphp/amp", @@ -247,30 +247,30 @@ }, { "name": "composer/pcre", - "version": "1.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -298,7 +298,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.1" + "source": "https://github.com/composer/pcre/tree/3.1.0" }, "funding": [ { @@ -314,7 +314,7 @@ "type": "tidelift" } ], - "time": "2022-01-21T20:24:37+00:00" + "time": "2022-11-17T09:50:14+00:00" }, { "name": "composer/semver", @@ -399,27 +399,27 @@ }, { "name": "composer/xdebug-handler", - "version": "2.0.5", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "composer/pcre": "^1", - "php": "^5.3.2 || ^7.0 || ^8.0", + "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": "^4.2 || ^5.0 || ^6.0" + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -445,7 +445,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.5" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, "funding": [ { @@ -461,7 +461,7 @@ "type": "tidelift" } ], - "time": "2022-02-24T20:20:32+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -763,25 +763,25 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", - "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.1" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -810,47 +810,44 @@ ], "support": { "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "time": "2020-04-27T09:25:28+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -861,42 +858,50 @@ { "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/release/4.x" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2019-12-28T18:55:12+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.0.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": "^7.1", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "ext-tokenizer": "*", + "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-master": "1.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -917,33 +922,28 @@ "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/0.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2019-08-22T18:11:29+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -956,7 +956,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -970,9 +970,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2017-02-14T16:28:37+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/log", @@ -1026,29 +1026,29 @@ }, { "name": "sebastian/diff", - "version": "3.0.3", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", - "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1080,7 +1080,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -1088,47 +1088,50 @@ "type": "github" } ], - "time": "2020-11-30T07:59:04+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { "name": "symfony/console", - "version": "v4.4.49", + "version": "v5.4.16", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" + "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "url": "https://api.github.com/repos/symfony/console/zipball/8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", + "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^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/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -1161,8 +1164,145 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.4.16" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-25T14:09:27+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.4.13", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51", + "reference": "ac09569844a9109a5966b9438fc29113ce77cf51", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.49" + "source": "https://github.com/symfony/filesystem/tree/v5.4.13" }, "funding": [ { @@ -1178,7 +1318,7 @@ "type": "tidelift" } ], - "time": "2022-11-05T17:10:16+00:00" + "time": "2022-09-21T19:53:16+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1262,6 +1402,171 @@ ], "time": "2022-11-03T14:55:06+00:00" }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.27.0", @@ -1509,21 +1814,25 @@ }, { "name": "symfony/service-contracts", - "version": "v1.1.13", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/afa00c500c2d6aea6e3b2f4862355f507bc5ebb4", - "reference": "afa00c500c2d6aea6e3b2f4862355f507bc5ebb4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" @@ -1531,7 +1840,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1568,7 +1877,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -1584,28 +1893,114 @@ "type": "tidelift" } ], - "time": "2022-05-27T14:01:05+00:00" + "time": "2022-05-30T19:17:29+00:00" + }, + { + "name": "symfony/string", + "version": "v5.4.15", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.4.15" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-10-05T15:16:54+00:00" }, { "name": "vimeo/psalm", - "version": "4.30.0", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69" + "reference": "4defa177c89397c5e14737a80fe4896584130674" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/d0bc6e25d89f649e4f36a534f330f8bb4643dd69", - "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/4defa177c89397c5e14737a80fe4896584130674", + "reference": "4defa177c89397c5e14737a80fe4896584130674", "shasum": "" }, "require": { "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.8.0", + "composer/package-versions-deprecated": "^1.10.0", "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0 || ^3.0", "dnoegel/php-xdg-base-dir": "^0.1.1", "ext-ctype": "*", "ext-dom": "*", @@ -1614,35 +2009,34 @@ "ext-mbstring": "*", "ext-simplexml": "*", "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.5", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.13", "openlss/lib-array2xml": "^1.0", - "php": "^7.1|^8", - "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.25", - "webmozart/path-util": "^2.3" + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "sebastian/diff": "^4.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/polyfill-php80": "^1.25" }, "provide": { "psalm/psalm": "self.version" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0||^6.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.0", "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0||dev-master", - "phpspec/prophecy": ">=1.9.0", - "phpstan/phpdoc-parser": "1.2.* || 1.6.4", - "phpunit/phpunit": "^9.0", - "psalm/plugin-phpunit": "^0.16", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0 || ^6.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.5", + "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", @@ -1658,17 +2052,14 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev", + "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": { - "files": [ - "src/functions.php", - "src/spl_object_id.php" - ], "psr-4": { "Psalm\\": "src/Psalm/" } @@ -1690,36 +2081,41 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.30.0" + "source": "https://github.com/vimeo/psalm/tree/5.1.0" }, - "time": "2022-11-06T20:37:08+00:00" + "time": "2022-12-02T01:23:35+00:00" }, { "name": "webmozart/assert", - "version": "1.9.1", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -1743,60 +2139,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.9.1" - }, - "time": "2020-07-08T17:02:28+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [], From ff62b0f54eae914e13aa301300280bc7de4bfbbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 17:32:33 +0100 Subject: [PATCH 043/229] Fix: Configure indentation for all `*.yml` and `*.yaml` files (#549) * Fix: Configure indentation for all *.yml and *.yaml files * Fix: Indent with 2 spaces --- .editorconfig | 2 +- roave-bc-check.yaml | 34 +++++++++++++++++----------------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.editorconfig b/.editorconfig index ecc01add38..9cabf2509b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,7 +11,7 @@ indent_style = space insert_final_newline = true trim_trailing_whitespace = true -[*.yml] +[*.{yaml, yml}] indent_size = 2 [Makefile] diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 3d83bf0412..d515cae370 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -1,18 +1,18 @@ parameters: - ignoreErrors: - - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-z_A-Z]+\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - - '#\[BC\] CHANGED: Property Faker\\Factory::\$defaultProviders changed default value#' - - '#\[BC\] CHANGED: Type documentation for property Faker\\Provider\\en_ZA\\Internet::\$tld changed from having no type to array#' - - '#\[BC\] CHANGED: The parameter \$generator of Faker\\ValidGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' - - '#\[BC\] CHANGED: The parameter \$generator of Faker\\UniqueGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' - - '#\[BC\] CHANGED: The return type of Faker\\Extension\\PersonExtension\#name\(\) changed from no type to string#' - - '#\[BC\] CHANGED: The parameter \$max of Faker\\Extension\\NumberExtension\#randomFloat\(\) changed from float to float\|null#' - - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid\(\) was removed#' - - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid3\(\) was removed#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerBuilder has been deleted#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\Container has been deleted#' - - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to a non-contravariant Faker\\Container\\ContainerInterface\|null#' - - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to Faker\\Container\\ContainerInterface\|null#' + ignoreErrors: + - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' + - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-z_A-Z]+\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' + - '#\[BC\] CHANGED: Property Faker\\Factory::\$defaultProviders changed default value#' + - '#\[BC\] CHANGED: Type documentation for property Faker\\Provider\\en_ZA\\Internet::\$tld changed from having no type to array#' + - '#\[BC\] CHANGED: The parameter \$generator of Faker\\ValidGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' + - '#\[BC\] CHANGED: The parameter \$generator of Faker\\UniqueGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' + - '#\[BC\] CHANGED: The return type of Faker\\Extension\\PersonExtension\#name\(\) changed from no type to string#' + - '#\[BC\] CHANGED: The parameter \$max of Faker\\Extension\\NumberExtension\#randomFloat\(\) changed from float to float\|null#' + - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid3\(\) was removed#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerBuilder has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\Container has been deleted#' + - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to a non-contravariant Faker\\Container\\ContainerInterface\|null#' + - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to Faker\\Container\\ContainerInterface\|null#' From c734fd3771d26352f95f092f4c5803e75c25b55d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 18:44:51 +0100 Subject: [PATCH 044/229] Fix: Run 'make baseline' (#557) --- psalm.baseline.xml | 52 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 7d5b26835d..2a60af42df 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,5 +1,5 @@ - + 0 @@ -139,6 +139,9 @@ + + $array + Closure @@ -148,6 +151,22 @@ false + + + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $element->ownerDocument + $root->ownerDocument + + $imei @@ -169,7 +188,7 @@ - $checksumArr[$checksum % 11] + $weights[$i] @@ -182,11 +201,40 @@ static::split($text) + + + $multipliers[$i - 1] + + + + + $weights[$i] + $weights[$i] + + + + + $weights[$i] + + + + $high[$i] + $low[$i] + $result[$i] + $weights[$i + 3] + $weights[$i] + $weights[$i] + DateTime + + + $multipliers[$i] + + static::lastName() From 51ed7d2cddaf5806ed8e21111482692254a724be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 18:53:01 +0100 Subject: [PATCH 045/229] Fix: Remove platform configuration (#560) --- composer.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 392fb3c662..afdecc773f 100644 --- a/composer.json +++ b/composer.json @@ -50,10 +50,7 @@ "bamarni/composer-bin-plugin": true, "composer/package-versions-deprecated": true }, - "sort-packages": true, - "platform": { - "php": "7.4.32" - } + "sort-packages": true }, "extra": { "branch-alias": { From 88564c7857ace79fed425629d87d70395986e875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 18:53:33 +0100 Subject: [PATCH 046/229] Enhancement: Configure `trailing_comma_in_multiline` fixer to include `arguments` in `elements` option (#555) * Enhancement: Configure trailing_comma_in_multiline fixer to include arguments in elements option * Fix: Run 'make cs' --- .php-cs-fixer.dist.php | 1 + src/Faker/Calculator/Isbn.php | 2 +- src/Faker/Container/Container.php | 14 ++++----- src/Faker/Container/ContainerBuilder.php | 4 +-- src/Faker/Core/Blood.php | 2 +- src/Faker/Core/Color.php | 8 ++--- src/Faker/Core/DateTime.php | 6 ++-- src/Faker/Core/Uuid.php | 2 +- src/Faker/Core/Version.php | 2 +- src/Faker/Generator.php | 6 ++-- src/Faker/ORM/Doctrine/EntityPopulator.php | 2 +- src/Faker/ORM/Doctrine/Populator.php | 2 +- src/Faker/ORM/Spot/Populator.php | 2 +- src/Faker/Provider/Color.php | 2 +- src/Faker/Provider/DateTime.php | 8 ++--- src/Faker/Provider/Image.php | 12 ++++---- src/Faker/Provider/Uuid.php | 2 +- src/Faker/Provider/ar_SA/Person.php | 2 +- src/Faker/Provider/bg_BG/Payment.php | 2 +- src/Faker/Provider/de_DE/PhoneNumber.php | 2 +- src/Faker/Provider/el_GR/PhoneNumber.php | 16 +++++----- src/Faker/Provider/en_GB/Company.php | 8 ++--- src/Faker/Provider/en_ZA/Company.php | 2 +- test/Faker/Core/UuidTest.php | 2 +- test/Faker/Extension/ContainerBuilderTest.php | 4 +-- test/Faker/Extension/ContainerTest.php | 2 +- test/Faker/GeneratorTest.php | 4 +-- test/Faker/Provider/BaseTest.php | 2 +- test/Faker/Provider/ImageTest.php | 24 +++++++-------- test/Faker/Provider/el_GR/PhoneNumberTest.php | 12 ++++---- test/Faker/Provider/el_GR/TextTest.php | 12 ++++---- test/Faker/Provider/en_NZ/PhoneNumberTest.php | 2 +- test/Faker/Provider/en_ZA/PhoneNumberTest.php | 2 +- test/Faker/Provider/fr_FR/TextTest.php | 12 ++++---- test/Faker/Provider/ka_GE/TextTest.php | 12 ++++---- test/Faker/Provider/kk_KZ/CompanyTest.php | 2 +- test/Faker/Provider/kk_KZ/TextTest.php | 12 ++++---- test/Faker/Provider/ko_KR/TextTest.php | 12 ++++---- .../Faker/Provider/pl_PL/LicensePlateTest.php | 30 +++++++++---------- test/Faker/Provider/pt_BR/TextTest.php | 12 ++++---- test/Faker/Provider/ro_RO/PersonTest.php | 16 +++++----- test/Faker/Provider/ru_RU/CompanyTest.php | 2 +- test/Faker/Provider/ru_RU/TextTest.php | 12 ++++---- test/Faker/Provider/uk_UA/AddressTest.php | 8 ++--- test/Faker/Provider/uk_UA/PhoneNumberTest.php | 4 +-- test/Faker/Provider/zh_TW/TextTest.php | 12 ++++---- 46 files changed, 161 insertions(+), 160 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index d7e95b54aa..5b3ec3cb7f 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -192,6 +192,7 @@ 'ternary_to_null_coalescing' => true, 'trailing_comma_in_multiline' => [ 'elements' => [ + 'arguments', 'arrays', ], ], diff --git a/src/Faker/Calculator/Isbn.php b/src/Faker/Calculator/Isbn.php index f098233be8..df2f59d721 100644 --- a/src/Faker/Calculator/Isbn.php +++ b/src/Faker/Calculator/Isbn.php @@ -36,7 +36,7 @@ public static function checksum(string $input): string $digits, static function (&$digit, $position): void { $digit = (10 - $position) * $digit; - } + }, ); $result = (11 - array_sum($digits) % 11) % 11; diff --git a/src/Faker/Container/Container.php b/src/Faker/Container/Container.php index ddc5a27f67..2dd2d974d7 100644 --- a/src/Faker/Container/Container.php +++ b/src/Faker/Container/Container.php @@ -46,7 +46,7 @@ public function get($id): Extension if (!is_string($id)) { throw new \InvalidArgumentException(sprintf( 'First argument of %s::get() must be string', - self::class + self::class, )); } @@ -57,7 +57,7 @@ public function get($id): Extension if (!$this->has($id)) { throw new NotInContainerException(sprintf( 'There is not service with id "%s" in the container.', - $id + $id, )); } @@ -69,7 +69,7 @@ public function get($id): Extension throw new \RuntimeException(sprintf( 'Service resolved for identifier "%s" does not implement the %s" interface.', $id, - Extension::class + Extension::class, )); } @@ -90,7 +90,7 @@ private function getService($id, $definition) throw new ContainerException( sprintf('Error while invoking callable for "%s"', $id), 0, - $e + $e, ); } } elseif (is_object($definition)) { @@ -106,12 +106,12 @@ private function getService($id, $definition) throw new ContainerException(sprintf( 'Could not instantiate class "%s". Class was not found.', - $id + $id, )); } else { throw new ContainerException(sprintf( 'Invalid type for definition with id "%s"', - $id + $id, )); } } @@ -128,7 +128,7 @@ public function has($id): bool if (!is_string($id)) { throw new \InvalidArgumentException(sprintf( 'First argument of %s::get() must be string', - self::class + self::class, )); } diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 008bc5d6c2..3fb335fff5 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -34,7 +34,7 @@ public function add($value, string $name = null): self if (!is_string($value) && !is_callable($value) && !is_object($value)) { throw new \InvalidArgumentException(sprintf( 'First argument to "%s::add()" must be a string, callable or object.', - self::class + self::class, )); } @@ -46,7 +46,7 @@ public function add($value, string $name = null): self } else { throw new \InvalidArgumentException(sprintf( 'Second argument to "%s::add()" is required not passing a string or object as first argument', - self::class + self::class, )); } } diff --git a/src/Faker/Core/Blood.php b/src/Faker/Core/Blood.php index 48a67ff625..50a5806c6b 100644 --- a/src/Faker/Core/Blood.php +++ b/src/Faker/Core/Blood.php @@ -36,7 +36,7 @@ public function bloodGroup(): string return sprintf( '%s%s', $this->bloodType(), - $this->bloodRh() + $this->bloodRh(), ); } } diff --git a/src/Faker/Core/Color.php b/src/Faker/Core/Color.php index d4d5d26801..6e4e350e6d 100644 --- a/src/Faker/Core/Color.php +++ b/src/Faker/Core/Color.php @@ -78,7 +78,7 @@ public function safeHexColor(): string $color[1], $color[1], $color[2], - $color[2] + $color[2], ); } @@ -113,7 +113,7 @@ public function rgbCssColor(): string { return sprintf( 'rgb(%s)', - $this->rgbColor() + $this->rgbColor(), ); } @@ -127,7 +127,7 @@ public function rgbaCssColor(): string return sprintf( 'rgba(%s,%s)', $this->rgbColor(), - $number->randomFloat(1, 0, 1) + $number->randomFloat(1, 0, 1), ); } @@ -158,7 +158,7 @@ public function hslColor(): string '%s,%s,%s', $number->numberBetween(0, 360), $number->numberBetween(0, 100), - $number->numberBetween(0, 100) + $number->numberBetween(0, 100), ); } diff --git a/src/Faker/Core/DateTime.php b/src/Faker/Core/DateTime.php index 1487cfdb1f..f3d7877654 100644 --- a/src/Faker/Core/DateTime.php +++ b/src/Faker/Core/DateTime.php @@ -89,7 +89,7 @@ public function dateTime($until = 'now', string $timezone = null): \DateTime { return $this->setTimezone( $this->getTimestampDateTime($this->unixTime($until)), - $timezone + $timezone, ); } @@ -99,7 +99,7 @@ public function dateTimeAD($until = 'now', string $timezone = null): \DateTime return $this->setTimezone( $this->getTimestampDateTime($this->generator->numberBetween($min, $this->getTimestamp($until))), - $timezone + $timezone, ); } @@ -116,7 +116,7 @@ public function dateTimeBetween($from = '-30 years', $until = 'now', string $tim return $this->setTimezone( $this->getTimestampDateTime($timestamp), - $timezone + $timezone, ); } diff --git a/src/Faker/Core/Uuid.php b/src/Faker/Core/Uuid.php index 7311e287f5..5e3b633a26 100644 --- a/src/Faker/Core/Uuid.php +++ b/src/Faker/Core/Uuid.php @@ -50,7 +50,7 @@ public function uuid3(): string $byte[12], $byte[13], $byte[14], - $byte[15] + $byte[15], ); } } diff --git a/src/Faker/Core/Version.php b/src/Faker/Core/Version.php index 66dcdfe83b..ce484e6ad8 100644 --- a/src/Faker/Core/Version.php +++ b/src/Faker/Core/Version.php @@ -26,7 +26,7 @@ public function semver(bool $preRelease = false, bool $build = false): string mt_rand(0, 99), mt_rand(0, 99), $preRelease && mt_rand(0, 1) ? '-' . $this->semverPreReleaseIdentifier() : '', - $build && mt_rand(0, 1) ? '+' . $this->semverBuildIdentifier() : '' + $build && mt_rand(0, 1) ? '+' . $this->semverBuildIdentifier() : '', ); } diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index e804f326be..3ae32cb6b8 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -584,7 +584,7 @@ public function ext(string $id): Extension\Extension if (!$this->container->has($id)) { throw new Extension\ExtensionNotFound(sprintf( 'No Faker extension with id "%s" was loaded.', - $id + $id, )); } @@ -893,7 +893,7 @@ public function randomFloat($nbMaxDecimals = null, $min = 0, $max = null): float return $this->ext(Extension\NumberExtension::class)->randomFloat( $nbMaxDecimals !== null ? (int) $nbMaxDecimals : null, (float) $min, - $max !== null ? (float) $max : null + $max !== null ? (float) $max : null, ); } @@ -911,7 +911,7 @@ public function randomNumber($nbDigits = null, $strict = false): int { return $this->ext(Extension\NumberExtension::class)->randomNumber( $nbDigits !== null ? (int) $nbDigits : null, - (bool) $strict + (bool) $strict, ); } diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php index 92efbcce80..7364c7229e 100644 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ b/src/Faker/ORM/Doctrine/EntityPopulator.php @@ -205,7 +205,7 @@ private function fillColumns($obj, $insertedEntities): void 'Failed to generate a value for %s::%s: %s', get_class($obj), $field, - $ex->getMessage() + $ex->getMessage(), )); } // Try a standard setter if it's available, otherwise fall back on reflection diff --git a/src/Faker/ORM/Doctrine/Populator.php b/src/Faker/ORM/Doctrine/Populator.php index 40527ec059..bf946f7023 100644 --- a/src/Faker/ORM/Doctrine/Populator.php +++ b/src/Faker/ORM/Doctrine/Populator.php @@ -111,7 +111,7 @@ public function execute($entityManager = null) $insertedEntities[$class][] = $this->entities[$class]->execute( $entityManager, $insertedEntities, - $generateId + $generateId, ); if (count($insertedEntities) % $this->batchSize === 0) { diff --git a/src/Faker/ORM/Spot/Populator.php b/src/Faker/ORM/Spot/Populator.php index 1d13db54f6..8e36607d5b 100644 --- a/src/Faker/ORM/Spot/Populator.php +++ b/src/Faker/ORM/Spot/Populator.php @@ -79,7 +79,7 @@ public function execute($locator = null) foreach ($this->quantities as $entityName => $number) { for ($i = 0; $i < $number; ++$i) { $insertedEntities[$entityName][] = $this->entities[$entityName]->execute( - $insertedEntities + $insertedEntities, ); } } diff --git a/src/Faker/Provider/Color.php b/src/Faker/Provider/Color.php index 6446916dd2..d14e70551e 100644 --- a/src/Faker/Provider/Color.php +++ b/src/Faker/Provider/Color.php @@ -138,7 +138,7 @@ public static function hslColor() '%s,%s,%s', self::numberBetween(0, 360), self::numberBetween(0, 100), - self::numberBetween(0, 100) + self::numberBetween(0, 100), ); } diff --git a/src/Faker/Provider/DateTime.php b/src/Faker/Provider/DateTime.php index 00f4641aae..1d57ff45bd 100644 --- a/src/Faker/Provider/DateTime.php +++ b/src/Faker/Provider/DateTime.php @@ -57,7 +57,7 @@ public static function dateTime($max = 'now', $timezone = null) { return static::setTimezone( new \DateTime('@' . static::unixTime($max)), - $timezone + $timezone, ); } @@ -80,7 +80,7 @@ public static function dateTimeAD($max = 'now', $timezone = null) return static::setTimezone( new \DateTime('@' . self::numberBetween($min, static::getMaxTimestamp($max))), - $timezone + $timezone, ); } @@ -156,7 +156,7 @@ public static function dateTimeBetween($startDate = '-30 years', $endDate = 'now return static::setTimezone( new \DateTime('@' . $timestamp), - $timezone + $timezone, ); } @@ -189,7 +189,7 @@ public static function dateTimeInInterval($date = '-30 years', $interval = '+5 d return static::dateTimeBetween( $begin, $end, - $timezone + $timezone, ); } diff --git a/src/Faker/Provider/Image.php b/src/Faker/Provider/Image.php index 0c3ad68c13..53f28dfcfa 100644 --- a/src/Faker/Provider/Image.php +++ b/src/Faker/Provider/Image.php @@ -55,7 +55,7 @@ public static function imageUrl( trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', ); // Validate image format @@ -65,7 +65,7 @@ public static function imageUrl( throw new \InvalidArgumentException(sprintf( 'Invalid image format "%s". Allowable formats are: %s', $format, - implode(', ', $imageFormats) + implode(', ', $imageFormats), )); } @@ -92,7 +92,7 @@ public static function imageUrl( self::BASE_URL, $size, $backgroundColor, - count($imageParts) > 0 ? '?text=' . urlencode(implode(' ', $imageParts)) : '' + count($imageParts) > 0 ? '?text=' . urlencode(implode(' ', $imageParts)) : '', ); } @@ -119,7 +119,7 @@ public static function image( trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', ); $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible @@ -172,7 +172,7 @@ public static function getFormats(): array trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', ); return array_keys(static::getFormatConstants()); @@ -183,7 +183,7 @@ public static function getFormatConstants(): array trigger_deprecation( 'fakerphp/faker', '1.20', - 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead' + 'Provider is deprecated and will no longer be available in Faker 2. Please use a custom provider instead', ); return [ diff --git a/src/Faker/Provider/Uuid.php b/src/Faker/Provider/Uuid.php index 1cd15cab3f..bcfcb05d9a 100644 --- a/src/Faker/Provider/Uuid.php +++ b/src/Faker/Provider/Uuid.php @@ -53,7 +53,7 @@ public static function uuid() $byte[12], $byte[13], $byte[14], - $byte[15] + $byte[15], ); } } diff --git a/src/Faker/Provider/ar_SA/Person.php b/src/Faker/Provider/ar_SA/Person.php index c7bd16ec9a..505c8640c4 100644 --- a/src/Faker/Provider/ar_SA/Person.php +++ b/src/Faker/Provider/ar_SA/Person.php @@ -93,7 +93,7 @@ public static function prefix() public static function idNumber() { $partialValue = static::numerify( - static::randomElement([1, 2]) . str_repeat('#', 8) + static::randomElement([1, 2]) . str_repeat('#', 8), ); return Luhn::generateLuhnNumber($partialValue); diff --git a/src/Faker/Provider/bg_BG/Payment.php b/src/Faker/Provider/bg_BG/Payment.php index 9a772c8ac5..d7ed58b894 100644 --- a/src/Faker/Provider/bg_BG/Payment.php +++ b/src/Faker/Provider/bg_BG/Payment.php @@ -40,7 +40,7 @@ public static function vat($spacedNationalPrefix = true) '%s%d%d', $prefix, self::randomNumber(5, true), // workaround for mt_getrandmax() limitation - self::randomNumber(self::randomElement([4, 5]), true) + self::randomNumber(self::randomElement([4, 5]), true), ); } } diff --git a/src/Faker/Provider/de_DE/PhoneNumber.php b/src/Faker/Provider/de_DE/PhoneNumber.php index 5387d6d10e..610ae8e2ab 100644 --- a/src/Faker/Provider/de_DE/PhoneNumber.php +++ b/src/Faker/Provider/de_DE/PhoneNumber.php @@ -121,7 +121,7 @@ public static function mobileCode() public function mobileNumber() { return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$mobileFormats) + static::randomElement(static::$mobileFormats), ))); } } diff --git a/src/Faker/Provider/el_GR/PhoneNumber.php b/src/Faker/Provider/el_GR/PhoneNumber.php index 6fe5000ef7..5303248706 100644 --- a/src/Faker/Provider/el_GR/PhoneNumber.php +++ b/src/Faker/Provider/el_GR/PhoneNumber.php @@ -158,7 +158,7 @@ public static function internationalCodePrefix() public static function areaCode() { return static::numerify( - str_pad(static::randomElement(static::$areaCodes), 4, '#') + str_pad(static::randomElement(static::$areaCodes), 4, '#'), ); } @@ -182,7 +182,7 @@ public static function areaCode() public function fixedLineNumber() { return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$fixedLineFormats) + static::randomElement(static::$fixedLineFormats), ))); } @@ -211,7 +211,7 @@ public static function mobileCode() public function mobileNumber() { return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$mobileFormats) + static::randomElement(static::$mobileFormats), ))); } @@ -224,7 +224,7 @@ public static function mobilePhoneNumber() strtr(static::randomElement(static::$mobileFormats), [ '{{internationalCodePrefix}}' => static::internationalCodePrefix(), '{{mobileCode}}' => static::mobileCode(), - ]) + ]), ); } @@ -241,7 +241,7 @@ public static function mobilePhoneNumber() public function personalNumber() { return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$personalFormats) + static::randomElement(static::$personalFormats), ))); } @@ -260,7 +260,7 @@ public static function tollFreeNumber() return ltrim(static::numerify( strtr(static::randomElement(static::$tollFreeFormats), [ '{{internationalCodePrefix}}' => static::internationalCodePrefix(), - ]) + ]), )); } @@ -289,7 +289,7 @@ public static function sharedCostCode() public function sharedCostNumber() { return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$sharedCostFormats) + static::randomElement(static::$sharedCostFormats), ))); } @@ -318,7 +318,7 @@ public static function premiumRateCode() public function premiumRateNumber() { return ltrim(static::numerify($this->generator->parse( - static::randomElement(static::$premiumRateFormats) + static::randomElement(static::$premiumRateFormats), ))); } } diff --git a/src/Faker/Provider/en_GB/Company.php b/src/Faker/Provider/en_GB/Company.php index acf56e5bdd..17fe07da0b 100644 --- a/src/Faker/Provider/en_GB/Company.php +++ b/src/Faker/Provider/en_GB/Company.php @@ -53,7 +53,7 @@ private static function generateStandardVatNumber(): string static::VAT_PREFIX, $firstBlock, $secondBlock, - static::calculateModulus97($firstBlock . $secondBlock) + static::calculateModulus97($firstBlock . $secondBlock), ); } @@ -66,7 +66,7 @@ private static function generateHealthAuthorityVatNumber(): string return sprintf( '%sHA%d', static::VAT_PREFIX, - static::numberBetween(500, 999) + static::numberBetween(500, 999), ); } @@ -79,7 +79,7 @@ private static function generateBranchTraderVatNumber(): string return sprintf( '%s %d', static::generateStandardVatNumber(), - static::randomNumber(3, true) + static::randomNumber(3, true), ); } @@ -92,7 +92,7 @@ private static function generateGovernmentVatNumber(): string return sprintf( '%sGD%s', static::VAT_PREFIX, - str_pad((string) static::numberBetween(0, 499), 3, '0', STR_PAD_LEFT) + str_pad((string) static::numberBetween(0, 499), 3, '0', STR_PAD_LEFT), ); } diff --git a/src/Faker/Provider/en_ZA/Company.php b/src/Faker/Provider/en_ZA/Company.php index 86a54321ad..6480c696f8 100644 --- a/src/Faker/Provider/en_ZA/Company.php +++ b/src/Faker/Provider/en_ZA/Company.php @@ -20,7 +20,7 @@ public function companyNumber() '%s/%s/%s', \Faker\Provider\DateTime::dateTimeBetween('-50 years', 'now')->format('Y'), static::randomNumber(6, true), - static::randomElement(static::$legalEntities) + static::randomElement(static::$legalEntities), ); } } diff --git a/test/Faker/Core/UuidTest.php b/test/Faker/Core/UuidTest.php index 0d2666063d..a0bedce026 100644 --- a/test/Faker/Core/UuidTest.php +++ b/test/Faker/Core/UuidTest.php @@ -30,7 +30,7 @@ protected function isUuid(string $uuid) { return is_string($uuid) && (bool) preg_match( '/^[a-f0-9]{8,8}-(?:[a-f0-9]{4,4}-){3,3}[a-f0-9]{12,12}$/i', - $uuid + $uuid, ); } } diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index bdfc1937ed..6f4bfc0c3a 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -27,7 +27,7 @@ public function testAddRejectsInvalidValue($value): void $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage(sprintf( 'First argument to "%s::add()" must be a string, callable or object.', - ContainerBuilder::class + ContainerBuilder::class, )); $containerBuilder->add($value); @@ -77,7 +77,7 @@ public static function create(): Extension $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage(sprintf( 'Second argument to "%s::add()" is required not passing a string or object as first argument', - ContainerBuilder::class + ContainerBuilder::class, )); $containerBuilder->add($value); diff --git a/test/Faker/Extension/ContainerTest.php b/test/Faker/Extension/ContainerTest.php index 069fa2b55a..f1158d4aef 100644 --- a/test/Faker/Extension/ContainerTest.php +++ b/test/Faker/Extension/ContainerTest.php @@ -58,7 +58,7 @@ public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsN $this->expectExceptionMessage(sprintf( 'Service resolved for identifier "%s" does not implement the %s" interface.', $id, - Extension::class + Extension::class, )); $container->get($id); diff --git a/test/Faker/GeneratorTest.php b/test/Faker/GeneratorTest.php index 2036b7cf5b..644a734819 100644 --- a/test/Faker/GeneratorTest.php +++ b/test/Faker/GeneratorTest.php @@ -312,7 +312,7 @@ public function word(): string $uniqueGenerator = $generator->unique( false, - $maxRetries + $maxRetries, ); $uniqueGenerator->word(); @@ -320,7 +320,7 @@ public function word(): string $this->expectException(\OverflowException::class); $this->expectExceptionMessage(sprintf( 'Maximum retries of %d reached without finding a unique value', - $maxRetries + $maxRetries, )); $uniqueGenerator->word(); diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index fba14868c7..0cf06b768d 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -426,7 +426,7 @@ public function testOptionalPercentageAndWeight(): void self::assertEquals( round(array_sum($valuesOld) / 10000, 2), - round(array_sum($valuesNew) / 10000, 2) + round(array_sum($valuesNew) / 10000, 2), ); } diff --git a/test/Faker/Provider/ImageTest.php b/test/Faker/Provider/ImageTest.php index 7530c83946..ff5e7f1c8a 100644 --- a/test/Faker/Provider/ImageTest.php +++ b/test/Faker/Provider/ImageTest.php @@ -14,7 +14,7 @@ public function testImageUrlUses640x680AsTheDefaultSize(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/640x480.png/#', - Image::imageUrl() + Image::imageUrl(), ); } @@ -22,7 +22,7 @@ public function testImageUrlAcceptsCustomWidthAndHeight(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/#', - Image::imageUrl(800, 400) + Image::imageUrl(800, 400), ); } @@ -30,7 +30,7 @@ public function testImageUrlAcceptsCustomCategory(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/[\w]{6}\?text=nature\+.*#', - Image::imageUrl(800, 400, 'nature') + Image::imageUrl(800, 400, 'nature'), ); } @@ -38,7 +38,7 @@ public function testImageUrlAcceptsCustomText(): void { self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/[\w]{6}\?text=nature\+Faker#', - Image::imageUrl(800, 400, 'nature', false, 'Faker') + Image::imageUrl(800, 400, 'nature', false, 'Faker'), ); } @@ -50,12 +50,12 @@ public function testImageUrlReturnsLinkToRegularImageWhenGrayIsFalse(): void 'nature', false, 'Faker', - false + false, ); self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/[\w]{6}\?text=nature\+Faker#', - $imageUrl + $imageUrl, ); } @@ -67,12 +67,12 @@ public function testImageUrlReturnsLinkToRegularImageWhenGrayIsTrue(): void 'nature', false, 'Faker', - true + true, ); self::assertMatchesRegularExpression( '#^https://via.placeholder.com/800x400.png/CCCCCC\?text=nature\+Faker#', - $imageUrl + $imageUrl, ); } @@ -95,7 +95,7 @@ public function testImageUrlThrowsExceptionOnInvalidImageFormat(): void false, 'Faker', true, - 'foo' + 'foo', ); } @@ -109,12 +109,12 @@ public function testImageUrlAcceptsDifferentImageFormats(): void false, 'Faker', true, - $format + $format, ); self::assertMatchesRegularExpression( "#^https://via.placeholder.com/800x400.{$format}/CCCCCC\?text=nature\+Faker#", - $imageUrl + $imageUrl, ); } } @@ -145,7 +145,7 @@ public function testDownloadWithDifferentImageFormats(): void false, 'Faker', true, - $format + $format, ); self::assertFileExists($file); diff --git a/test/Faker/Provider/el_GR/PhoneNumberTest.php b/test/Faker/Provider/el_GR/PhoneNumberTest.php index 2403fdd510..3854a63b20 100644 --- a/test/Faker/Provider/el_GR/PhoneNumberTest.php +++ b/test/Faker/Provider/el_GR/PhoneNumberTest.php @@ -16,7 +16,7 @@ public function testFixedLineNumber(): void self::assertNotSame(' ', $fixedLineNumber[0]); self::assertMatchesRegularExpression( '/^(\+30)?2(?:1\d\d|2(?:2[1-46-9]|[36][1-8]|4[1-7]|5[1-4]|7[1-5]|[89][1-9])|3(?:1\d|2[1-57]|[35][1-3]|4[13]|7[1-7]|8[124-6]|9[1-79])|4(?:1\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\d|[29][1-4]|3[1-5]|4[124]|5[1-6])|6(?:1\d|[269][1-6]|3[1245]|4[1-7]|5[13-9]|7[14]|8[1-5])|7(?:1\d|2[1-5]|3[1-6]|4[1-7]|5[1-57]|6[135]|9[125-7])|8(?:1\d|2[1-5]|[34][1-4]|9[1-57]))\d{6}$/', - str_replace(' ', '', $fixedLineNumber) + str_replace(' ', '', $fixedLineNumber), ); } @@ -26,7 +26,7 @@ public function testMobileNumber(): void self::assertNotSame(' ', $mobileNumber[0]); self::assertMatchesRegularExpression( '/^(\+30)?68[57-9]\d{7}|(?:69|94)\d{8}$/', - str_replace(' ', '', $mobileNumber) + str_replace(' ', '', $mobileNumber), ); } @@ -36,7 +36,7 @@ public function testPersonalNumber(): void self::assertNotSame(' ', $personalNumber[0]); self::assertMatchesRegularExpression( '/^(\+30)?70\d{8}$/', - str_replace(' ', '', $personalNumber) + str_replace(' ', '', $personalNumber), ); } @@ -46,7 +46,7 @@ public function testTollFreeNumber(): void self::assertNotSame(' ', $tollFreeNumber[0]); self::assertMatchesRegularExpression( '/^(\+30)?800\d{7}$/', - str_replace(' ', '', $tollFreeNumber) + str_replace(' ', '', $tollFreeNumber), ); } @@ -56,7 +56,7 @@ public function testSharedCostNumber(): void self::assertNotSame(' ', $sharedCostNumber[0]); self::assertMatchesRegularExpression( '/^(\+30)?8(?:0[16]|12|[27]5|50)\d{7}$/', - str_replace(' ', '', $sharedCostNumber) + str_replace(' ', '', $sharedCostNumber), ); } @@ -66,7 +66,7 @@ public function testPremiumRateNumber(): void self::assertNotSame(' ', $premiumRateNumber[0]); self::assertMatchesRegularExpression( '/^(\+30)?90[19]\d{7}$/', - str_replace(' ', '', $premiumRateNumber) + str_replace(' ', '', $premiumRateNumber), ); } diff --git a/test/Faker/Provider/el_GR/TextTest.php b/test/Faker/Provider/el_GR/TextTest.php index 666912593e..041f9732c5 100644 --- a/test/Faker/Provider/el_GR/TextTest.php +++ b/test/Faker/Provider/el_GR/TextTest.php @@ -29,32 +29,32 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ ']), ); self::assertSame( 'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ—']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ—']), ); self::assertSame( 'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ,']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ,']), ); self::assertSame( 'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ!.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ! ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ! ']), ); self::assertSame( 'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ; ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ; ']), ); self::assertSame( 'Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ: ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Και δεν άκουσες το κλοπακλόπ, κλοπακλόπ, κλοπακλόπ: ']), ); } } diff --git a/test/Faker/Provider/en_NZ/PhoneNumberTest.php b/test/Faker/Provider/en_NZ/PhoneNumberTest.php index a65c24d9f4..2504fdd1a8 100644 --- a/test/Faker/Provider/en_NZ/PhoneNumberTest.php +++ b/test/Faker/Provider/en_NZ/PhoneNumberTest.php @@ -21,7 +21,7 @@ public function phoneNumberFormat(): void $number = $this->faker->phoneNumber; self::assertMatchesRegularExpression( '/(^\([0]\d{1}\))(\d{7}$)|(^\([0][2]\d{1}\))(\d{6,8}$)|([0][8][0][0])([\s])(\d{5,8}$)/', - $number + $number, ); } diff --git a/test/Faker/Provider/en_ZA/PhoneNumberTest.php b/test/Faker/Provider/en_ZA/PhoneNumberTest.php index 95561ebc12..541db76f82 100644 --- a/test/Faker/Provider/en_ZA/PhoneNumberTest.php +++ b/test/Faker/Provider/en_ZA/PhoneNumberTest.php @@ -55,7 +55,7 @@ public function testCellPhoneNumber(): void self::assertMatchesRegularExpression( '/^(\+27|27)?(\()?0?([6][0-4]|[7][1-9]|[8][1-9])(\))?( |-|\.|_)?(\d{3})( |-|\.|_)?(\d{4})/', - $number + $number, ); } } diff --git a/test/Faker/Provider/fr_FR/TextTest.php b/test/Faker/Provider/fr_FR/TextTest.php index 45b9c2a0ae..4eb128278e 100644 --- a/test/Faker/Provider/fr_FR/TextTest.php +++ b/test/Faker/Provider/fr_FR/TextTest.php @@ -29,32 +29,32 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Que faisaient-elles maintenant? À.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À ']), ); self::assertSame( 'Que faisaient-elles maintenant? À.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À— ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À— ']), ); self::assertSame( 'Que faisaient-elles maintenant? À.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À,']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À,']), ); self::assertSame( 'Que faisaient-elles maintenant? À!.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À! ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À! ']), ); self::assertSame( 'Que faisaient-elles maintenant? À.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À: ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À: ']), ); self::assertSame( 'Que faisaient-elles maintenant? À.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À; ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Que faisaient-elles maintenant? À; ']), ); } } diff --git a/test/Faker/Provider/ka_GE/TextTest.php b/test/Faker/Provider/ka_GE/TextTest.php index 6da481f69f..2f8690461b 100644 --- a/test/Faker/Provider/ka_GE/TextTest.php +++ b/test/Faker/Provider/ka_GE/TextTest.php @@ -29,32 +29,32 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'ჭეშმარიტია. ჩვენც ისე.', - $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე ']), ); self::assertSame( 'ჭეშმარიტია. ჩვენც ისე.', - $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე— ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე— ']), ); self::assertSame( 'ჭეშმარიტია. ჩვენც ისე.', - $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე, ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე, ']), ); self::assertSame( 'ჭეშმარიტია. ჩვენც ისე!.', - $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე! ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე! ']), ); self::assertSame( 'ჭეშმარიტია. ჩვენც ისე.', - $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე; ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე; ']), ); self::assertSame( 'ჭეშმარიტია. ჩვენც ისე.', - $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე: ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['ჭეშმარიტია. ჩვენც ისე: ']), ); } } diff --git a/test/Faker/Provider/kk_KZ/CompanyTest.php b/test/Faker/Provider/kk_KZ/CompanyTest.php index ed06d8d88a..211305d456 100644 --- a/test/Faker/Provider/kk_KZ/CompanyTest.php +++ b/test/Faker/Provider/kk_KZ/CompanyTest.php @@ -18,7 +18,7 @@ public function testBusinessIdentificationNumberIsValid(): void self::assertMatchesRegularExpression( '/^(' . $registrationDateAsString . ')([4-6]{1})([0-3]{1})(\\d{6})$/', - $businessIdentificationNumber + $businessIdentificationNumber, ); } diff --git a/test/Faker/Provider/kk_KZ/TextTest.php b/test/Faker/Provider/kk_KZ/TextTest.php index 7c636ee10c..b5b9dab717 100644 --- a/test/Faker/Provider/kk_KZ/TextTest.php +++ b/test/Faker/Provider/kk_KZ/TextTest.php @@ -29,32 +29,32 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Арыстан баб кесенесі - көне Отырар.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар ']), ); self::assertSame( 'Арыстан баб кесенесі - көне Отырар.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар— ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар— ']), ); self::assertSame( 'Арыстан баб кесенесі - көне Отырар.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар, ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар, ']), ); self::assertSame( 'Арыстан баб кесенесі - көне Отырар!.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар! ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар! ']), ); self::assertSame( 'Арыстан баб кесенесі - көне Отырар.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар: ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар: ']), ); self::assertSame( 'Арыстан баб кесенесі - көне Отырар.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар; ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Арыстан баб кесенесі - көне Отырар; ']), ); } } diff --git a/test/Faker/Provider/ko_KR/TextTest.php b/test/Faker/Provider/ko_KR/TextTest.php index 0130eb373a..61bfa2abec 100644 --- a/test/Faker/Provider/ko_KR/TextTest.php +++ b/test/Faker/Provider/ko_KR/TextTest.php @@ -29,32 +29,32 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( '최석(崔晳)으로부터 최후의 편지가.', - $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가 ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가 ']), ); self::assertSame( '최석(崔晳)으로부터 최후의 편지가.', - $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가—']) + $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가—']), ); self::assertSame( '최석(崔晳)으로부터 최후의 편지가.', - $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가,']) + $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가,']), ); self::assertSame( '최석(崔晳)으로부터 최후의 편지가!.', - $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가! ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가! ']), ); self::assertSame( '최석(崔晳)으로부터 최후의 편지가.', - $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가: ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가: ']), ); self::assertSame( '최석(崔晳)으로부터 최후의 편지가.', - $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가; ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['최석(崔晳)으로부터 최후의 편지가; ']), ); } } diff --git a/test/Faker/Provider/pl_PL/LicensePlateTest.php b/test/Faker/Provider/pl_PL/LicensePlateTest.php index d0b5bf9464..8abe4d4c7a 100644 --- a/test/Faker/Provider/pl_PL/LicensePlateTest.php +++ b/test/Faker/Provider/pl_PL/LicensePlateTest.php @@ -29,7 +29,7 @@ public function testExplicitlyNonSpecialLicensePlates(): void { for ($i = 0; $i < 40; ++$i) { $licensePlate = $this->faker->licensePlate( - false + false, ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -44,7 +44,7 @@ public function testWithSpecialLicensePlates(): void { for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( - true + true, ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -60,7 +60,7 @@ public function testPodkarpackieLicensePlate(): void for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( false, - ['podkarpackie'] + ['podkarpackie'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -76,7 +76,7 @@ public function testLodzkieOrArmyLicensePlate(): void for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( true, - ['łódzkie', 'army'] + ['łódzkie', 'army'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -92,7 +92,7 @@ public function testLodzkieButNotArmyLicensePlate(): void for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( false, - ['łódzkie', 'army'] + ['łódzkie', 'army'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -108,7 +108,7 @@ public function testNoCorrectVoivodeshipLicensePlate(): void for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( true, - ['fake voivodeship', 'fake voivodeship2'] + ['fake voivodeship', 'fake voivodeship2'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -124,7 +124,7 @@ public function testNoVoivodeshipLicensePlate(): void for ($i = 0; $i < 5; ++$i) { $licensePlate = $this->faker->licensePlate( true, - [] + [], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -141,7 +141,7 @@ public function testNoVoivodeshipNoCountyLicensePlate(): void $licensePlate = $this->faker->licensePlate( true, [], - [] + [], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -158,7 +158,7 @@ public function testVoivodeshipCountyLicensePlate(): void $licensePlate = $this->faker->licensePlate( true, ['mazowieckie', 'services'], - ['Straż Graniczna', 'warszawski zachodni', 'radomski'] + ['Straż Graniczna', 'warszawski zachodni', 'radomski'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -175,7 +175,7 @@ public function testVoivodeshipFakeCountyLicensePlate(): void $licensePlate = $this->faker->licensePlate( true, ['mazowieckie', 'services'], - ['fake county'] + ['fake county'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -192,7 +192,7 @@ public function testVoivodeshipFakeVoivodeshipLicensePlate(): void $licensePlate = $this->faker->licensePlate( true, ['fake voivodeship'], - ['Straż Graniczna', 'warszawski zachodni', 'radomski'] + ['Straż Graniczna', 'warszawski zachodni', 'radomski'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -209,7 +209,7 @@ public function testVoivodeshipNullVoivodeshipArrayLicensePlate(): void $licensePlate = $this->faker->licensePlate( true, null, - ['Straż Graniczna', 'warszawski zachodni', 'radomski'] + ['Straż Graniczna', 'warszawski zachodni', 'radomski'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -226,7 +226,7 @@ public function testVoivodeshipNullVoivodeshipLicensePlate(): void $licensePlate = $this->faker->licensePlate( true, [null], - ['Straż Graniczna', 'warszawski zachodni', 'radomski'] + ['Straż Graniczna', 'warszawski zachodni', 'radomski'], ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -243,7 +243,7 @@ public function testVoivodeship1stArgumentFalse(): void $licensePlate = $this->faker->licensePlate( false, ['mazowieckie', 'services'], - null + null, ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); @@ -260,7 +260,7 @@ public function testVoivodeship1stArgumentTrue(): void $licensePlate = $this->faker->licensePlate( true, ['services'], - null + null, ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); diff --git a/test/Faker/Provider/pt_BR/TextTest.php b/test/Faker/Provider/pt_BR/TextTest.php index 1f15f91cfb..42fb91e422 100644 --- a/test/Faker/Provider/pt_BR/TextTest.php +++ b/test/Faker/Provider/pt_BR/TextTest.php @@ -29,32 +29,32 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'Uma noite destas.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas, ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas, ']), ); self::assertSame( 'Uma noite destas.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas— ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas— ']), ); self::assertSame( 'Uma noite destas.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas,']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas,']), ); self::assertSame( 'Uma noite destas!.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas! ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas! ']), ); self::assertSame( 'Uma noite destas.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas: ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas: ']), ); self::assertSame( 'Uma noite destas.', - $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas; ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['Uma noite destas; ']), ); } } diff --git a/test/Faker/Provider/ro_RO/PersonTest.php b/test/Faker/Provider/ro_RO/PersonTest.php index 68c938d4cf..681b93a2d1 100644 --- a/test/Faker/Provider/ro_RO/PersonTest.php +++ b/test/Faker/Provider/ro_RO/PersonTest.php @@ -81,7 +81,7 @@ public function testAllRandomReturnsValidCnp(): void $cnp = $this->faker->cnp; self::assertTrue( $this->isValidCnp($cnp), - sprintf("Invalid CNP '%' generated", $cnp) + sprintf("Invalid CNP '%' generated", $cnp), ); } @@ -90,13 +90,13 @@ public function testValidGenderReturnsValidCnp(): void $cnp = $this->faker->cnp(Person::GENDER_MALE); self::assertTrue( $this->isValidMaleCnp($cnp), - sprintf("Invalid CNP '%' generated for '%s' gender", $cnp, Person::GENDER_MALE) + sprintf("Invalid CNP '%' generated for '%s' gender", $cnp, Person::GENDER_MALE), ); $cnp = $this->faker->cnp(Person::GENDER_FEMALE); self::assertTrue( $this->isValidFemaleCnp($cnp), - sprintf("Invalid CNP '%' generated for '%s' gender", $cnp, Person::GENDER_FEMALE) + sprintf("Invalid CNP '%' generated for '%s' gender", $cnp, Person::GENDER_FEMALE), ); } @@ -121,7 +121,7 @@ public function testValidYearReturnsValidCnp($value): void $cnp = $this->faker->cnp(null, $value); self::assertTrue( $this->isValidCnp($cnp), - sprintf("Invalid CNP '%' generated for valid year '%s'", $cnp, $value) + sprintf("Invalid CNP '%' generated for valid year '%s'", $cnp, $value), ); } @@ -146,7 +146,7 @@ public function testValidCountyCodeReturnsValidCnp($value): void $cnp = $this->faker->cnp(null, null, $value); self::assertTrue( $this->isValidCnp($cnp), - sprintf("Invalid CNP '%' generated for valid year '%s'", $cnp, $value) + sprintf("Invalid CNP '%' generated for valid year '%s'", $cnp, $value), ); } @@ -166,12 +166,12 @@ public function testNonResidentReturnsValidCnp(): void $cnp = $this->faker->cnp(null, null, null, false); self::assertTrue( $this->isValidCnp($cnp), - sprintf("Invalid CNP '%' generated for non resident", $cnp) + sprintf("Invalid CNP '%' generated for non resident", $cnp), ); self::assertStringStartsWith( '9', $cnp, - sprintf("Invalid CNP '%' generated for non resident (should start with 9)", $cnp) + sprintf("Invalid CNP '%' generated for non resident (should start with 9)", $cnp), ); } @@ -190,7 +190,7 @@ public function testValidInputDataReturnsValidCnp($gender, $dateOfBirth, $county self::assertStringStartsWith( $expectedCnpStart, $cnp, - sprintf("Invalid CNP '%' generated for non valid data", $cnp) + sprintf("Invalid CNP '%' generated for non valid data", $cnp), ); } diff --git a/test/Faker/Provider/ru_RU/CompanyTest.php b/test/Faker/Provider/ru_RU/CompanyTest.php index c9dc9f48c1..49bb74495e 100644 --- a/test/Faker/Provider/ru_RU/CompanyTest.php +++ b/test/Faker/Provider/ru_RU/CompanyTest.php @@ -32,7 +32,7 @@ public function testCatchPhrase(): void self::assertGreaterThanOrEqual( 3, count(explode(' ', $this->faker->catchPhrase)), - "'$phrase' - should be contain 3 word" + "'$phrase' - should be contain 3 word", ); } diff --git a/test/Faker/Provider/ru_RU/TextTest.php b/test/Faker/Provider/ru_RU/TextTest.php index 0c05422f72..4c661a3973 100644 --- a/test/Faker/Provider/ru_RU/TextTest.php +++ b/test/Faker/Provider/ru_RU/TextTest.php @@ -29,32 +29,32 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( 'На другой день Чичиков отправился на обед и вечер.', - $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер ']), ); self::assertSame( 'На другой день Чичиков отправился на обед и вечер.', - $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер—']) + $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер—']), ); self::assertSame( 'На другой день Чичиков отправился на обед и вечер.', - $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер,']) + $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер,']), ); self::assertSame( 'На другой день Чичиков отправился на обед и вечер!.', - $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер! ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер! ']), ); self::assertSame( 'На другой день Чичиков отправился на обед и вечер.', - $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер; ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер; ']), ); self::assertSame( 'На другой день Чичиков отправился на обед и вечер.', - $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер: ']) + $this->getMethod('appendEnd')->invokeArgs(null, ['На другой день Чичиков отправился на обед и вечер: ']), ); } } diff --git a/test/Faker/Provider/uk_UA/AddressTest.php b/test/Faker/Provider/uk_UA/AddressTest.php index fb9e6d256e..146ac71aa7 100644 --- a/test/Faker/Provider/uk_UA/AddressTest.php +++ b/test/Faker/Provider/uk_UA/AddressTest.php @@ -31,7 +31,7 @@ public function testStreetCyrOnly(): void self::assertSame( preg_match($pattern, $streetName), 1, - 'Street name ' . $streetName . ' is wrong!' + 'Street name ' . $streetName . ' is wrong!', ); } @@ -42,7 +42,7 @@ public function testCityNameCyrOnly(): void self::assertSame( preg_match($pattern, $city), 1, - 'City name ' . $city . ' is wrong!' + 'City name ' . $city . ' is wrong!', ); } @@ -53,7 +53,7 @@ public function testRegionNameCyrOnly(): void self::assertSame( preg_match($pattern, $regionName), 1, - 'Region name ' . $regionName . ' is wrong!' + 'Region name ' . $regionName . ' is wrong!', ); } @@ -64,7 +64,7 @@ public function testCountryCyrOnly(): void self::assertSame( preg_match($pattern, $country), 1, - 'Country name ' . $country . ' is wrong!' + 'Country name ' . $country . ' is wrong!', ); } diff --git a/test/Faker/Provider/uk_UA/PhoneNumberTest.php b/test/Faker/Provider/uk_UA/PhoneNumberTest.php index 1bd22271c7..15e1dfac59 100644 --- a/test/Faker/Provider/uk_UA/PhoneNumberTest.php +++ b/test/Faker/Provider/uk_UA/PhoneNumberTest.php @@ -17,7 +17,7 @@ public function testPhoneNumberFormat(): void self::assertSame( preg_match($pattern, $phoneNumber), 1, - 'Phone number format ' . $phoneNumber . ' is wrong!' + 'Phone number format ' . $phoneNumber . ' is wrong!', ); } @@ -28,7 +28,7 @@ public function testE164PhoneNumberFormat(): void self::assertSame( preg_match($pattern, $phoneNumber), 1, - 'Phone number format ' . $phoneNumber . ' is wrong!' + 'Phone number format ' . $phoneNumber . ' is wrong!', ); } diff --git a/test/Faker/Provider/zh_TW/TextTest.php b/test/Faker/Provider/zh_TW/TextTest.php index e839c8cc97..53ef81cbd4 100644 --- a/test/Faker/Provider/zh_TW/TextTest.php +++ b/test/Faker/Provider/zh_TW/TextTest.php @@ -29,12 +29,12 @@ public function testItShouldExplodeTheStringToArray(): void { self::assertSame( ['中', '文', '測', '試', '真', '有', '趣'], - $this->getMethod('explode')->invokeArgs(null, ['中文測試真有趣']) + $this->getMethod('explode')->invokeArgs(null, ['中文測試真有趣']), ); self::assertSame( ['標', '點', ',', '符', '號', '!'], - $this->getMethod('explode')->invokeArgs(null, ['標點,符號!']) + $this->getMethod('explode')->invokeArgs(null, ['標點,符號!']), ); } @@ -42,7 +42,7 @@ public function testItShouldReturnTheStringLength(): void { self::assertContains( $this->getMethod('strlen')->invokeArgs(null, ['中文測試真有趣']), - [7, 21] + [7, 21], ); } @@ -63,17 +63,17 @@ public function testItShouldAppendEndPunctToTheEndOfString(): void { self::assertSame( '中文測試真有趣。', - $this->getMethod('appendEnd')->invokeArgs(null, ['中文測試真有趣']) + $this->getMethod('appendEnd')->invokeArgs(null, ['中文測試真有趣']), ); self::assertSame( '中文測試真有趣。', - $this->getMethod('appendEnd')->invokeArgs(null, ['中文測試真有趣,']) + $this->getMethod('appendEnd')->invokeArgs(null, ['中文測試真有趣,']), ); self::assertSame( '中文測試真有趣!', - $this->getMethod('appendEnd')->invokeArgs(null, ['中文測試真有趣!']) + $this->getMethod('appendEnd')->invokeArgs(null, ['中文測試真有趣!']), ); } } From 7e2cd057025ac14f05f9fad9721e5409d708a580 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 18:59:14 +0100 Subject: [PATCH 047/229] Fix: Command for generating the baseline for vimeo/psalm (#559) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f9f5d44b91..344effaec7 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ static: vendor ## Runs static analyzers .PHONY: baseline baseline: vendor ## Generate baseline files vendor/bin/phpstan --generate-baseline - vendor/bin/psalm --update-baseline + vendor/bin/psalm --set-baseline=psalm.baseline.xml .PHONY: clean clean: ## Cleans up build and vendor files From 5fbf8d25deec1b10de1d58f61458572a971db251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 19:52:49 +0100 Subject: [PATCH 048/229] Fix: Use Xdebug instead of pcov for collecting code coverage (#561) --- .github/workflows/code-coverage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index ede5bbdadf..bd2f4d24cd 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -25,7 +25,7 @@ jobs: - name: "Install PHP with extensions" uses: "shivammathur/setup-php@v2" with: - coverage: "pcov" + coverage: "xdebug" extensions: "intl" php-version: "${{ matrix.php-version }}" From 3e36dc50af55bc48f8e5828926183c7c51d6da89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 7 Dec 2022 19:53:13 +0100 Subject: [PATCH 049/229] Enhancement: Update `phpstan/phpstan` (#556) * Enhancement: Update phpstan/phpstan * Fix: Run 'make baseline' --- phpstan-baseline.neon | 226 +++++++++++++++++++++++++------ vendor-bin/phpstan/composer.json | 6 +- vendor-bin/phpstan/composer.lock | 69 +++++----- 3 files changed, 221 insertions(+), 80 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index fd3a5acbca..c7d09ed526 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -5,6 +5,21 @@ parameters: count: 1 path: src/Faker/Calculator/Iban.php + - + message: "#^Parameter \\#2 \\$callback of function preg_replace_callback expects callable\\(array\\\\)\\: string, array\\{'self', 'alphaToNumberCallba…'\\} given\\.$#" + count: 1 + path: src/Faker/Calculator/Iban.php + + - + message: "#^Static method Faker\\\\Calculator\\\\Iban\\:\\:alphaToNumberCallback\\(\\) is unused\\.$#" + count: 1 + path: src/Faker/Calculator/Iban.php + + - + message: "#^Binary operation \"\\*\" between int and string results in an error\\.$#" + count: 1 + path: src/Faker/Calculator/Isbn.php + - message: "#^Binary operation \"\\*\" between string and 2 results in an error\\.$#" count: 1 @@ -65,16 +80,6 @@ parameters: count: 1 path: src/Faker/ORM/CakePHP/Populator.php - - - message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$fieldMappings\\.$#" - count: 2 - path: src/Faker/ORM/Doctrine/ColumnTypeGuesser.php - - - - message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$fieldMappings\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$reflFields\\.$#" count: 2 @@ -141,17 +146,17 @@ parameters: path: src/Faker/ORM/Mandango/EntityPopulator.php - - message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\EntityPopulator\\:\\:execute\\(\\) has invalid typehint type Mandango\\\\Mandango\\.$#" + message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\EntityPopulator\\:\\:execute\\(\\) has invalid type Mandango\\\\Mandango\\.$#" count: 1 path: src/Faker/ORM/Mandango/EntityPopulator.php - - message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\EntityPopulator\\:\\:guessColumnFormatters\\(\\) has invalid typehint type Mandango\\\\Mandango\\.$#" + message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\EntityPopulator\\:\\:guessColumnFormatters\\(\\) has invalid type Mandango\\\\Mandango\\.$#" count: 1 path: src/Faker/ORM/Mandango/EntityPopulator.php - - message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\Populator\\:\\:__construct\\(\\) has invalid typehint type Mandango\\\\Mandango\\.$#" + message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\Populator\\:\\:__construct\\(\\) has invalid type Mandango\\\\Mandango\\.$#" count: 1 path: src/Faker/ORM/Mandango/Populator.php @@ -296,7 +301,7 @@ parameters: path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - message: "#^Parameter \\$column of method Faker\\\\ORM\\\\Propel\\\\ColumnTypeGuesser\\:\\:guessFormat\\(\\) has invalid typehint type ColumnMap\\.$#" + message: "#^Parameter \\$column of method Faker\\\\ORM\\\\Propel\\\\ColumnTypeGuesser\\:\\:guessFormat\\(\\) has invalid type ColumnMap\\.$#" count: 1 path: src/Faker/ORM/Propel/ColumnTypeGuesser.php @@ -311,7 +316,7 @@ parameters: path: src/Faker/ORM/Propel/EntityPopulator.php - - message: "#^Parameter \\$columnMap of method Faker\\\\ORM\\\\Propel\\\\EntityPopulator\\:\\:isColumnBehavior\\(\\) has invalid typehint type ColumnMap\\.$#" + message: "#^Parameter \\$columnMap of method Faker\\\\ORM\\\\Propel\\\\EntityPopulator\\:\\:isColumnBehavior\\(\\) has invalid type ColumnMap\\.$#" count: 1 path: src/Faker/ORM/Propel/EntityPopulator.php @@ -341,7 +346,7 @@ parameters: path: src/Faker/ORM/Propel/Populator.php - - message: "#^Parameter \\$con of method Faker\\\\ORM\\\\Propel\\\\Populator\\:\\:execute\\(\\) has invalid typehint type Faker\\\\ORM\\\\Propel\\\\PropelPDO\\.$#" + message: "#^Parameter \\$con of method Faker\\\\ORM\\\\Propel\\\\Populator\\:\\:execute\\(\\) has invalid type Faker\\\\ORM\\\\Propel\\\\PropelPDO\\.$#" count: 1 path: src/Faker/ORM/Propel/Populator.php @@ -491,7 +496,7 @@ parameters: path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - message: "#^Parameter \\$column of method Faker\\\\ORM\\\\Propel2\\\\ColumnTypeGuesser\\:\\:guessFormat\\(\\) has invalid typehint type Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" + message: "#^Parameter \\$column of method Faker\\\\ORM\\\\Propel2\\\\ColumnTypeGuesser\\:\\:guessFormat\\(\\) has invalid type Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" count: 1 path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php @@ -506,7 +511,7 @@ parameters: path: src/Faker/ORM/Propel2/EntityPopulator.php - - message: "#^Parameter \\$columnMap of method Faker\\\\ORM\\\\Propel2\\\\EntityPopulator\\:\\:isColumnBehavior\\(\\) has invalid typehint type Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" + message: "#^Parameter \\$columnMap of method Faker\\\\ORM\\\\Propel2\\\\EntityPopulator\\:\\:isColumnBehavior\\(\\) has invalid type Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" count: 1 path: src/Faker/ORM/Propel2/EntityPopulator.php @@ -536,7 +541,7 @@ parameters: path: src/Faker/ORM/Propel2/Populator.php - - message: "#^Parameter \\$con of method Faker\\\\ORM\\\\Propel2\\\\Populator\\:\\:execute\\(\\) has invalid typehint type Faker\\\\ORM\\\\Propel2\\\\PropelPDO\\.$#" + message: "#^Parameter \\$con of method Faker\\\\ORM\\\\Propel2\\\\Populator\\:\\:execute\\(\\) has invalid type Faker\\\\ORM\\\\Propel2\\\\PropelPDO\\.$#" count: 1 path: src/Faker/ORM/Propel2/Populator.php @@ -586,12 +591,12 @@ parameters: path: src/Faker/ORM/Spot/EntityPopulator.php - - message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:__construct\\(\\) has invalid typehint type Spot\\\\Locator\\.$#" + message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:__construct\\(\\) has invalid type Spot\\\\Locator\\.$#" count: 1 path: src/Faker/ORM/Spot/EntityPopulator.php - - message: "#^Parameter \\$mapper of method Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:__construct\\(\\) has invalid typehint type Spot\\\\Mapper\\.$#" + message: "#^Parameter \\$mapper of method Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:__construct\\(\\) has invalid type Spot\\\\Mapper\\.$#" count: 1 path: src/Faker/ORM/Spot/EntityPopulator.php @@ -606,12 +611,12 @@ parameters: path: src/Faker/ORM/Spot/EntityPopulator.php - - message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\Populator\\:\\:__construct\\(\\) has invalid typehint type Spot\\\\Locator\\.$#" + message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\Populator\\:\\:__construct\\(\\) has invalid type Spot\\\\Locator\\.$#" count: 1 path: src/Faker/ORM/Spot/Populator.php - - message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\Populator\\:\\:execute\\(\\) has invalid typehint type Spot\\\\Locator\\.$#" + message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\Populator\\:\\:execute\\(\\) has invalid type Spot\\\\Locator\\.$#" count: 1 path: src/Faker/ORM/Spot/Populator.php @@ -621,11 +626,10 @@ parameters: path: src/Faker/Provider/Base.php - - message: - """ - #^Instantiation of deprecated class Faker\\\\DefaultGenerator\\: - Use ChanceGenerator instead$# - """ + message: """ + #^Instantiation of deprecated class Faker\\\\DefaultGenerator\\: + Use ChanceGenerator instead$# + """ count: 1 path: src/Faker/Provider/Base.php @@ -640,7 +644,7 @@ parameters: path: src/Faker/Provider/Base.php - - message: "#^Parameter \\$validator of method Faker\\\\Provider\\\\Base\\:\\:valid\\(\\) has invalid typehint type Faker\\\\Provider\\\\Closure\\.$#" + message: "#^Parameter \\$validator of method Faker\\\\Provider\\\\Base\\:\\:valid\\(\\) has invalid type Faker\\\\Provider\\\\Closure\\.$#" count: 1 path: src/Faker/Provider/Base.php @@ -659,6 +663,21 @@ parameters: count: 1 path: src/Faker/Provider/Base.php + - + message: "#^Method Faker\\\\Provider\\\\DateTime\\:\\:resolveTimezone\\(\\) never returns null so it can be removed from the return type\\.$#" + count: 1 + path: src/Faker/Provider/DateTime.php + + - + message: "#^Unsafe call to private method Faker\\\\Provider\\\\DateTime\\:\\:resolveTimezone\\(\\) through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/DateTime.php + + - + message: "#^Unsafe call to private method Faker\\\\Provider\\\\DateTime\\:\\:setTimezone\\(\\) through static\\:\\:\\.$#" + count: 3 + path: src/Faker/Provider/DateTime.php + - message: "#^Method Faker\\\\Provider\\\\File\\:\\:file\\(\\) should return string but returns false\\.$#" count: 1 @@ -684,11 +703,31 @@ parameters: count: 1 path: src/Faker/Provider/PhoneNumber.php + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\ar_EG\\\\Person\\:\\:\\$prefix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/ar_EG/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\ar_JO\\\\Person\\:\\:\\$prefix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/ar_JO/Person.php + - message: "#^Access to an undefined static property static\\(Faker\\\\Provider\\\\ar_SA\\\\Address\\)\\:\\:\\$cityPrefix\\.$#" count: 1 path: src/Faker/Provider/ar_SA/Address.php + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\ar_SA\\\\Person\\:\\:\\$prefix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/ar_SA/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\cs_CZ\\\\Address\\:\\:\\$regions through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/cs_CZ/Address.php + - message: "#^Binary operation \"\\*\" between 2\\|3\\|4\\|5\\|6\\|7\\|8 and string results in an error\\.$#" count: 1 @@ -704,6 +743,36 @@ parameters: count: 2 path: src/Faker/Provider/cs_CZ/Person.php + - + message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateBranchTraderVatNumber\\(\\) through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/en_GB/Company.php + + - + message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateGovernmentVatNumber\\(\\) through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/en_GB/Company.php + + - + message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateHealthAuthorityVatNumber\\(\\) through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/en_GB/Company.php + + - + message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateStandardVatNumber\\(\\) through static\\:\\:\\.$#" + count: 2 + path: src/Faker/Provider/en_GB/Company.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\en_NG\\\\Address\\:\\:\\$county through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/en_NG/Address.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\en_NG\\\\Address\\:\\:\\$regions through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/en_NG/Address.php + - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 @@ -715,22 +784,62 @@ parameters: path: src/Faker/Provider/en_ZA/Person.php - - message: "#^Binary operation \"\\*\" between string and int\\<2, max\\> results in an error\\.$#" + message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_AR\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/es_AR/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_ES\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/es_ES/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_VE\\\\Person\\:\\:\\$nationalityId through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/es_VE/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_VE\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/es_VE/Person.php + + - + message: "#^Binary operation \"\\*\" between string and int\\<2, 10\\> results in an error\\.$#" count: 1 path: src/Faker/Provider/fa_IR/Person.php - - message: "#^Method Faker\\\\Provider\\\\fa_IR\\\\Person\\:\\:createAreaCode\\(\\) never returns int so it can be removed from the return typehint\\.$#" + message: "#^Method Faker\\\\Provider\\\\fa_IR\\\\Person\\:\\:createAreaCode\\(\\) never returns int so it can be removed from the return type\\.$#" count: 1 path: src/Faker/Provider/fa_IR/Person.php - - message: "#^Return typehint of method Faker\\\\Provider\\\\hu_HU\\\\Address\\:\\:localCoordinates\\(\\) has invalid type Faker\\\\Provider\\\\hu_HU\\\\latitude\\.$#" + message: "#^Unsafe access to private property Faker\\\\Provider\\\\fr_FR\\\\Address\\:\\:\\$departments through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/fr_FR/Address.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\fr_FR\\\\Address\\:\\:\\$regions through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/fr_FR/Address.php + + - + message: "#^Method Faker\\\\Provider\\\\hu_HU\\\\Address\\:\\:localCoordinates\\(\\) has invalid return type Faker\\\\Provider\\\\hu_HU\\\\latitude\\.$#" count: 1 path: src/Faker/Provider/hu_HU/Address.php - - message: "#^Binary operation \"\\+\" between string and 40 results in an error\\.$#" + message: "#^Unsafe access to private property Faker\\\\Provider\\\\hu_HU\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/hu_HU/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\hy_AM\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/hy_AM/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\id_ID\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 path: src/Faker/Provider/id_ID/Person.php @@ -739,20 +848,35 @@ parameters: count: 1 path: src/Faker/Provider/is_IS/Person.php + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\it_IT\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/it_IT/Person.php + - message: "#^Call to an undefined static method static\\(Faker\\\\Provider\\\\ja_JP\\\\Text\\)\\:\\:split\\(\\)\\.$#" count: 1 path: src/Faker/Provider/ja_JP/Text.php - - message: "#^Variable \\$companyName might not be defined\\.$#" - count: 2 - path: src/Faker/Provider/nl_NL/Company.php + message: "#^Unsafe access to private property Faker\\\\Provider\\\\lt_LT\\\\Address\\:\\:\\$municipality through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/lt_LT/Address.php - - message: "#^Binary operation \"\\+\" between string and int\\<\\-80, 80\\> results in an error\\.$#" + message: "#^Unsafe access to private property Faker\\\\Provider\\\\ne_NP\\\\Person\\:\\:\\$middleNameFemale through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/pl_PL/Person.php + path: src/Faker/Provider/ne_NP/Person.php + + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\ne_NP\\\\Person\\:\\:\\$middleNameMale through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/ne_NP/Person.php + + - + message: "#^Variable \\$companyName might not be defined\\.$#" + count: 2 + path: src/Faker/Provider/nl_NL/Company.php - message: "#^Call to method format\\(\\) on an unknown class Faker\\\\Provider\\\\pl_PL\\\\DateTime\\.$#" @@ -760,17 +884,27 @@ parameters: path: src/Faker/Provider/pl_PL/Person.php - - message: "#^Parameter \\$birthdate of method Faker\\\\Provider\\\\pl_PL\\\\Person\\:\\:pesel\\(\\) has invalid typehint type Faker\\\\Provider\\\\pl_PL\\\\DateTime\\.$#" + message: "#^Parameter \\$birthdate of method Faker\\\\Provider\\\\pl_PL\\\\Person\\:\\:pesel\\(\\) has invalid type Faker\\\\Provider\\\\pl_PL\\\\DateTime\\.$#" count: 1 path: src/Faker/Provider/pl_PL/Person.php - - message: "#^Binary operation \"\\*\" between string and int results in an error\\.$#" + message: "#^Binary operation \"\\*\" between string and int\\<2, max\\> results in an error\\.$#" count: 1 path: src/Faker/Provider/pt_BR/check_digit.php - - message: "#^Binary operation \"\\*\" between string and int results in an error\\.$#" + message: "#^Unsafe access to private property Faker\\\\Provider\\\\pt_PT\\\\Address\\:\\:\\$cities through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/pt_PT/Address.php + + - + message: "#^Left side of \\|\\| is always true\\.$#" + count: 1 + path: src/Faker/Provider/pt_PT/Person.php + + - + message: "#^Right side of \\|\\| is always false\\.$#" count: 1 path: src/Faker/Provider/pt_PT/Person.php @@ -784,11 +918,21 @@ parameters: count: 1 path: src/Faker/Provider/ru_RU/Company.php + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\sk_SK\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/sk_SK/Person.php + - message: "#^Static call to instance method Faker\\\\Provider\\\\sl_SI\\\\Person\\:\\:lastName\\(\\)\\.$#" count: 2 path: src/Faker/Provider/sl_SI/Person.php + - + message: "#^Unsafe access to private property Faker\\\\Provider\\\\sv_SE\\\\Municipality\\:\\:\\$municipalities through static\\:\\:\\.$#" + count: 1 + path: src/Faker/Provider/sv_SE/Municipality.php + - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 79431630dd..eb5383db74 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -1,9 +1,9 @@ { "require": { "php": "^7.4 || ^8.0", - "phpstan/extension-installer": "^1.1.0", - "phpstan/phpstan": "^0.12.100", - "phpstan/phpstan-deprecation-rules": "^0.12.6" + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0" }, "config": { "platform": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 6cb5008177..49dd3cb76e 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/composer.lock @@ -4,32 +4,31 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7b6c08f79ca08061f5282b0ca46daf3c", + "content-hash": "dd263903d451909e9b09e1824c167f0a", "packages": [ { "name": "phpstan/extension-installer", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051" + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/66c7adc9dfa38b6b5838a9fb728b68a7d8348051", - "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.1 || ^8.0", - "phpstan/phpstan": ">=0.11.6" + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.8.0" }, "require-dev": { - "composer/composer": "^1.8", - "phing/phing": "^2.16.3", + "composer/composer": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12" + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" }, "type": "composer-plugin", "extra": { @@ -47,26 +46,26 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.1.0" + "source": "https://github.com/phpstan/extension-installer/tree/1.2.0" }, - "time": "2020-12-13T13:06:13+00:00" + "time": "2022-10-17T12:59:16+00:00" }, { "name": "phpstan/phpstan", - "version": "0.12.100", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "48236ddf823547081b2b153d1cd2994b784328c3" + "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/48236ddf823547081b2b153d1cd2994b784328c3", - "reference": "48236ddf823547081b2b153d1cd2994b784328c3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d6fdf01c53978b6429f1393ba4afeca39cc68afa", + "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -76,11 +75,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -91,9 +85,13 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.100" + "source": "https://github.com/phpstan/phpstan/tree/1.9.2" }, "funding": [ { @@ -109,36 +107,35 @@ "type": "tidelift" } ], - "time": "2022-11-01T09:52:08+00:00" + "time": "2022-11-10T09:56:11+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "0.12.6", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "46dbd43c2db973d2876d6653e53f5c2cc3a01fbb" + "reference": "e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/46dbd43c2db973d2876d6653e53f5c2cc3a01fbb", - "reference": "46dbd43c2db973d2876d6653e53f5c2cc3a01fbb", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682", + "reference": "e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.60" + "phpstan/phpstan": "^1.0" }, "require-dev": { - "phing/phing": "^2.16.3", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.5.20" + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" }, "type": "phpstan-extension", "extra": { "branch-alias": { - "dev-master": "0.12-dev" + "dev-master": "1.0-dev" }, "phpstan": { "includes": [ @@ -158,9 +155,9 @@ "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/0.12.6" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.0.0" }, - "time": "2020-12-13T10:20:54+00:00" + "time": "2021-09-23T11:02:21+00:00" } ], "packages-dev": [], From cbb36aaae30627e645298215f84dab6c09f80d7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 8 Dec 2022 15:44:54 +0100 Subject: [PATCH 050/229] Fix: Simplify (#564) --- .github/workflows/tests.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5c87b52c54..0731b36c8d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,9 +53,4 @@ jobs: run: "composer update --no-interaction --no-progress --optimize-autoloader" - name: "Run tests" - if: "${{ '8.1' != matrix.php-version }}" run: "./vendor/bin/simple-phpunit" - - - name: "Run tests for php 8.1" - if: "${{ '8.1' == matrix.php-version }}" - run: "SYMFONY_PHPUNIT_VERSION=9.5 ./vendor/bin/simple-phpunit" From 41bd13d646f205a5649d25cfa854e66e64661c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 8 Dec 2022 15:45:17 +0100 Subject: [PATCH 051/229] Fix: Require symfony/phpunit-bridge:^5.4.16 (#565) --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index afdecc773f..895b54c824 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "ext-intl": "*", "bamarni/composer-bin-plugin": "^1.4.1", "doctrine/persistence": "^1.3 || ^2.0", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "symfony/phpunit-bridge": "^5.4.16" }, "autoload": { "psr-4": { From 28baaaac92472848d6bfc526967b70ad481d02b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 8 Dec 2022 16:06:46 +0100 Subject: [PATCH 052/229] Fix: Remove concept of OS from build (#563) --- .github/workflows/code-coverage.yml | 5 ++--- .github/workflows/coding-standards.yml | 12 +++++------- .github/workflows/static-analysis.yml | 10 ++++------ .github/workflows/tests.yml | 11 ++++------- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index bd2f4d24cd..373b0a69ad 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -37,10 +37,9 @@ jobs: uses: "actions/cache@v3" with: path: "${{ steps.composer-cache.outputs.directory }}" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + key: "composer-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- - composer-${{ runner.os }}- + composer-${{ matrix.php-version }}- composer- - name: "Download dependencies" diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yml index 38e6da99e5..9241af8c7c 100644 --- a/.github/workflows/coding-standards.yml +++ b/.github/workflows/coding-standards.yml @@ -37,10 +37,9 @@ jobs: uses: "actions/cache@v3" with: path: "${{ steps.composer-cache.outputs.directory }}" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + key: "composer-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- - composer-${{ runner.os }}- + composer-${{ matrix.php-version }}- composer- - name: "Download dependencies" @@ -52,11 +51,10 @@ jobs: uses: "actions/cache@v3" with: path: ".php_cs.cache" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ github.ref_name }}" + key: "composer-${{ matrix.php-version }}-${{ github.ref_name }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}-main - composer-${{ runner.os }}-${{ matrix.php-version }} - composer-${{ runner.os }}- + composer-${{ matrix.php-version }}-main + composer-${{ matrix.php-version }} composer- - name: "Run php-cs-fixer" diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index ddc9730067..d48102ac20 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -35,10 +35,9 @@ jobs: uses: "actions/cache@v3" with: path: "${{ steps.composer-cache.outputs.directory }}" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + key: "composer-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- - composer-${{ runner.os }}- + composer-${{ matrix.php-version }}- composer- - name: "Download dependencies" @@ -77,10 +76,9 @@ jobs: uses: "actions/cache@v3" with: path: "${{ steps.composer-cache.outputs.directory }}" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + key: "composer-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- - composer-${{ runner.os }}- + composer-${{ matrix.php-version }}- composer- - name: "Download dependencies" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0731b36c8d..633a14943c 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -11,18 +11,16 @@ name: "Tests" jobs: phpunit: - name: "PHPUnit on ${{ matrix.operating-system }} with PHP ${{ matrix.php-version }}" + name: "PHPUnit" strategy: matrix: - operating-system: - - "ubuntu-latest" php-version: - "7.4" - "8.0" - "8.1" - runs-on: "${{ matrix.operating-system }}" + runs-on: "ubuntu-latest" steps: - name: "Checkout code" @@ -43,10 +41,9 @@ jobs: uses: "actions/cache@v3" with: path: "${{ steps.composer-cache.outputs.directory }}" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + key: "composer-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- - composer-${{ runner.os }}- + composer-${{ matrix.php-version }}- composer- - name: "Download dependencies" From 44dc1522522940d15ee73c0e972c59dbb8c73837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=20D=C3=B6hring?= Date: Thu, 8 Dec 2022 16:12:43 +0100 Subject: [PATCH 053/229] Ensure php 8.2 compatibility (#528) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Test against php 8.2 * Fix DateTime century test * Fix generator unique test * Optimize php 8.2 deprecations * Optimize php 8.2 deprecations * Optimize php 8.2 deprecations * Revert "Fix generator unique test" This reverts commit 879bc37c * Revert "Fix DateTime century test" This reverts commit f1e63e11bb5e413b3ef233a42dcdac21c8a6d926. * Fix: Adjust number of allowed deprecations * Fix: Update CHANGELOG.md Co-authored-by: Andreas Möller --- .github/workflows/tests.yml | 1 + CHANGELOG.md | 1 + phpunit.xml.dist | 3 +++ 3 files changed, 5 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 633a14943c..d30f2f6bad 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,6 +19,7 @@ jobs: - "7.4" - "8.0" - "8.1" + - "8.2" runs-on: "ubuntu-latest" diff --git a/CHANGELOG.md b/CHANGELOG.md index 2445daf3f0..c78db20da6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.20.0...main) - Dropped support for PHP 7.1, 7.2, and 7.3 (#543) +- Added support for PHP 8.2 (#528) ## [2022-07-20, v1.20.0](https://github.com/FakerPHP/Faker/compare/v1.19.0..v1.20.0) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index d9104c7b8e..45918edb55 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -9,6 +9,9 @@ columns="max" verbose="true" > + + + ./test/Faker From 8b91d43a49f7954407318ec3bdaf48481cc106f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 8 Dec 2022 16:47:20 +0100 Subject: [PATCH 054/229] Enhancement: Enable protected_to_private fixer (#567) --- .php-cs-fixer.dist.php | 1 + 1 file changed, 1 insertion(+) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 5b3ec3cb7f..baf44fbaeb 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -174,6 +174,7 @@ ], 'phpdoc_var_without_name' => true, 'pow_to_exponentiation' => true, + 'protected_to_private' => true, 'psr_autoloading' => true, 'random_api_migration' => true, 'return_assignment' => true, From ffcf9b724176c6df4ab0c8bdf505185d8f62a41e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 8 Dec 2022 16:49:50 +0100 Subject: [PATCH 055/229] Fix: Avoid using deprecated callable declaration (#566) --- phpstan-baseline.neon | 10 ---------- phpunit.xml.dist | 2 +- src/Faker/Calculator/Iban.php | 18 +++++++----------- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index c7d09ed526..93513469a8 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -5,16 +5,6 @@ parameters: count: 1 path: src/Faker/Calculator/Iban.php - - - message: "#^Parameter \\#2 \\$callback of function preg_replace_callback expects callable\\(array\\\\)\\: string, array\\{'self', 'alphaToNumberCallba…'\\} given\\.$#" - count: 1 - path: src/Faker/Calculator/Iban.php - - - - message: "#^Static method Faker\\\\Calculator\\\\Iban\\:\\:alphaToNumberCallback\\(\\) is unused\\.$#" - count: 1 - path: src/Faker/Calculator/Iban.php - - message: "#^Binary operation \"\\*\" between int and string results in an error\\.$#" count: 1 diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 45918edb55..3ab140cf38 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -10,7 +10,7 @@ verbose="true" > - + diff --git a/src/Faker/Calculator/Iban.php b/src/Faker/Calculator/Iban.php index c8fae24239..b00b18f010 100644 --- a/src/Faker/Calculator/Iban.php +++ b/src/Faker/Calculator/Iban.php @@ -17,7 +17,13 @@ public static function checksum($iban) $checkString = substr($iban, 4) . substr($iban, 0, 2) . '00'; // Replace all letters with their number equivalents - $checkString = preg_replace_callback('/[A-Z]/', ['self', 'alphaToNumberCallback'], $checkString); + $checkString = preg_replace_callback( + '/[A-Z]/', + static function (array $matches): string { + return (string) self::alphaToNumber($matches[0]); + }, + $checkString, + ); // Perform mod 97 and subtract from 98 $checksum = 98 - self::mod97($checkString); @@ -25,16 +31,6 @@ public static function checksum($iban) return str_pad($checksum, 2, '0', STR_PAD_LEFT); } - /** - * @param string $match - * - * @return int - */ - private static function alphaToNumberCallback($match) - { - return self::alphaToNumber($match[0]); - } - /** * Converts letter to number * From c8461d9ec05bf926086d1061358bdd45ee6c074c Mon Sep 17 00:00:00 2001 From: TinaH Date: Thu, 8 Dec 2022 17:03:17 +0100 Subject: [PATCH 056/229] Add Swedish `mobileNumber()` (#491) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Swedish mobileNumber() * Add format reference * php-cs-fixer * Update src/Faker/Provider/sv_SE/PhoneNumber.php Co-authored-by: Andreas Möller * Update src/Faker/Provider/sv_SE/PhoneNumber.php Co-authored-by: Andreas Möller * Update src/Faker/Provider/sv_SE/PhoneNumber.php Co-authored-by: Andreas Möller * Update src/Faker/Provider/sv_SE/PhoneNumber.php Co-authored-by: Andreas Möller * Create sv_SE MobileNumber test * added more patterns and fixed test * str_starts_with php 7.4 Co-authored-by: Andreas Möller --- src/Faker/Provider/sv_SE/PhoneNumber.php | 27 +++++++++++++ test/Faker/Provider/sv_SE/PhoneNumberTest.php | 39 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 test/Faker/Provider/sv_SE/PhoneNumberTest.php diff --git a/src/Faker/Provider/sv_SE/PhoneNumber.php b/src/Faker/Provider/sv_SE/PhoneNumber.php index 01cf15d96d..2d5c588211 100644 --- a/src/Faker/Provider/sv_SE/PhoneNumber.php +++ b/src/Faker/Provider/sv_SE/PhoneNumber.php @@ -2,6 +2,9 @@ namespace Faker\Provider\sv_SE; +/** + * @see https://www.pts.se/sv/bransch/telefoni/nummer-och-adressering/telefoninummerplanen/telefonnummers-struktur/ + */ class PhoneNumber extends \Faker\Provider\PhoneNumber { /** @@ -34,4 +37,28 @@ class PhoneNumber extends \Faker\Provider\PhoneNumber '+46(0)%######', '+46%######', ]; + + /** + * @var array Swedish mobile number formats + */ + protected static array $mobileFormats = [ + '+467########', + '+46(0)7########', + '+46 (0)7## ## ## ##', + '+46 (0)7## ### ###', + '07## ## ## ##', + '07## ### ###', + '07##-## ## ##', + '07##-### ###', + '07# ### ## ##', + '07#-### ## ##', + '07#-#######', + ]; + + public function mobileNumber(): string + { + $format = static::randomElement(static::$mobileFormats); + + return self::numerify($this->generator->parse($format)); + } } diff --git a/test/Faker/Provider/sv_SE/PhoneNumberTest.php b/test/Faker/Provider/sv_SE/PhoneNumberTest.php new file mode 100644 index 0000000000..178667e36e --- /dev/null +++ b/test/Faker/Provider/sv_SE/PhoneNumberTest.php @@ -0,0 +1,39 @@ +faker->mobileNumber; + + self::assertTrue(self::itStartsWithPrefix($number)); + } + } + + protected static function itStartsWithPrefix($number): bool + { + $prefixes = ['+467', '+46(0)7', '+46 (0)7', '+46 (0)7', '07']; + + foreach ($prefixes as $prefix) { + if (strpos($number, (string) $prefix) === 0) { + return true; + } + } + + return false; + } + + protected function getProviders(): iterable + { + yield new PhoneNumber($this->faker); + } +} From 0eb47badfcff6a5003ee21744031a12df9a7927c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 8 Dec 2022 17:04:04 +0100 Subject: [PATCH 057/229] Fix: Require and use phpunit/phpunit (#568) --- .github/workflows/code-coverage.yml | 3 +-- .github/workflows/tests.yml | 2 +- Makefile | 5 ++--- composer.json | 1 + phpunit.xml.dist | 3 +++ 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yml index 373b0a69ad..778f54b30d 100644 --- a/.github/workflows/code-coverage.yml +++ b/.github/workflows/code-coverage.yml @@ -45,11 +45,10 @@ jobs: - name: "Download dependencies" run: | composer update --no-interaction --no-progress --optimize-autoloader - vendor/bin/simple-phpunit install - name: "Collect code coverage with PHPUnit" run: | - vendor/bin/simple-phpunit --coverage-clover=.build/logs/clover.xml + vendor/bin/phpunit --coverage-clover=.build/logs/clover.xml - name: "Send code coverage report to codecov.io" run: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d30f2f6bad..985b1caebf 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -51,4 +51,4 @@ jobs: run: "composer update --no-interaction --no-progress --optimize-autoloader" - name: "Run tests" - run: "./vendor/bin/simple-phpunit" + run: "./vendor/bin/phpunit" diff --git a/Makefile b/Makefile index 344effaec7..d935675e04 100644 --- a/Makefile +++ b/Makefile @@ -14,11 +14,11 @@ cs: vendor ## Fixes coding standard issues with php-cs-fixer .PHONY: coverage coverage: vendor ## Collects coverage with phpunit - vendor/bin/simple-phpunit --coverage-text --coverage-clover=.build/logs/clover.xml + vendor/bin/phpunit --coverage-text --coverage-clover=.build/logs/clover.xml .PHONY: test test: vendor ## Runs tests with phpunit - vendor/bin/simple-phpunit + vendor/bin/phpunit .PHONY: static static: vendor ## Runs static analyzers @@ -37,4 +37,3 @@ clean: ## Cleans up build and vendor files vendor: always composer update --no-interaction composer bin all install --no-interaction - vendor/bin/simple-phpunit install diff --git a/composer.json b/composer.json index 895b54c824..0969fabc34 100644 --- a/composer.json +++ b/composer.json @@ -22,6 +22,7 @@ "ext-intl": "*", "bamarni/composer-bin-plugin": "^1.4.1", "doctrine/persistence": "^1.3 || ^2.0", + "phpunit/phpunit": "^9.5.26", "symfony/phpunit-bridge": "^5.4.16" }, "autoload": { diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 3ab140cf38..1c521356cc 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -9,6 +9,9 @@ columns="max" verbose="true" > + + + From e5e84006c4816d5c0d89f3a42576a20595894558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 8 Dec 2022 22:08:26 +0100 Subject: [PATCH 058/229] Fix: Use .yaml instead of .yml as extension (#569) --- .github/workflows/{bc-check.yml => bc-check.yaml} | 0 .github/workflows/{branch-alias.yml => branch-alias.yaml} | 0 .github/workflows/{code-coverage.yml => code-coverage.yaml} | 0 .github/workflows/{coding-standards.yml => coding-standards.yaml} | 0 .github/workflows/{static-analysis.yml => static-analysis.yaml} | 0 .github/workflows/{tests.yml => tests.yaml} | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{bc-check.yml => bc-check.yaml} (100%) rename .github/workflows/{branch-alias.yml => branch-alias.yaml} (100%) rename .github/workflows/{code-coverage.yml => code-coverage.yaml} (100%) rename .github/workflows/{coding-standards.yml => coding-standards.yaml} (100%) rename .github/workflows/{static-analysis.yml => static-analysis.yaml} (100%) rename .github/workflows/{tests.yml => tests.yaml} (100%) diff --git a/.github/workflows/bc-check.yml b/.github/workflows/bc-check.yaml similarity index 100% rename from .github/workflows/bc-check.yml rename to .github/workflows/bc-check.yaml diff --git a/.github/workflows/branch-alias.yml b/.github/workflows/branch-alias.yaml similarity index 100% rename from .github/workflows/branch-alias.yml rename to .github/workflows/branch-alias.yaml diff --git a/.github/workflows/code-coverage.yml b/.github/workflows/code-coverage.yaml similarity index 100% rename from .github/workflows/code-coverage.yml rename to .github/workflows/code-coverage.yaml diff --git a/.github/workflows/coding-standards.yml b/.github/workflows/coding-standards.yaml similarity index 100% rename from .github/workflows/coding-standards.yml rename to .github/workflows/coding-standards.yaml diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yaml similarity index 100% rename from .github/workflows/static-analysis.yml rename to .github/workflows/static-analysis.yaml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yaml similarity index 100% rename from .github/workflows/tests.yml rename to .github/workflows/tests.yaml From e63e29e464e8ff11bc69e14e80bcfc1fde3b99db Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Tue, 13 Dec 2022 10:12:04 +0100 Subject: [PATCH 059/229] =?UTF-8?q?Fix=20PHP=208.2=20warning:=20Use=20`[st?= =?UTF-8?q?atic::class,=20'=E2=80=A6']`=20instead=20of=20`'static::?= =?UTF-8?q?=E2=80=A6`=20for=20callbacks=20(#570)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix: Use self::class . '::[…]' instead of 'static::[…]' as callbacks (PHP 8.2 warning) * Fix: Use static * Fix: Remove default value * Fix: Adjust number of allowed deprecations * Fix: Run 'make baseline' * Fix: Avoid string concatenation * Fix: Run 'make baseline' Co-authored-by: Andreas Möller --- phpstan-baseline.neon | 10 ++++++++++ phpunit.xml.dist | 2 +- psalm.baseline.xml | 3 +++ src/Faker/Provider/Base.php | 12 ++++++------ src/Faker/Provider/en_CA/Address.php | 4 ++-- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 93513469a8..67c2a8417f 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -633,6 +633,11 @@ parameters: count: 1 path: src/Faker/Provider/Base.php + - + message: "#^Parameter \\#2 \\$callback of function preg_replace_callback expects callable\\(array\\\\)\\: string, array\\{class\\-string\\, 'randomDigit'\\} given\\.$#" + count: 1 + path: src/Faker/Provider/Base.php + - message: "#^Parameter \\$validator of method Faker\\\\Provider\\\\Base\\:\\:valid\\(\\) has invalid type Faker\\\\Provider\\\\Closure\\.$#" count: 1 @@ -733,6 +738,11 @@ parameters: count: 2 path: src/Faker/Provider/cs_CZ/Person.php + - + message: "#^Parameter \\#2 \\$callback of function preg_replace_callback expects callable\\(array\\\\)\\: string, array\\{class\\-string\\, 'randomDigit'\\} given\\.$#" + count: 1 + path: src/Faker/Provider/en_CA/Address.php + - message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateBranchTraderVatNumber\\(\\) through static\\:\\:\\.$#" count: 1 diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 1c521356cc..37222a4ffe 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -13,7 +13,7 @@ - + diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 2a60af42df..7c3b4e8717 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -139,6 +139,9 @@ + + [static::class, 'randomDigit'] + $array diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index 4ff4492a4e..e3713ce0e6 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -363,7 +363,7 @@ public static function shuffleString($string = '', $encoding = 'UTF-8') return implode('', static::shuffleArray($array)); } - private static function replaceWildcard($string, $wildcard = '#', $callback = 'static::randomDigit') + private static function replaceWildcard($string, $wildcard, $callback) { if (($pos = strpos($string, $wildcard)) === false) { return $string; @@ -415,7 +415,7 @@ public static function numerify($string = '###') $string[$toReplace[$i]] = $numbers[$i]; } } - $string = self::replaceWildcard($string, '%', 'static::randomDigitNotNull'); + $string = self::replaceWildcard($string, '%', [static::class, 'randomDigitNotNull']); return $string; } @@ -429,7 +429,7 @@ public static function numerify($string = '###') */ public static function lexify($string = '????') { - return self::replaceWildcard($string, '?', 'static::randomLetter'); + return self::replaceWildcard($string, '?', [static::class, 'randomLetter']); } /** @@ -460,7 +460,7 @@ public static function bothify($string = '## ??') */ public static function asciify($string = '****') { - return preg_replace_callback('/\*/u', 'static::randomAscii', $string); + return preg_replace_callback('/\*/u', [static::class, 'randomAscii'], $string); } /** @@ -532,8 +532,8 @@ public static function regexify($regex = '') return str_replace('.', '\.', $randomElement); }, $regex); // replace \d with number and \w with letter and . with ascii - $regex = preg_replace_callback('/\\\w/', 'static::randomLetter', $regex); - $regex = preg_replace_callback('/\\\d/', 'static::randomDigit', $regex); + $regex = preg_replace_callback('/\\\w/', [static::class, 'randomLetter'], $regex); + $regex = preg_replace_callback('/\\\d/', [static::class, 'randomDigit'], $regex); //replace . with ascii except backslash $regex = preg_replace_callback('/(? Date: Tue, 13 Dec 2022 10:39:00 +0100 Subject: [PATCH 060/229] Fix bc check (#572) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix bc check * Fix: Disable void_return fixer * Fix: Remove return type declaration * Fix: Use long options * Fix: Order Co-authored-by: Andreas Möller --- .github/workflows/bc-check.yaml | 6 +++++- .php-cs-fixer.dist.php | 2 +- src/Faker/Generator.php | 6 +++--- src/Faker/ORM/CakePHP/EntityPopulator.php | 8 ++++---- src/Faker/ORM/Doctrine/EntityPopulator.php | 8 ++++---- src/Faker/ORM/Doctrine/Populator.php | 2 +- src/Faker/ORM/Mandango/EntityPopulator.php | 4 ++-- src/Faker/ORM/Mandango/Populator.php | 2 +- src/Faker/ORM/Propel/EntityPopulator.php | 8 ++++---- src/Faker/ORM/Propel/Populator.php | 2 +- src/Faker/ORM/Propel2/EntityPopulator.php | 8 ++++---- src/Faker/ORM/Propel2/Populator.php | 2 +- src/Faker/ORM/Spot/EntityPopulator.php | 8 ++++---- src/Faker/ORM/Spot/Populator.php | 2 +- src/Faker/Provider/DateTime.php | 2 +- 15 files changed, 37 insertions(+), 33 deletions(-) diff --git a/.github/workflows/bc-check.yaml b/.github/workflows/bc-check.yaml index aa88363fa7..0e01cdafbf 100644 --- a/.github/workflows/bc-check.yaml +++ b/.github/workflows/bc-check.yaml @@ -17,4 +17,8 @@ jobs: uses: "actions/checkout@v3" - name: "Roave BC Check" - uses: "docker://nyholm/roave-bc-check-ga" + uses: "addnab/docker-run-action@v3" + with: + image: "nyholm/roave-bc-check-ga" + options: "--env GITHUB_REPOSITORY=${{ github.repository }} --user 1001 --volume ${{ github.workspace }}:/app" + run: "/entrypoint.sh" diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index baf44fbaeb..2bf12611d8 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -206,6 +206,6 @@ 'property', ], ], - 'void_return' => true, + 'void_return' => false, 'whitespace_after_comma_in_array' => true, ]); diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index 3ae32cb6b8..ec77c08749 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -597,7 +597,7 @@ public function ext(string $id): Extension\Extension return $extension; } - public function addProvider($provider): void + public function addProvider($provider) { array_unshift($this->providers, $provider); @@ -682,7 +682,7 @@ public function valid(?\Closure $validator = null, int $maxRetries = 10000) return new ValidGenerator($this, $validator, $maxRetries); } - public function seed($seed = null): void + public function seed($seed = null) { if ($seed === null) { mt_srand(); @@ -966,7 +966,7 @@ public function __destruct() $this->seed(); } - public function __wakeup(): void + public function __wakeup() { $this->formatters = []; } diff --git a/src/Faker/ORM/CakePHP/EntityPopulator.php b/src/Faker/ORM/CakePHP/EntityPopulator.php index 370fbd5acb..cd9890bd4d 100644 --- a/src/Faker/ORM/CakePHP/EntityPopulator.php +++ b/src/Faker/ORM/CakePHP/EntityPopulator.php @@ -27,17 +27,17 @@ public function __get($name) /** * @param string $name */ - public function __set($name, $value): void + public function __set($name, $value) { $this->{$name} = $value; } - public function mergeColumnFormattersWith($columnFormatters): void + public function mergeColumnFormattersWith($columnFormatters) { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } - public function mergeModifiersWith($modifiers): void + public function mergeModifiersWith($modifiers) { $this->modifiers = array_merge($this->modifiers, $modifiers); } @@ -155,7 +155,7 @@ public function execute($class, $insertedEntities, $options = []) return $entity->{$pk[0]}; } - public function setConnection($name): void + public function setConnection($name) { $this->connectionName = $name; } diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php index 7364c7229e..4792399959 100644 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ b/src/Faker/ORM/Doctrine/EntityPopulator.php @@ -38,7 +38,7 @@ public function getClass() return $this->class->getName(); } - public function setColumnFormatters($columnFormatters): void + public function setColumnFormatters($columnFormatters) { $this->columnFormatters = $columnFormatters; } @@ -51,12 +51,12 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters): void + public function mergeColumnFormattersWith($columnFormatters) { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } - public function setModifiers(array $modifiers): void + public function setModifiers(array $modifiers) { $this->modifiers = $modifiers; } @@ -69,7 +69,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith(array $modifiers): void + public function mergeModifiersWith(array $modifiers) { $this->modifiers = array_merge($this->modifiers, $modifiers); } diff --git a/src/Faker/ORM/Doctrine/Populator.php b/src/Faker/ORM/Doctrine/Populator.php index bf946f7023..1bce6ab47c 100644 --- a/src/Faker/ORM/Doctrine/Populator.php +++ b/src/Faker/ORM/Doctrine/Populator.php @@ -61,7 +61,7 @@ public function __construct(Generator $generator, ObjectManager $manager = null, * @param mixed $entity A Doctrine classname, or a \Faker\ORM\Doctrine\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false): void + public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false) { if (!$entity instanceof \Faker\ORM\Doctrine\EntityPopulator) { if (null === $this->manager) { diff --git a/src/Faker/ORM/Mandango/EntityPopulator.php b/src/Faker/ORM/Mandango/EntityPopulator.php index e89f947fe0..515ab7b659 100644 --- a/src/Faker/ORM/Mandango/EntityPopulator.php +++ b/src/Faker/ORM/Mandango/EntityPopulator.php @@ -29,7 +29,7 @@ public function getClass() return $this->class; } - public function setColumnFormatters($columnFormatters): void + public function setColumnFormatters($columnFormatters) { $this->columnFormatters = $columnFormatters; } @@ -42,7 +42,7 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters): void + public function mergeColumnFormattersWith($columnFormatters) { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } diff --git a/src/Faker/ORM/Mandango/Populator.php b/src/Faker/ORM/Mandango/Populator.php index 3cee6a4c19..de6c3b81ce 100644 --- a/src/Faker/ORM/Mandango/Populator.php +++ b/src/Faker/ORM/Mandango/Populator.php @@ -27,7 +27,7 @@ public function __construct(\Faker\Generator $generator, Mandango $mandango) * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = []): void + public function addEntity($entity, $number, $customColumnFormatters = []) { if (!$entity instanceof \Faker\ORM\Mandango\EntityPopulator) { $entity = new \Faker\ORM\Mandango\EntityPopulator($entity); diff --git a/src/Faker/ORM/Propel/EntityPopulator.php b/src/Faker/ORM/Propel/EntityPopulator.php index 91dd8cb038..f5af75c968 100644 --- a/src/Faker/ORM/Propel/EntityPopulator.php +++ b/src/Faker/ORM/Propel/EntityPopulator.php @@ -29,7 +29,7 @@ public function getClass() return $this->class; } - public function setColumnFormatters($columnFormatters): void + public function setColumnFormatters($columnFormatters) { $this->columnFormatters = $columnFormatters; } @@ -42,7 +42,7 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters): void + public function mergeColumnFormattersWith($columnFormatters) { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } @@ -126,7 +126,7 @@ protected function isColumnBehavior(\ColumnMap $columnMap) return false; } - public function setModifiers($modifiers): void + public function setModifiers($modifiers) { $this->modifiers = $modifiers; } @@ -139,7 +139,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith($modifiers): void + public function mergeModifiersWith($modifiers) { $this->modifiers = array_merge($this->modifiers, $modifiers); } diff --git a/src/Faker/ORM/Propel/Populator.php b/src/Faker/ORM/Propel/Populator.php index aecb028e64..e3d4298107 100644 --- a/src/Faker/ORM/Propel/Populator.php +++ b/src/Faker/ORM/Propel/Populator.php @@ -23,7 +23,7 @@ public function __construct(\Faker\Generator $generator) * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []): void + public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) { if (!$entity instanceof \Faker\ORM\Propel\EntityPopulator) { $entity = new \Faker\ORM\Propel\EntityPopulator($entity); diff --git a/src/Faker/ORM/Propel2/EntityPopulator.php b/src/Faker/ORM/Propel2/EntityPopulator.php index 32e027ff24..44804e37cf 100644 --- a/src/Faker/ORM/Propel2/EntityPopulator.php +++ b/src/Faker/ORM/Propel2/EntityPopulator.php @@ -30,7 +30,7 @@ public function getClass() return $this->class; } - public function setColumnFormatters($columnFormatters): void + public function setColumnFormatters($columnFormatters) { $this->columnFormatters = $columnFormatters; } @@ -43,7 +43,7 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters): void + public function mergeColumnFormattersWith($columnFormatters) { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } @@ -129,7 +129,7 @@ protected function isColumnBehavior(ColumnMap $columnMap) return false; } - public function setModifiers($modifiers): void + public function setModifiers($modifiers) { $this->modifiers = $modifiers; } @@ -142,7 +142,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith($modifiers): void + public function mergeModifiersWith($modifiers) { $this->modifiers = array_merge($this->modifiers, $modifiers); } diff --git a/src/Faker/ORM/Propel2/Populator.php b/src/Faker/ORM/Propel2/Populator.php index a9b3fc6e12..7698f80e9a 100644 --- a/src/Faker/ORM/Propel2/Populator.php +++ b/src/Faker/ORM/Propel2/Populator.php @@ -26,7 +26,7 @@ public function __construct(\Faker\Generator $generator) * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel2\EntityPopulator instance * @param int $number The number of entities to populate */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []): void + public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) { if (!$entity instanceof \Faker\ORM\Propel2\EntityPopulator) { $entity = new \Faker\ORM\Propel2\EntityPopulator($entity); diff --git a/src/Faker/ORM/Spot/EntityPopulator.php b/src/Faker/ORM/Spot/EntityPopulator.php index 1290e83005..b67ae25307 100644 --- a/src/Faker/ORM/Spot/EntityPopulator.php +++ b/src/Faker/ORM/Spot/EntityPopulator.php @@ -60,7 +60,7 @@ public function getMapper() return $this->mapper; } - public function setColumnFormatters($columnFormatters): void + public function setColumnFormatters($columnFormatters) { $this->columnFormatters = $columnFormatters; } @@ -73,12 +73,12 @@ public function getColumnFormatters() return $this->columnFormatters; } - public function mergeColumnFormattersWith($columnFormatters): void + public function mergeColumnFormattersWith($columnFormatters) { $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); } - public function setModifiers(array $modifiers): void + public function setModifiers(array $modifiers) { $this->modifiers = $modifiers; } @@ -91,7 +91,7 @@ public function getModifiers() return $this->modifiers; } - public function mergeModifiersWith(array $modifiers): void + public function mergeModifiersWith(array $modifiers) { $this->modifiers = array_merge($this->modifiers, $modifiers); } diff --git a/src/Faker/ORM/Spot/Populator.php b/src/Faker/ORM/Spot/Populator.php index 8e36607d5b..b321f5c5a4 100644 --- a/src/Faker/ORM/Spot/Populator.php +++ b/src/Faker/ORM/Spot/Populator.php @@ -38,7 +38,7 @@ public function addEntity( $customColumnFormatters = [], $customModifiers = [], $useExistingData = false - ): void { + ) { $mapper = $this->locator->mapper($entityName); if (null === $mapper) { diff --git a/src/Faker/Provider/DateTime.php b/src/Faker/Provider/DateTime.php index 1d57ff45bd..46c3c90fec 100644 --- a/src/Faker/Provider/DateTime.php +++ b/src/Faker/Provider/DateTime.php @@ -356,7 +356,7 @@ private static function setTimezone(\DateTime $dt, $timezone) * * @param string $timezone */ - public static function setDefaultTimezone($timezone = null): void + public static function setDefaultTimezone($timezone = null) { static::$defaultTimezone = $timezone; } From cbe48f7add8c9117ef076512a1947dfaf97e815f Mon Sep 17 00:00:00 2001 From: Oskar Stark Date: Tue, 13 Dec 2022 10:56:18 +0100 Subject: [PATCH 061/229] Enhancement: Add rector config file for easy migration (#542) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Enhancement: Add rector config file for easy migration * Update README.md Co-authored-by: Pierre du Plessis * Update README.md Co-authored-by: Andreas Möller * Update rector-migrate.php Co-authored-by: Andreas Möller * Update README.md Co-authored-by: Andreas Möller * Add workflow * Adjust .gitignore file * Add makre target * Fix * Fix * add all properties * Fix: Use .yaml instead of .yml as extension * Remove not working code * Update rector-migrate.php * Fix: Indentation * Fix: Quote * Fix: Ignore truthy rule for 'on' * Fix: Run 'make cs' * Enhancement: Use array_map() * Fix: Avoid unnecessary imports Co-authored-by: Pierre du Plessis Co-authored-by: Andreas Möller --- .github/dependabot.yml | 12 +++ .github/workflows/rector.yaml | 52 +++++++++++ .gitignore | 1 + Makefile | 4 + README.md | 31 +++++++ rector-migrate.php | 160 ++++++++++++++++++++++++++++++++ vendor-bin/rector/composer.json | 13 +++ vendor-bin/rector/composer.lock | 139 +++++++++++++++++++++++++++ 8 files changed, 412 insertions(+) create mode 100644 .github/workflows/rector.yaml create mode 100644 rector-migrate.php create mode 100644 vendor-bin/rector/composer.json create mode 100644 vendor-bin/rector/composer.lock diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f53d0f2412..baa3fe3b7e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -39,6 +39,18 @@ updates: interval: "monthly" versioning-strategy: "increase" + - commit-message: + include: "scope" + prefix: "composer" + directory: "/vendor-bin/rector" + labels: + - "dependency" + open-pull-requests-limit: 10 + package-ecosystem: "composer" + schedule: + interval: "monthly" + versioning-strategy: "increase" + - commit-message: include: "scope" prefix: "github-actions" diff --git a/.github/workflows/rector.yaml b/.github/workflows/rector.yaml new file mode 100644 index 0000000000..f6f338300a --- /dev/null +++ b/.github/workflows/rector.yaml @@ -0,0 +1,52 @@ +on: # yamllint disable-line rule:truthy + pull_request: ~ + push: + branches: + - "main" + - "[0-9].*" + +name: "Rector" + +jobs: + rector: + name: "Rector" + + runs-on: "ubuntu-latest" + + strategy: + matrix: + php-version: + - "8.1" + + steps: + - name: "Checkout code" + uses: "actions/checkout@v3" + + - name: "Set up PHP" + uses: "shivammathur/setup-php@v2" + with: + coverage: "none" + extensions: "intl" + php-version: "${{ matrix.php-version }}" + + - name: "Determine composer cache directory" + id: "composer-cache" + run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT" + + - name: "Cache dependencies installed with composer" + uses: "actions/cache@v3" + with: + path: "${{ steps.composer-cache.outputs.directory }}" + key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + restore-keys: | + composer-${{ runner.os }}-${{ matrix.php-version }}- + composer-${{ runner.os }}- + composer- + + - name: "Download dependencies" + run: | + composer update --no-interaction --no-progress --optimize-autoloader + composer bin rector install --no-interaction --no-progress --optimize-autoloader + + - name: "Run rector" + run: "vendor/bin/rector process test/ --config=rector-migrate.php --dry-run" diff --git a/.gitignore b/.gitignore index a65c611c9c..1305898a0c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ /vendor-bin/php-cs-fixer/vendor/ /vendor-bin/phpstan/vendor/ /vendor-bin/psalm/vendor/ +/vendor-bin/rector/vendor/ /.php-cs-fixer.cache /composer.lock diff --git a/Makefile b/Makefile index d935675e04..6765bbcffc 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,10 @@ coverage: vendor ## Collects coverage with phpunit test: vendor ## Runs tests with phpunit vendor/bin/phpunit +.PHONY: rector +rector: vendor ## Runs rector + vendor/bin/rector process test/ --config=rector-migrate.php --dry-run + .PHONY: static static: vendor ## Runs static analyzers vendor/bin/phpstan diff --git a/README.md b/README.md index 8958f9847d..c3c199d5c1 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,37 @@ for ($i = 0; $i < 3; $i++) { // 'Orlo Bergstrom' ``` +## Automated refactoring + +If you already used this library with its properties, they are now deprecated and needs to be replaced by their equivalent methods. + +You can use the provided [Rector](https://github.com/rectorphp/rector) config file to automate the work. + +Run + +```bash +composer require --dev rector/rector +``` + +to install `rector/rector`. + +Run + +```bash +vendor/bin/rector process src/ --config vendor/fakerphp/faker/rector-migrate.php +``` + +to run `rector/rector`. + +*Note:* do not forget to replace `src/` with the path to your source directory. + +Another way is to use it in your `rector.php` file: + +```php +$rectorConfig->import('vendor/fakerphp/faker/rector-migrate.php'); +$faker($rectorConfig); +``` + ## License Faker is released under the MIT License. See [`LICENSE`](LICENSE) for details. diff --git a/rector-migrate.php b/rector-migrate.php new file mode 100644 index 0000000000..2839c8b179 --- /dev/null +++ b/rector-migrate.php @@ -0,0 +1,160 @@ +ruleWithConfiguration( + Transform\Rector\Assign\PropertyFetchToMethodCallRector::class, + array_map(static function (string $property): Transform\ValueObject\PropertyFetchToMethodCall { + return new Transform\ValueObject\PropertyFetchToMethodCall( + Generator::class, + $property, + $property, + ); + }, $properties), + ); +}; diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json new file mode 100644 index 0000000000..6cd9a82381 --- /dev/null +++ b/vendor-bin/rector/composer.json @@ -0,0 +1,13 @@ +{ + "require": { + "php": "^8.1", + "rector/rector": "^0.15.0" + }, + "config": { + "platform": { + "php": "8.1.12" + }, + "preferred-install": "dist", + "sort-packages": true + } +} diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock new file mode 100644 index 0000000000..ca0fbed694 --- /dev/null +++ b/vendor-bin/rector/composer.lock @@ -0,0 +1,139 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "be38cafadfc09ca7ff05a317facfa0d5", + "packages": [ + { + "name": "phpstan/phpstan", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d6fdf01c53978b6429f1393ba4afeca39cc68afa", + "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa", + "shasum": "" + }, + "require": { + "php": "^7.2|^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": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.9.2" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2022-11-10T09:56:11+00:00" + }, + { + "name": "rector/rector", + "version": "0.15.0", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "fbfbe499d0fedfac7fe2fed1a55a00bd08f19c91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/fbfbe499d0fedfac7fe2fed1a55a00bd08f19c91", + "reference": "fbfbe499d0fedfac7fe2fed1a55a00bd08f19c91", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.9.2" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-php-parser": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.14-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/0.15.0" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2022-12-04T22:40:18+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "platform-overrides": { + "php": "8.1.12" + }, + "plugin-api-version": "2.3.0" +} From 86e0d67a08bb5092ebc2b7bb5f1e60d26c420663 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Dec 2022 10:23:59 +0000 Subject: [PATCH 062/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#573) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.1.0 to 5.2.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.1.0...5.2.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 88 +++++++++++++++++++++++++++++----- 2 files changed, 76 insertions(+), 14 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 5d1dda31f6..12235a7d3c 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.1.0" + "vimeo/psalm": "^5.2.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index ae14540e94..9f100fd080 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "d606595cc2efeff717a214f5a70ec023", + "content-hash": "7ef4d65909315a1c3a631b095aaa096a", "packages": [ { "name": "amphp/amp", @@ -601,18 +601,79 @@ }, "time": "2022-03-02T22:36:06+00:00" }, + { + "name": "fidry/cpu-core-counter", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "666cb04a02f2801f3b19955fc23c824f9018bf64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/666cb04a02f2801f3b19955fc23c824f9018bf64", + "reference": "666cb04a02f2801f3b19955fc23c824f9018bf64", + "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.4.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2022-12-10T21:26:31+00:00" + }, { "name": "netresearch/jsonmapper", - "version": "v4.0.0", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", "shasum": "" }, "require": { @@ -648,9 +709,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" }, - "time": "2020-12-01T19:48:11+00:00" + "time": "2022-12-08T20:46:14+00:00" }, { "name": "nikic/php-parser", @@ -1983,16 +2044,16 @@ }, { "name": "vimeo/psalm", - "version": "5.1.0", + "version": "5.2.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "4defa177c89397c5e14737a80fe4896584130674" + "reference": "fb685a16df3050d4c18d8a4100fe83abe6458cba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/4defa177c89397c5e14737a80fe4896584130674", - "reference": "4defa177c89397c5e14737a80fe4896584130674", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/fb685a16df3050d4c18d8a4100fe83abe6458cba", + "reference": "fb685a16df3050d4c18d8a4100fe83abe6458cba", "shasum": "" }, "require": { @@ -2011,6 +2072,7 @@ "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.1", "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.13", "openlss/lib-array2xml": "^1.0", @@ -2081,9 +2143,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.1.0" + "source": "https://github.com/vimeo/psalm/tree/5.2.0" }, - "time": "2022-12-02T01:23:35+00:00" + "time": "2022-12-12T08:18:56+00:00" }, { "name": "webmozart/assert", From fc633506c546a92108e7dcb1b9966a2983764afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 13 Dec 2022 12:35:34 +0100 Subject: [PATCH 063/229] Fix: Reference (#574) * Fix: Reference * Enhancement: Use --ansi option * Fix: Do not fail step --- .github/workflows/rector.yaml | 2 +- rector-migrate.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/rector.yaml b/.github/workflows/rector.yaml index f6f338300a..30f02520ea 100644 --- a/.github/workflows/rector.yaml +++ b/.github/workflows/rector.yaml @@ -49,4 +49,4 @@ jobs: composer bin rector install --no-interaction --no-progress --optimize-autoloader - name: "Run rector" - run: "vendor/bin/rector process test/ --config=rector-migrate.php --dry-run" + run: "vendor/bin/rector process test/ --ansi --config=rector-migrate.php --dry-run || true" diff --git a/rector-migrate.php b/rector-migrate.php index 2839c8b179..7d99b570ba 100644 --- a/rector-migrate.php +++ b/rector-migrate.php @@ -2,6 +2,7 @@ declare(strict_types=1); +use Faker\Generator; use Rector\Config; use Rector\Transform; From 6ffc9363ef417c9b37a13c1e5c1e3513c7506522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 13 Dec 2022 13:04:08 +0100 Subject: [PATCH 064/229] Enhancement: Use colors where possible (#575) --- .github/workflows/code-coverage.yaml | 4 ++-- .github/workflows/coding-standards.yaml | 6 +++--- .github/workflows/rector.yaml | 4 ++-- .github/workflows/static-analysis.yaml | 10 +++++----- .github/workflows/tests.yaml | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/code-coverage.yaml b/.github/workflows/code-coverage.yaml index 778f54b30d..d5fdf13ba7 100644 --- a/.github/workflows/code-coverage.yaml +++ b/.github/workflows/code-coverage.yaml @@ -44,11 +44,11 @@ jobs: - name: "Download dependencies" run: | - composer update --no-interaction --no-progress --optimize-autoloader + composer update --ansi --no-interaction --no-progress --optimize-autoloader - name: "Collect code coverage with PHPUnit" run: | - vendor/bin/phpunit --coverage-clover=.build/logs/clover.xml + vendor/bin/phpunit --colors=always --coverage-clover=.build/logs/clover.xml - name: "Send code coverage report to codecov.io" run: | diff --git a/.github/workflows/coding-standards.yaml b/.github/workflows/coding-standards.yaml index 9241af8c7c..a45413bf46 100644 --- a/.github/workflows/coding-standards.yaml +++ b/.github/workflows/coding-standards.yaml @@ -44,8 +44,8 @@ jobs: - name: "Download dependencies" run: | - composer update --no-interaction --no-progress --optimize-autoloader - composer bin php-cs-fixer install --no-interaction --no-progress --optimize-autoloader + composer update --ansi --no-interaction --no-progress --optimize-autoloader + composer bin php-cs-fixer install --ansi --no-interaction --no-progress --optimize-autoloader - name: "Cache cache file for php-cs-fixer" uses: "actions/cache@v3" @@ -59,7 +59,7 @@ jobs: - name: "Run php-cs-fixer" run: | - vendor/bin/php-cs-fixer fix --diff --dry-run --verbose + vendor/bin/php-cs-fixer fix --ansi --diff --dry-run --verbose yamllint: name: "yamllint" diff --git a/.github/workflows/rector.yaml b/.github/workflows/rector.yaml index 30f02520ea..d80d5723d3 100644 --- a/.github/workflows/rector.yaml +++ b/.github/workflows/rector.yaml @@ -45,8 +45,8 @@ jobs: - name: "Download dependencies" run: | - composer update --no-interaction --no-progress --optimize-autoloader - composer bin rector install --no-interaction --no-progress --optimize-autoloader + composer update --ansi --no-interaction --no-progress --optimize-autoloader + composer bin rector install --ansi --no-interaction --no-progress --optimize-autoloader - name: "Run rector" run: "vendor/bin/rector process test/ --ansi --config=rector-migrate.php --dry-run || true" diff --git a/.github/workflows/static-analysis.yaml b/.github/workflows/static-analysis.yaml index d48102ac20..54c28707a3 100644 --- a/.github/workflows/static-analysis.yaml +++ b/.github/workflows/static-analysis.yaml @@ -42,12 +42,12 @@ jobs: - name: "Download dependencies" run: | - composer update --no-interaction --no-progress --optimize-autoloader - composer bin phpstan install --no-interaction --no-progress --optimize-autoloader + composer update --ansi --no-interaction --no-progress --optimize-autoloader + composer bin phpstan install --ansi --no-interaction --no-progress --optimize-autoloader - name: "Run PHPStan" run: | - vendor/bin/phpstan --no-progress + vendor/bin/phpstan --ansi --no-progress psalm: name: "Psalm" @@ -83,8 +83,8 @@ jobs: - name: "Download dependencies" run: | - composer update --no-interaction --no-progress --optimize-autoloader - composer bin psalm install --no-interaction --no-progress --optimize-autoloader + composer update --ansi --no-interaction --no-progress --optimize-autoloader + composer bin psalm install --ansi --no-interaction --no-progress --optimize-autoloader - name: "Run Psalm" run: | diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 985b1caebf..c6974c386d 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -48,7 +48,7 @@ jobs: composer- - name: "Download dependencies" - run: "composer update --no-interaction --no-progress --optimize-autoloader" + run: "composer update --ansi --no-interaction --no-progress --optimize-autoloader" - name: "Run tests" - run: "./vendor/bin/phpunit" + run: "./vendor/bin/phpunit --colors=always" From 6685811803b1955251484efa511bd707d06ddc25 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Dec 2022 12:42:59 +0000 Subject: [PATCH 065/229] Updating branch alias to v1.21 (#500) Co-authored-by: GitHub --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 0969fabc34..9b85ce9d43 100644 --- a/composer.json +++ b/composer.json @@ -55,7 +55,7 @@ }, "extra": { "branch-alias": { - "dev-main": "v1.20-dev" + "dev-main": "v1.21-dev" } } } From 92efad6a967f0b79c499705c69b662f738cc9e4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 13 Dec 2022 14:54:32 +0100 Subject: [PATCH 066/229] Enhancement: Prepare release (#576) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c78db20da6..566ad322c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.20.0...main) +## [2022-12-13, v1.21.0](https://github.com/FakerPHP/Faker/compare/v1.20.0..v1.21.0) + - Dropped support for PHP 7.1, 7.2, and 7.3 (#543) - Added support for PHP 8.2 (#528) From 33afadfd8d823762a5966dc044e99ea60308de6f Mon Sep 17 00:00:00 2001 From: Pierre du Plessis Date: Tue, 13 Dec 2022 16:19:21 +0200 Subject: [PATCH 067/229] Remove invalid config reference in `README.md` (#577) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove invalid config reference in README * Fix: Expand example Co-authored-by: Andreas Möller --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c3c199d5c1..2c6a26843e 100644 --- a/README.md +++ b/README.md @@ -81,11 +81,18 @@ to run `rector/rector`. *Note:* do not forget to replace `src/` with the path to your source directory. -Another way is to use it in your `rector.php` file: +Alternatively, import the configuration in your `rector.php` file: ```php -$rectorConfig->import('vendor/fakerphp/faker/rector-migrate.php'); -$faker($rectorConfig); +import('vendor/fakerphp/faker/rector-migrate.php'); +}; ``` ## License From d571441810ad98f689e86d7cfc8865743aa477e2 Mon Sep 17 00:00:00 2001 From: Pavel Date: Tue, 13 Dec 2022 18:22:28 +0200 Subject: [PATCH 068/229] Remove concept of OS from rector workflow (#579) --- .github/workflows/rector.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/rector.yaml b/.github/workflows/rector.yaml index d80d5723d3..d17e34db07 100644 --- a/.github/workflows/rector.yaml +++ b/.github/workflows/rector.yaml @@ -37,10 +37,9 @@ jobs: uses: "actions/cache@v3" with: path: "${{ steps.composer-cache.outputs.directory }}" - key: "composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" + key: "composer-${{ matrix.php-version }}-${{ hashFiles('composer.*') }}" restore-keys: | - composer-${{ runner.os }}-${{ matrix.php-version }}- - composer-${{ runner.os }}- + composer-${{ matrix.php-version }}- composer- - name: "Download dependencies" From 94959438ababc2440e07fc0c7beffc295e5e497e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jan 2023 20:16:35 +0000 Subject: [PATCH 069/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#589) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.2.0 to 5.4.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.2.0...5.4.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 169 ++++++++++++++++++--------------- 2 files changed, 91 insertions(+), 80 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 12235a7d3c..a002b05e88 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.2.0" + "vimeo/psalm": "^5.4.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 9f100fd080..fc4060272a 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "7ef4d65909315a1c3a631b095aaa096a", + "content-hash": "aaf14d7c1cafab2ec12ad8998a5da979", "packages": [ { "name": "amphp/amp", @@ -603,16 +603,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "0.4.0", + "version": "0.4.1", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "666cb04a02f2801f3b19955fc23c824f9018bf64" + "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/666cb04a02f2801f3b19955fc23c824f9018bf64", - "reference": "666cb04a02f2801f3b19955fc23c824f9018bf64", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/79261cc280aded96d098e1b0e0ba0c4881b432c2", + "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2", "shasum": "" }, "require": { @@ -652,7 +652,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.4.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/0.4.1" }, "funding": [ { @@ -660,7 +660,7 @@ "type": "github" } ], - "time": "2022-12-10T21:26:31+00:00" + "time": "2022-12-16T22:01:02+00:00" }, { "name": "netresearch/jsonmapper", @@ -769,59 +769,6 @@ }, "time": "2022-11-12T15:38:23+00:00" }, - { - "name": "openlss/lib-array2xml", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "LSS": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Bryan Tong", - "email": "bryan@nullivex.com", - "homepage": "https://www.nullivex.com" - }, - { - "name": "Tony Butler", - "email": "spudz76@gmail.com", - "homepage": "https://www.nullivex.com" - } - ], - "description": "Array2XML conversion library credit to lalit.org", - "homepage": "https://www.nullivex.com", - "keywords": [ - "array", - "array conversion", - "xml", - "xml conversion" - ], - "support": { - "issues": "https://github.com/nullivex/lib-array2xml/issues", - "source": "https://github.com/nullivex/lib-array2xml/tree/master" - }, - "time": "2019-03-29T20:06:56+00:00" - }, { "name": "phpdocumentor/reflection-common", "version": "2.2.0", @@ -1151,18 +1098,82 @@ ], "time": "2020-10-26T13:10:38+00:00" }, + { + "name": "spatie/array-to-xml", + "version": "2.17.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", + "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": "^7.4|^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "phpunit/phpunit": "^9.0", + "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/2.17.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-12-26T08:22:07+00:00" + }, { "name": "symfony/console", - "version": "v5.4.16", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef" + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", - "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", + "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", "shasum": "" }, "require": { @@ -1232,7 +1243,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.16" + "source": "https://github.com/symfony/console/tree/v5.4.17" }, "funding": [ { @@ -1248,7 +1259,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T14:09:27+00:00" + "time": "2022-12-28T14:15:31+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1958,16 +1969,16 @@ }, { "name": "symfony/string", - "version": "v5.4.15", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed" + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", - "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "url": "https://api.github.com/repos/symfony/string/zipball/55733a8664b8853b003e70251c58bc8cb2d82a6b", + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b", "shasum": "" }, "require": { @@ -2024,7 +2035,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.15" + "source": "https://github.com/symfony/string/tree/v5.4.17" }, "funding": [ { @@ -2040,20 +2051,20 @@ "type": "tidelift" } ], - "time": "2022-10-05T15:16:54+00:00" + "time": "2022-12-12T15:54:21+00:00" }, { "name": "vimeo/psalm", - "version": "5.2.0", + "version": "5.4.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "fb685a16df3050d4c18d8a4100fe83abe6458cba" + "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/fb685a16df3050d4c18d8a4100fe83abe6458cba", - "reference": "fb685a16df3050d4c18d8a4100fe83abe6458cba", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", + "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", "shasum": "" }, "require": { @@ -2075,9 +2086,9 @@ "fidry/cpu-core-counter": "^0.4.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.13", - "openlss/lib-array2xml": "^1.0", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", "sebastian/diff": "^4.0", + "spatie/array-to-xml": "^2.17.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0", "symfony/polyfill-php80": "^1.25" @@ -2143,9 +2154,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.2.0" + "source": "https://github.com/vimeo/psalm/tree/5.4.0" }, - "time": "2022-12-12T08:18:56+00:00" + "time": "2022-12-19T21:31:12+00:00" }, { "name": "webmozart/assert", From d6c57743fc57c455d72965f95cb851f56f859ca4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jan 2023 21:17:01 +0100 Subject: [PATCH 070/229] composer(deps): bump friendsofphp/php-cs-fixer (#587) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.13.0 to 3.13.1. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.13.0...v3.13.1) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 150 +++++++++++++++++--------- 2 files changed, 100 insertions(+), 52 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 55208850a3..f5c92939c2 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.13.0" + "friendsofphp/php-cs-fixer": "^3.13.1" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 35b7f28419..39874e5354 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "44a6fb6f6db40d9eb55eafdb8d9b11a8", + "content-hash": "846b58ef267fd019a69ebd492fe43918", "packages": [ { "name": "composer/pcre", @@ -226,32 +226,35 @@ }, { "name": "doctrine/annotations", - "version": "1.13.3", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", "vimeo/psalm": "^4.10" }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, "type": "library", "autoload": { "psr-4": { @@ -293,37 +296,82 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" + "source": "https://github.com/doctrine/annotations/tree/1.14.2" + }, + "time": "2022-12-15T06:48:22+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5|^8.5|^9.5", + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } }, - "time": "2022-07-02T10:48:51+00:00" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + }, + "time": "2022-05-02T15:47:09+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -355,7 +403,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -371,20 +419,20 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.13.0", + "version": "v3.13.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1" + "reference": "78d2251dd86b49c609a0fd37c20dcf0a00aea5a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a6232229a8309e8811dc751c28b91cb34b2943e1", - "reference": "a6232229a8309e8811dc751c28b91cb34b2943e1", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/78d2251dd86b49c609a0fd37c20dcf0a00aea5a7", + "reference": "78d2251dd86b49c609a0fd37c20dcf0a00aea5a7", "shasum": "" }, "require": { @@ -452,7 +500,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.1" }, "funding": [ { @@ -460,7 +508,7 @@ "type": "github" } ], - "time": "2022-10-31T19:28:50+00:00" + "time": "2022-12-18T00:47:22+00:00" }, { "name": "psr/cache", @@ -727,16 +775,16 @@ }, { "name": "symfony/console", - "version": "v5.4.16", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef" + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", - "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef", + "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", + "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", "shasum": "" }, "require": { @@ -806,7 +854,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.16" + "source": "https://github.com/symfony/console/tree/v5.4.17" }, "funding": [ { @@ -822,7 +870,7 @@ "type": "tidelift" } ], - "time": "2022-11-25T14:09:27+00:00" + "time": "2022-12-28T14:15:31+00:00" }, { "name": "symfony/deprecation-contracts", @@ -893,16 +941,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.4.9", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", - "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", + "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", "shasum": "" }, "require": { @@ -958,7 +1006,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/v5.4.9" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.17" }, "funding": [ { @@ -974,7 +1022,7 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:45:39+00:00" + "time": "2022-12-12T15:54:21+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1121,16 +1169,16 @@ }, { "name": "symfony/finder", - "version": "v5.4.11", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" + "reference": "40c08632019838dfb3350f18cf5563b8080055fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", + "url": "https://api.github.com/repos/symfony/finder/zipball/40c08632019838dfb3350f18cf5563b8080055fc", + "reference": "40c08632019838dfb3350f18cf5563b8080055fc", "shasum": "" }, "require": { @@ -1164,7 +1212,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.11" + "source": "https://github.com/symfony/finder/tree/v5.4.17" }, "funding": [ { @@ -1180,7 +1228,7 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:37:50+00:00" + "time": "2022-12-22T10:31:03+00:00" }, { "name": "symfony/options-resolver", @@ -2031,16 +2079,16 @@ }, { "name": "symfony/string", - "version": "v5.4.15", + "version": "v5.4.17", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed" + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", - "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed", + "url": "https://api.github.com/repos/symfony/string/zipball/55733a8664b8853b003e70251c58bc8cb2d82a6b", + "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b", "shasum": "" }, "require": { @@ -2097,7 +2145,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.15" + "source": "https://github.com/symfony/string/tree/v5.4.17" }, "funding": [ { @@ -2113,7 +2161,7 @@ "type": "tidelift" } ], - "time": "2022-10-05T15:16:54+00:00" + "time": "2022-12-12T15:54:21+00:00" } ], "packages-dev": [], From 4fa4b47aa519bcf4b5053dc6d6b0ab24a0d3166d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jan 2023 21:19:42 +0100 Subject: [PATCH 071/229] composer(deps): bump rector/rector in /vendor-bin/rector (#590) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.15.0 to 0.15.2. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.15.0...0.15.2) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 6cd9a82381..f135505792 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.15.0" + "rector/rector": "^0.15.2" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index ca0fbed694..34577b208d 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "be38cafadfc09ca7ff05a317facfa0d5", + "content-hash": "7d375d972e72699d30dabfe2d90c91b9", "packages": [ { "name": "phpstan/phpstan", - "version": "1.9.2", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa" + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d6fdf01c53978b6429f1393ba4afeca39cc68afa", - "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2", + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2", "shasum": "" }, "require": { @@ -47,7 +47,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.2" + "source": "https://github.com/phpstan/phpstan/tree/1.9.4" }, "funding": [ { @@ -63,25 +63,25 @@ "type": "tidelift" } ], - "time": "2022-11-10T09:56:11+00:00" + "time": "2022-12-17T13:33:52+00:00" }, { "name": "rector/rector", - "version": "0.15.0", + "version": "0.15.2", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "fbfbe499d0fedfac7fe2fed1a55a00bd08f19c91" + "reference": "5bc89fa73d0be2769e02e49a0e924c95b1842093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/fbfbe499d0fedfac7fe2fed1a55a00bd08f19c91", - "reference": "fbfbe499d0fedfac7fe2fed1a55a00bd08f19c91", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/5bc89fa73d0be2769e02e49a0e924c95b1842093", + "reference": "5bc89fa73d0be2769e02e49a0e924c95b1842093", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.9.2" + "phpstan/phpstan": "^1.9.4" }, "conflict": { "rector/rector-doctrine": "*", @@ -111,7 +111,7 @@ "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.0" + "source": "https://github.com/rectorphp/rector/tree/0.15.2" }, "funding": [ { @@ -119,7 +119,7 @@ "type": "github" } ], - "time": "2022-12-04T22:40:18+00:00" + "time": "2022-12-24T12:55:36+00:00" } ], "packages-dev": [], From dd59120c4214d54a86fde195468cd68f952f8497 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jan 2023 21:25:13 +0100 Subject: [PATCH 072/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#586) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.9.2 to 1.9.4. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.9.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.9.2...1.9.4) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index eb5383db74..1bad060d64 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan": "^1.9.4", "phpstan/phpstan-deprecation-rules": "^1.0.0" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 49dd3cb76e..375232f166 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "dd263903d451909e9b09e1824c167f0a", + "content-hash": "cf80dc054be18640ac3ba5464b698988", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.9.2", + "version": "1.9.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa" + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d6fdf01c53978b6429f1393ba4afeca39cc68afa", - "reference": "d6fdf01c53978b6429f1393ba4afeca39cc68afa", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2", + "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2", "shasum": "" }, "require": { @@ -91,7 +91,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.2" + "source": "https://github.com/phpstan/phpstan/tree/1.9.4" }, "funding": [ { @@ -107,7 +107,7 @@ "type": "tidelift" } ], - "time": "2022-11-10T09:56:11+00:00" + "time": "2022-12-17T13:33:52+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 515eea9fdf9e3550196e8d8b13d66904bb2fce8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jan 2023 21:28:29 +0100 Subject: [PATCH 073/229] composer(deps): bump phpstan/phpstan-deprecation-rules (#588) Bumps [phpstan/phpstan-deprecation-rules](https://github.com/phpstan/phpstan-deprecation-rules) from 1.0.0 to 1.1.1. - [Release notes](https://github.com/phpstan/phpstan-deprecation-rules/releases) - [Commits](https://github.com/phpstan/phpstan-deprecation-rules/compare/1.0.0...1.1.1) --- updated-dependencies: - dependency-name: phpstan/phpstan-deprecation-rules dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 22 ++++++++++------------ 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 1bad060d64..8c745be05c 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -3,7 +3,7 @@ "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-deprecation-rules": "^1.0.0" + "phpstan/phpstan-deprecation-rules": "^1.1.1" }, "config": { "platform": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 375232f166..f4b45c14bc 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "cf80dc054be18640ac3ba5464b698988", + "content-hash": "ddcaab678c093f963f2ebb550b322de8", "packages": [ { "name": "phpstan/extension-installer", @@ -111,32 +111,30 @@ }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682" + "reference": "2c6792eda026d9c474c14aa018aed312686714db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682", - "reference": "e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/2c6792eda026d9c474c14aa018aed312686714db", + "reference": "2c6792eda026d9c474c14aa018aed312686714db", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^1.0" + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.3" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-php-parser": "^1.1", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^9.5" }, "type": "phpstan-extension", "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - }, "phpstan": { "includes": [ "rules.neon" @@ -155,9 +153,9 @@ "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/1.0.0" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.1" }, - "time": "2021-09-23T11:02:21+00:00" + "time": "2022-12-13T14:26:20+00:00" } ], "packages-dev": [], From 14d4f13f2f0fb4905f4b800ae559751ae3df8240 Mon Sep 17 00:00:00 2001 From: Jan Langer Date: Tue, 3 Jan 2023 16:39:41 +0100 Subject: [PATCH 074/229] Removed ${var} usage (#591) --- src/Faker/Provider/cs_CZ/Person.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Faker/Provider/cs_CZ/Person.php b/src/Faker/Provider/cs_CZ/Person.php index 6e2bab1375..64b4e9e0c8 100644 --- a/src/Faker/Provider/cs_CZ/Person.php +++ b/src/Faker/Provider/cs_CZ/Person.php @@ -438,8 +438,8 @@ public function birthNumber($gender = null, $minAge = 0, $maxAge = 100, $slashPr $gender = $this->generator->boolean() ? static::GENDER_MALE : static::GENDER_FEMALE; } - $startTimestamp = strtotime("-${maxAge} year"); - $endTimestamp = strtotime("-${minAge} year"); + $startTimestamp = strtotime(sprintf('-%d year', $maxAge)); + $endTimestamp = strtotime(sprintf('-%d year', $minAge)); $randTimestamp = self::numberBetween($startTimestamp, $endTimestamp); $year = (int) (date('Y', $randTimestamp)); From b47968eca3f1b81a7eedc82ee8741eee2af721a6 Mon Sep 17 00:00:00 2001 From: Joas707 Date: Thu, 5 Jan 2023 15:50:10 +0100 Subject: [PATCH 075/229] Only removed Adolf and Adolph (#584) --- src/Faker/Provider/da_DK/Person.php | 2 +- src/Faker/Provider/de_CH/Person.php | 2 +- src/Faker/Provider/de_DE/Person.php | 2 +- src/Faker/Provider/en_US/Person.php | 2 +- src/Faker/Provider/nb_NO/Person.php | 2 +- src/Faker/Provider/sk_SK/Person.php | 2 +- src/Faker/Provider/sl_SI/Person.php | 2 +- src/Faker/Provider/sv_SE/Person.php | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Faker/Provider/da_DK/Person.php b/src/Faker/Provider/da_DK/Person.php index fa1e89c6c9..732afeb218 100644 --- a/src/Faker/Provider/da_DK/Person.php +++ b/src/Faker/Provider/da_DK/Person.php @@ -36,7 +36,7 @@ class Person extends \Faker\Provider\Person * @var array Danish first names. */ protected static $firstNameMale = [ - 'Aage', 'Adam', 'Adolf', 'Ahmad', 'Ahmed', 'Aksel', 'Albert', 'Alex', 'Alexander', 'Alf', 'Alfred', 'Ali', 'Allan', + 'Aage', 'Adam', 'Ahmad', 'Ahmed', 'Aksel', 'Albert', 'Alex', 'Alexander', 'Alf', 'Alfred', 'Ali', 'Allan', 'Anders', 'Andreas', 'Anker', 'Anton', 'Arne', 'Arnold', 'Arthur', 'Asbjørn', 'Asger', 'August', 'Axel', 'Benjamin', 'Benny', 'Bent', 'Bernhard', 'Birger', 'Bjarne', 'Bjørn', 'Bo', 'Brian', 'Bruno', 'Børge', 'Carl', 'Carlo', 'Carsten', 'Casper', 'Charles', 'Chris', 'Christian', 'Christoffer', 'Christopher', 'Claus', 'Dan', 'Daniel', 'David', 'Dennis', diff --git a/src/Faker/Provider/de_CH/Person.php b/src/Faker/Provider/de_CH/Person.php index 9910b12726..d3ead307da 100644 --- a/src/Faker/Provider/de_CH/Person.php +++ b/src/Faker/Provider/de_CH/Person.php @@ -8,7 +8,7 @@ class Person extends \Faker\Provider\de_DE\Person * @see http://www.bfs.admin.ch/bfs/portal/de/index/themen/01/02/blank/dos/prenoms/02.html */ protected static $firstNameMale = [ - 'Adolf', 'Adrian', 'Alain', 'Albert', 'Alessandro', 'Alex', 'Alexander', 'Alfred', 'Ali', 'Alois', 'Andrea', 'Andreas', 'Andrin', 'André', 'Angelo', 'Anton', 'Antonio', 'Armin', 'Arnold', 'Arthur', + 'Adrian', 'Alain', 'Albert', 'Alessandro', 'Alex', 'Alexander', 'Alfred', 'Ali', 'Alois', 'Andrea', 'Andreas', 'Andrin', 'André', 'Angelo', 'Anton', 'Antonio', 'Armin', 'Arnold', 'Arthur', 'Beat', 'Benjamin', 'Bernhard', 'Bruno', 'Carlo', 'Carlos', 'Christian', 'Christoph', 'Claudio', 'Cyrill', 'Cédric', 'Damian', 'Daniel', 'Dario', 'David', 'Denis', 'Diego', 'Dieter', 'Dominic', 'Dominik', diff --git a/src/Faker/Provider/de_DE/Person.php b/src/Faker/Provider/de_DE/Person.php index 45a0c2e6f9..44f205e062 100644 --- a/src/Faker/Provider/de_DE/Person.php +++ b/src/Faker/Provider/de_DE/Person.php @@ -31,7 +31,7 @@ class Person extends \Faker\Provider\Person * {@link} From https://de.wiktionary.org/wiki/Verzeichnis:Deutsch/Namen/die_h%C3%A4ufigsten_m%C3%A4nnlichen_Vornamen_Deutschlands */ protected static $firstNameMale = [ - 'Achim', 'Adalbert', 'Adam', 'Adolf', 'Adrian', 'Ahmed', 'Ahmet', 'Albert', 'Albin', 'Albrecht', 'Alex', 'Alexander', 'Alfons', 'Alfred', 'Ali', 'Alois', 'Aloys', 'Alwin', 'Anatoli', 'Andre', 'Andreas', 'Andree', 'Andrej', 'Andrzej', 'André', 'Andy', 'Angelo', 'Ansgar', 'Anton', 'Antonio', 'Antonius', 'Armin', 'Arnd', 'Arndt', 'Arne', 'Arno', 'Arnold', 'Arnulf', 'Arthur', 'Artur', 'August', 'Axel', + 'Achim', 'Adalbert', 'Adam', 'Adrian', 'Ahmed', 'Ahmet', 'Albert', 'Albin', 'Albrecht', 'Alex', 'Alexander', 'Alfons', 'Alfred', 'Ali', 'Alois', 'Aloys', 'Alwin', 'Anatoli', 'Andre', 'Andreas', 'Andree', 'Andrej', 'Andrzej', 'André', 'Andy', 'Angelo', 'Ansgar', 'Anton', 'Antonio', 'Antonius', 'Armin', 'Arnd', 'Arndt', 'Arne', 'Arno', 'Arnold', 'Arnulf', 'Arthur', 'Artur', 'August', 'Axel', 'Bastian', 'Benedikt', 'Benjamin', 'Benno', 'Bernard', 'Bernd', 'Berndt', 'Bernhard', 'Bert', 'Berthold', 'Bertram', 'Björn', 'Bodo', 'Bogdan', 'Boris', 'Bruno', 'Burghard', 'Burkhard', 'Carl', 'Carlo', 'Carlos', 'Carsten', 'Christian', 'Christof', 'Christoph', 'Christopher', 'Christos', 'Claudio', 'Claus', 'Claus-Dieter', 'Claus-Peter', 'Clemens', 'Cornelius', 'Daniel', 'Danny', 'Darius', 'David', 'Denis', 'Dennis', 'Detlef', 'Detlev', 'Dierk', 'Dieter', 'Diethard', 'Diethelm', 'Dietmar', 'Dietrich', 'Dimitri', 'Dimitrios', 'Dirk', 'Domenico', 'Dominik', diff --git a/src/Faker/Provider/en_US/Person.php b/src/Faker/Provider/en_US/Person.php index 3c6f99a4fe..5cd22d43e2 100644 --- a/src/Faker/Provider/en_US/Person.php +++ b/src/Faker/Provider/en_US/Person.php @@ -27,7 +27,7 @@ class Person extends \Faker\Provider\Person ]; protected static $firstNameMale = [ - 'Aaron', 'Abdiel', 'Abdul', 'Abdullah', 'Abe', 'Abel', 'Abelardo', 'Abner', 'Abraham', 'Adalberto', 'Adam', 'Adan', 'Adelbert', 'Adolf', 'Adolfo', 'Adolph', 'Adolphus', 'Adonis', 'Adrain', 'Adrian', 'Adriel', 'Adrien', 'Afton', 'Agustin', 'Ahmad', 'Ahmed', 'Aidan', 'Aiden', 'Akeem', 'Al', 'Alan', 'Albert', 'Alberto', 'Albin', 'Alden', 'Alec', 'Alejandrin', 'Alek', 'Alessandro', 'Alex', 'Alexander', 'Alexandre', 'Alexandro', 'Alexie', 'Alexis', 'Alexys', 'Alexzander', 'Alf', 'Alfonso', 'Alfonzo', 'Alford', 'Alfred', 'Alfredo', 'Ali', 'Allan', 'Allen', 'Alphonso', 'Alvah', 'Alvis', 'Amani', 'Amari', 'Ambrose', 'Americo', 'Amir', 'Amos', 'Amparo', 'Anastacio', 'Anderson', 'Andre', 'Andres', 'Andrew', 'Andy', 'Angel', 'Angelo', 'Angus', 'Anibal', 'Ansel', 'Ansley', 'Anthony', 'Antone', 'Antonio', 'Antwan', 'Antwon', 'Arch', 'Archibald', 'Arden', 'Arely', 'Ari', 'Aric', 'Ariel', 'Arjun', 'Arlo', 'Armand', 'Armando', 'Armani', 'Arnaldo', 'Arne', 'Arno', 'Arnold', 'Arnoldo', 'Arnulfo', 'Aron', 'Art', 'Arthur', 'Arturo', 'Arvel', 'Arvid', 'Ashton', 'August', 'Augustus', 'Aurelio', 'Austen', 'Austin', 'Austyn', 'Avery', 'Axel', 'Ayden', + 'Aaron', 'Abdiel', 'Abdul', 'Abdullah', 'Abe', 'Abel', 'Abelardo', 'Abner', 'Abraham', 'Adalberto', 'Adam', 'Adan', 'Adelbert', 'Adolfo', 'Adolphus', 'Adonis', 'Adrain', 'Adrian', 'Adriel', 'Adrien', 'Afton', 'Agustin', 'Ahmad', 'Ahmed', 'Aidan', 'Aiden', 'Akeem', 'Al', 'Alan', 'Albert', 'Alberto', 'Albin', 'Alden', 'Alec', 'Alejandrin', 'Alek', 'Alessandro', 'Alex', 'Alexander', 'Alexandre', 'Alexandro', 'Alexie', 'Alexis', 'Alexys', 'Alexzander', 'Alf', 'Alfonso', 'Alfonzo', 'Alford', 'Alfred', 'Alfredo', 'Ali', 'Allan', 'Allen', 'Alphonso', 'Alvah', 'Alvis', 'Amani', 'Amari', 'Ambrose', 'Americo', 'Amir', 'Amos', 'Amparo', 'Anastacio', 'Anderson', 'Andre', 'Andres', 'Andrew', 'Andy', 'Angel', 'Angelo', 'Angus', 'Anibal', 'Ansel', 'Ansley', 'Anthony', 'Antone', 'Antonio', 'Antwan', 'Antwon', 'Arch', 'Archibald', 'Arden', 'Arely', 'Ari', 'Aric', 'Ariel', 'Arjun', 'Arlo', 'Armand', 'Armando', 'Armani', 'Arnaldo', 'Arne', 'Arno', 'Arnold', 'Arnoldo', 'Arnulfo', 'Aron', 'Art', 'Arthur', 'Arturo', 'Arvel', 'Arvid', 'Ashton', 'August', 'Augustus', 'Aurelio', 'Austen', 'Austin', 'Austyn', 'Avery', 'Axel', 'Ayden', 'Bailey', 'Barney', 'Baron', 'Barrett', 'Barry', 'Bart', 'Bartholome', 'Barton', 'Baylee', 'Beau', 'Bell', 'Ben', 'Benedict', 'Benjamin', 'Bennett', 'Bennie', 'Benny', 'Benton', 'Bernard', 'Bernardo', 'Bernhard', 'Bernie', 'Berry', 'Berta', 'Bertha', 'Bertram', 'Bertrand', 'Bill', 'Billy', 'Blair', 'Blaise', 'Blake', 'Blaze', 'Bo', 'Bobbie', 'Bobby', 'Boris', 'Boyd', 'Brad', 'Braden', 'Bradford', 'Bradley', 'Bradly', 'Brady', 'Braeden', 'Brain', 'Brando', 'Brandon', 'Brandt', 'Brannon', 'Branson', 'Brant', 'Braulio', 'Braxton', 'Brayan', 'Brendan', 'Brenden', 'Brendon', 'Brennan', 'Brennon', 'Brent', 'Bret', 'Brett', 'Brian', 'Brice', 'Brock', 'Broderick', 'Brody', 'Brook', 'Brooks', 'Brown', 'Bruce', 'Bryce', 'Brycen', 'Bryon', 'Buck', 'Bud', 'Buddy', 'Buford', 'Burley', 'Buster', 'Cade', 'Caden', 'Caesar', 'Cale', 'Caleb', 'Camden', 'Cameron', 'Camren', 'Camron', 'Camryn', 'Candelario', 'Candido', 'Carey', 'Carleton', 'Carlo', 'Carlos', 'Carmel', 'Carmelo', 'Carmine', 'Carol', 'Carroll', 'Carson', 'Carter', 'Cary', 'Casey', 'Casimer', 'Casimir', 'Casper', 'Ceasar', 'Cecil', 'Cedrick', 'Celestino', 'Cesar', 'Chad', 'Chadd', 'Chadrick', 'Chaim', 'Chance', 'Chandler', 'Charles', 'Charley', 'Charlie', 'Chase', 'Chauncey', 'Chaz', 'Chelsey', 'Chesley', 'Chester', 'Chet', 'Chris', 'Christ', 'Christian', 'Christop', 'Christophe', 'Christopher', 'Cicero', 'Cielo', 'Clair', 'Clark', 'Claud', 'Claude', 'Clay', 'Clemens', 'Clement', 'Cleo', 'Cletus', 'Cleve', 'Cleveland', 'Clifford', 'Clifton', 'Clint', 'Clinton', 'Clovis', 'Cloyd', 'Clyde', 'Coby', 'Cody', 'Colby', 'Cole', 'Coleman', 'Colin', 'Collin', 'Colt', 'Colten', 'Colton', 'Columbus', 'Conner', 'Connor', 'Conor', 'Conrad', 'Constantin', 'Consuelo', 'Cooper', 'Corbin', 'Cordelia', 'Cordell', 'Cornelius', 'Cornell', 'Cortez', 'Cory', 'Coty', 'Coy', 'Craig', 'Crawford', 'Cristian', 'Cristina', 'Cristobal', 'Cristopher', 'Cruz', 'Cullen', 'Curt', 'Curtis', 'Cyril', 'Cyrus', 'Dagmar', 'Dale', 'Dallas', 'Dallin', 'Dalton', 'Dameon', 'Damian', 'Damien', 'Damion', 'Damon', 'Dan', 'Dane', 'D\'angelo', 'Dangelo', 'Danial', 'Danny', 'Dante', 'Daren', 'Darian', 'Darien', 'Dario', 'Darion', 'Darius', 'Daron', 'Darrel', 'Darrell', 'Darren', 'Darrick', 'Darrin', 'Darrion', 'Darron', 'Darryl', 'Darwin', 'Daryl', 'Dashawn', 'Dave', 'David', 'Davin', 'Davion', 'Davon', 'Davonte', 'Dawson', 'Dax', 'Dayne', 'Dayton', 'Dean', 'Deangelo', 'Declan', 'Dedric', 'Dedrick', 'Dee', 'Deion', 'Dejon', 'Dejuan', 'Delaney', 'Delbert', 'Dell', 'Delmer', 'Demarco', 'Demarcus', 'Demario', 'Demetrius', 'Demond', 'Denis', 'Dennis', 'Deon', 'Deondre', 'Deontae', 'Deonte', 'Dereck', 'Derek', 'Derick', 'Deron', 'Derrick', 'Deshaun', 'Deshawn', 'Desmond', 'Destin', 'Devan', 'Devante', 'Deven', 'Devin', 'Devon', 'Devonte', 'Devyn', 'Dewayne', 'Dewitt', 'Dexter', 'Diamond', 'Diego', 'Dillan', 'Dillon', 'Dimitri', 'Dino', 'Dion', 'Dock', 'Domenic', 'Domenick', 'Domenico', 'Domingo', 'Dominic', 'Don', 'Donald', 'Donato', 'Donavon', 'Donnell', 'Donnie', 'Donny', 'Dorcas', 'Dorian', 'Doris', 'Dorthy', 'Doug', 'Douglas', 'Doyle', 'Drake', 'Dudley', 'Duncan', 'Durward', 'Dustin', 'Dusty', 'Dwight', 'Dylan', diff --git a/src/Faker/Provider/nb_NO/Person.php b/src/Faker/Provider/nb_NO/Person.php index dff5d2dd45..86ce721ba3 100644 --- a/src/Faker/Provider/nb_NO/Person.php +++ b/src/Faker/Provider/nb_NO/Person.php @@ -134,7 +134,7 @@ class Person extends \Faker\Provider\Person 'Abdirahim', 'Abdirahman', 'Abdirashid', 'Abdirizak', 'Abdul', 'Abdulahi', 'Abdulkadir', 'Abdullah', 'Abdullahi', 'Abdulqadir', 'Abdurahman', 'Abed', 'Abel', 'Abid', 'Abraham', 'Absalon', 'Abu', 'Abubakar', 'Adam', 'Adan', 'Adeel', 'Adelheid', 'Adelsten', 'Adem', 'Aden', 'Adham', 'Adi', 'Adil', 'Adis', 'Adler', - 'Admir', 'Adnan', 'Adolf', 'Adrian', 'Afanasi', 'Afrim', 'Afshin', 'Agim', 'Agmund', 'Agnar', 'Agvald', 'Ahmad', + 'Admir', 'Adnan', 'Adrian', 'Afanasi', 'Afrim', 'Afshin', 'Agim', 'Agmund', 'Agnar', 'Agvald', 'Ahmad', 'Ahmed', 'Aiden', 'Ailo', 'Aimar', 'Aime', 'Ajdin', 'Ajmal', 'Akam', 'Akbar', 'Akram', 'Aksel', 'Alain', 'Alan', 'Alban', 'Albert', 'Alberto', 'Albin', 'Albrecht', 'Alejandro', 'Aleksander', 'Alen', 'Alessandro', 'Alex', 'Alexander', 'Alexsander', 'Alf', 'Alfred', 'Algirdas', 'Algot', 'Ali', 'Allan', 'Almar', 'Almas', 'Almaz', diff --git a/src/Faker/Provider/sk_SK/Person.php b/src/Faker/Provider/sk_SK/Person.php index 5f8fe70adf..583759ba4d 100644 --- a/src/Faker/Provider/sk_SK/Person.php +++ b/src/Faker/Provider/sk_SK/Person.php @@ -34,7 +34,7 @@ class Person extends \Faker\Provider\Person 'Vlastimil', 'Boleslav', 'Eduard', 'Jozef', 'Víťazoslav', 'Blahoslav', 'Beňadik', 'Adrián', 'Gabriel', 'Marián', 'Emanuel', 'Miroslav', 'Benjamín', 'Hugo', 'Richard', 'Izidor', 'Zoltán', 'Albert', 'Igor', 'Július', 'Aleš', 'Fedor', 'Rudolf', 'Valér', 'Marcel', 'Ervín', 'Slavomír', 'Vojtech', 'Juraj', 'Marek', 'Jaroslav', 'Žigmund', 'Florián', 'Roland', 'Pankrác', 'Servác', 'Bonifác', 'Svetozár', 'Bernard', - 'Júlia', 'Urban', 'Dušan', 'Viliam', 'Ferdinand', 'Norbert', 'Róbert', 'Medard', 'Zlatko', 'Anton', 'Vasil', 'Vít', 'Adolf', 'Vratislav', + 'Júlia', 'Urban', 'Dušan', 'Viliam', 'Ferdinand', 'Norbert', 'Róbert', 'Medard', 'Zlatko', 'Anton', 'Vasil', 'Vít', 'Vratislav', 'Alfréd', 'Alojz', 'Ján', 'Tadeáš', 'Ladislav', 'Peter', 'Pavol', 'Miloslav', 'Prokop', 'Cyril', 'Metod', 'Patrik', 'Oliver', 'Ivan', 'Kamil', 'Henrich', 'Drahomír', 'Bohuslav', 'Iľja', 'Daniel', 'Vladimír', 'Jakub', 'Krištof', 'Ignác', 'Gustáv', 'Jerguš', 'Dominik', 'Oskar', 'Vavrinec', 'Ľubomír', 'Mojmír', 'Leonard', 'Tichomír', 'Filip', 'Bartolomej', 'Ľudovít', 'Samuel', 'Augustín', 'Belo', 'Oleg', diff --git a/src/Faker/Provider/sl_SI/Person.php b/src/Faker/Provider/sl_SI/Person.php index 08463950a6..20a2946949 100644 --- a/src/Faker/Provider/sl_SI/Person.php +++ b/src/Faker/Provider/sl_SI/Person.php @@ -25,7 +25,7 @@ class Person extends \Faker\Provider\Person * @see http://www.stat.si/doc/vsebina/05/imena/TOPIMENA_SI.xlsx */ protected static $firstNameMale = [ - 'Adam', 'Adolf', 'Albert', 'Albin', 'Aleks', 'Aleksandar', 'Aleksander', 'Aleksej', 'Alen', + 'Adam', 'Albert', 'Albin', 'Aleks', 'Aleksandar', 'Aleksander', 'Aleksej', 'Alen', 'Alex', 'Aleš', 'Aljaž', 'Aljoša', 'Alojz', 'Alojzij', 'Andraž', 'Andrej', 'Anej', 'Anton', 'Anže', 'Avgust', 'Ažbe', 'Benjamin', 'Bernard', 'Bine', 'Blaž', 'Bogdan', 'Bogomir', 'Bojan', 'Bor', 'Boris', 'Borut', 'Boštjan', 'Božidar', 'Branko', 'Brin', 'Bruno', 'Ciril', diff --git a/src/Faker/Provider/sv_SE/Person.php b/src/Faker/Provider/sv_SE/Person.php index c078f6bf8e..a98f0871bf 100644 --- a/src/Faker/Provider/sv_SE/Person.php +++ b/src/Faker/Provider/sv_SE/Person.php @@ -59,7 +59,7 @@ class Person extends \Faker\Provider\Person * @see http://spraakbanken.gu.se/statistik/lbfnamnalf.phtml */ protected static $firstNameMale = [ - 'Abraham', 'Adam', 'Adolf', 'Adrian', 'Agaton', 'Agne', 'Albert', 'Albin', 'Aldor', 'Alex', 'Alexander', 'Alexis', 'Alexius', 'Alf', 'Alfons', 'Alfred', 'Algot', 'Allan', 'Alrik', 'Alvar', 'Alve', 'Amandus', 'Anders', 'André', 'Andreas', 'Anselm', 'Anshelm', 'Antero', 'Anton', 'Antonius', 'Arne', 'Arnold', 'Aron', 'Arthur', 'Artur', 'Arvid', 'Assar', 'Astor', 'August', 'Augustin', 'Axel', + 'Abraham', 'Adam', 'Adrian', 'Agaton', 'Agne', 'Albert', 'Albin', 'Aldor', 'Alex', 'Alexander', 'Alexis', 'Alexius', 'Alf', 'Alfons', 'Alfred', 'Algot', 'Allan', 'Alrik', 'Alvar', 'Alve', 'Amandus', 'Anders', 'André', 'Andreas', 'Anselm', 'Anshelm', 'Antero', 'Anton', 'Antonius', 'Arne', 'Arnold', 'Aron', 'Arthur', 'Artur', 'Arvid', 'Assar', 'Astor', 'August', 'Augustin', 'Axel', 'Bengt', 'Bengt-Göran', 'Bengt-Olof', 'Bengt-Åke', 'Benny', 'Berndt', 'Berne', 'Bernhard', 'Bernt', 'Bert', 'Berth', 'Berthold', 'Bertil', 'Bill', 'Billy', 'Birger', 'Bjarne', 'Björn', 'Bo', 'Boris', 'Bror', 'Bruno', 'Brynolf', 'Börje', 'Carl', 'Carl-Axel', 'Carl-Erik', 'Carl-Gustaf', 'Carl-Gustav', 'Carl-Johan', 'Charles', 'Christer', 'Christian', 'Claes', 'Claes-Göran', 'Clarence', 'Clas', 'Conny', 'Crister', 'Curt', 'Dag', 'Dan', 'Daniel', 'David', 'Dennis', 'Dick', 'Donald', 'Douglas', From 6cbef4f524fb9e25cbae4d255d4882d8957133f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 22:23:14 +0100 Subject: [PATCH 076/229] composer(deps): bump rector/rector in /vendor-bin/rector (#598) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.15.2 to 0.15.10. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.15.2...0.15.10) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index f135505792..27d70f351c 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.15.2" + "rector/rector": "^0.15.10" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 34577b208d..e1dfceec3b 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "7d375d972e72699d30dabfe2d90c91b9", + "content-hash": "2fcf226b6b3bc9453d86409bc5fb1a38", "packages": [ { "name": "phpstan/phpstan", - "version": "1.9.4", + "version": "1.9.14", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2" + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2", - "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58", + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58", "shasum": "" }, "require": { @@ -47,7 +47,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.4" + "source": "https://github.com/phpstan/phpstan/tree/1.9.14" }, "funding": [ { @@ -63,25 +63,25 @@ "type": "tidelift" } ], - "time": "2022-12-17T13:33:52+00:00" + "time": "2023-01-19T10:47:09+00:00" }, { "name": "rector/rector", - "version": "0.15.2", + "version": "0.15.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "5bc89fa73d0be2769e02e49a0e924c95b1842093" + "reference": "000bfb6f7974449399f39e1a210458395b75c887" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/5bc89fa73d0be2769e02e49a0e924c95b1842093", - "reference": "5bc89fa73d0be2769e02e49a0e924c95b1842093", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/000bfb6f7974449399f39e1a210458395b75c887", + "reference": "000bfb6f7974449399f39e1a210458395b75c887", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.9.4" + "phpstan/phpstan": "^1.9.7" }, "conflict": { "rector/rector-doctrine": "*", @@ -111,7 +111,7 @@ "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.2" + "source": "https://github.com/rectorphp/rector/tree/0.15.10" }, "funding": [ { @@ -119,7 +119,7 @@ "type": "github" } ], - "time": "2022-12-24T12:55:36+00:00" + "time": "2023-01-21T14:30:16+00:00" } ], "packages-dev": [], From d945fe70543b40b999c9c8c8718194b119d02394 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 22:23:40 +0100 Subject: [PATCH 077/229] composer(deps): bump friendsofphp/php-cs-fixer (#595) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.13.1 to 3.14.3. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.13.1...v3.14.3) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 153 +++++++++++++------------- 2 files changed, 78 insertions(+), 77 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index f5c92939c2..1c6696eccb 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.13.1" + "friendsofphp/php-cs-fixer": "^3.14.3" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 39874e5354..d5f1ce4a28 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "846b58ef267fd019a69ebd492fe43918", + "content-hash": "d9fa548b182c1225bf9a03ac4f2d2aff", "packages": [ { "name": "composer/pcre", @@ -226,30 +226,30 @@ }, { "name": "doctrine/annotations", - "version": "1.14.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b" + "reference": "d02c9f3742044e17d5fa8d28d8402a2d95c33302" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/ad785217c1e9555a7d6c6c8c9f406395a5e2882b", - "reference": "ad785217c1e9555a7d6c6c8c9f406395a5e2882b", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/d02c9f3742044e17d5fa8d28d8402a2d95c33302", + "reference": "d02c9f3742044e17d5fa8d28d8402a2d95c33302", "shasum": "" }, "require": { - "doctrine/lexer": "^1 || ^2", + "doctrine/lexer": "^2 || ^3", "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", + "php": "^7.2 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "doctrine/cache": "^2.0", + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.0", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/cache": "^5.4 || ^6", "vimeo/psalm": "^4.10" }, "suggest": { @@ -296,9 +296,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.2" + "source": "https://github.com/doctrine/annotations/tree/2.0.0" }, - "time": "2022-12-15T06:48:22+00:00" + "time": "2022-12-19T18:17:20+00:00" }, { "name": "doctrine/deprecations", @@ -423,22 +423,23 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.13.1", + "version": "v3.14.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "78d2251dd86b49c609a0fd37c20dcf0a00aea5a7" + "reference": "b418036b95b4936a33fe906245d3044395935e73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/78d2251dd86b49c609a0fd37c20dcf0a00aea5a7", - "reference": "78d2251dd86b49c609a0fd37c20dcf0a00aea5a7", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b418036b95b4936a33fe906245d3044395935e73", + "reference": "b418036b95b4936a33fe906245d3044395935e73", "shasum": "" }, "require": { - "composer/semver": "^3.2", + "composer/semver": "^3.3", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^1.13", + "doctrine/annotations": "^2", + "doctrine/lexer": "^2 || ^3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", @@ -448,26 +449,26 @@ "symfony/filesystem": "^5.4 || ^6.0", "symfony/finder": "^5.4 || ^6.0", "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php80": "^1.25", - "symfony/polyfill-php81": "^1.25", + "symfony/polyfill-mbstring": "^1.27", + "symfony/polyfill-php80": "^1.27", + "symfony/polyfill-php81": "^1.27", "symfony/process": "^5.4 || ^6.0", "symfony/stopwatch": "^5.4 || ^6.0" }, "require-dev": { "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.0", - "mikey179/vfsstream": "^1.6.10", - "php-coveralls/php-coveralls": "^2.5.2", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.5.3", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.15", + "phpspec/prophecy": "^1.16", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", "phpunitgoodpractices/polyfill": "^1.6", "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.0", + "symfony/phpunit-bridge": "^6.2.3", "symfony/yaml": "^5.4 || ^6.0" }, "suggest": { @@ -500,7 +501,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.13.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.14.3" }, "funding": [ { @@ -508,7 +509,7 @@ "type": "github" } ], - "time": "2022-12-18T00:47:22+00:00" + "time": "2023-01-30T00:24:29+00:00" }, { "name": "psr/cache", @@ -775,16 +776,16 @@ }, { "name": "symfony/console", - "version": "v5.4.17", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" + "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", + "url": "https://api.github.com/repos/symfony/console/zipball/dccb8d251a9017d5994c988b034d3e18aaabf740", + "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740", "shasum": "" }, "require": { @@ -854,7 +855,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.17" + "source": "https://github.com/symfony/console/tree/v5.4.19" }, "funding": [ { @@ -870,7 +871,7 @@ "type": "tidelift" } ], - "time": "2022-12-28T14:15:31+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "symfony/deprecation-contracts", @@ -941,16 +942,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.4.17", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9" + "reference": "abf49cc084c087d94b4cb939c3f3672971784e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", - "reference": "8e18a9d559eb8ebc2220588f1faa726a2fcd31c9", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abf49cc084c087d94b4cb939c3f3672971784e0c", + "reference": "abf49cc084c087d94b4cb939c3f3672971784e0c", "shasum": "" }, "require": { @@ -1006,7 +1007,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/v5.4.17" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.19" }, "funding": [ { @@ -1022,7 +1023,7 @@ "type": "tidelift" } ], - "time": "2022-12-12T15:54:21+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1105,16 +1106,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.13", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "ac09569844a9109a5966b9438fc29113ce77cf51" + "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51", - "reference": "ac09569844a9109a5966b9438fc29113ce77cf51", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/648bfaca6a494f3e22378123bcee2894045dc9d8", + "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8", "shasum": "" }, "require": { @@ -1149,7 +1150,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.13" + "source": "https://github.com/symfony/filesystem/tree/v5.4.19" }, "funding": [ { @@ -1165,20 +1166,20 @@ "type": "tidelift" } ], - "time": "2022-09-21T19:53:16+00:00" + "time": "2023-01-14T19:14:44+00:00" }, { "name": "symfony/finder", - "version": "v5.4.17", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "40c08632019838dfb3350f18cf5563b8080055fc" + "reference": "6071aebf810ad13fe8200c224f36103abb37cf1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/40c08632019838dfb3350f18cf5563b8080055fc", - "reference": "40c08632019838dfb3350f18cf5563b8080055fc", + "url": "https://api.github.com/repos/symfony/finder/zipball/6071aebf810ad13fe8200c224f36103abb37cf1f", + "reference": "6071aebf810ad13fe8200c224f36103abb37cf1f", "shasum": "" }, "require": { @@ -1212,7 +1213,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.17" + "source": "https://github.com/symfony/finder/tree/v5.4.19" }, "funding": [ { @@ -1228,20 +1229,20 @@ "type": "tidelift" } ], - "time": "2022-12-22T10:31:03+00:00" + "time": "2023-01-14T19:14:44+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.11", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690" + "reference": "b03c99236445492f20c61666e8f7e5d388b078e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690", - "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b03c99236445492f20c61666e8f7e5d388b078e5", + "reference": "b03c99236445492f20c61666e8f7e5d388b078e5", "shasum": "" }, "require": { @@ -1281,7 +1282,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.11" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.19" }, "funding": [ { @@ -1297,7 +1298,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1872,16 +1873,16 @@ }, { "name": "symfony/process", - "version": "v5.4.11", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" + "reference": "c5ba874c9b636dbccf761e22ce750e88ec3f55e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", + "url": "https://api.github.com/repos/symfony/process/zipball/c5ba874c9b636dbccf761e22ce750e88ec3f55e1", + "reference": "c5ba874c9b636dbccf761e22ce750e88ec3f55e1", "shasum": "" }, "require": { @@ -1914,7 +1915,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.11" + "source": "https://github.com/symfony/process/tree/v5.4.19" }, "funding": [ { @@ -1930,7 +1931,7 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "symfony/service-contracts", @@ -2017,16 +2018,16 @@ }, { "name": "symfony/stopwatch", - "version": "v5.4.13", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69" + "reference": "bd2b066090fd6a67039371098fa25a84cb2679ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6df7a3effde34d81717bbef4591e5ffe32226d69", - "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/bd2b066090fd6a67039371098fa25a84cb2679ec", + "reference": "bd2b066090fd6a67039371098fa25a84cb2679ec", "shasum": "" }, "require": { @@ -2059,7 +2060,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.13" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.19" }, "funding": [ { @@ -2075,20 +2076,20 @@ "type": "tidelift" } ], - "time": "2022-09-28T13:19:49+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "symfony/string", - "version": "v5.4.17", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b" + "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/55733a8664b8853b003e70251c58bc8cb2d82a6b", - "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b", + "url": "https://api.github.com/repos/symfony/string/zipball/0a01071610fd861cc160dfb7e2682ceec66064cb", + "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb", "shasum": "" }, "require": { @@ -2145,7 +2146,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.17" + "source": "https://github.com/symfony/string/tree/v5.4.19" }, "funding": [ { @@ -2161,7 +2162,7 @@ "type": "tidelift" } ], - "time": "2022-12-12T15:54:21+00:00" + "time": "2023-01-01T08:32:19+00:00" } ], "packages-dev": [], From 5e79037b867984792824e92e30e2f45a87814bb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 22:24:00 +0100 Subject: [PATCH 078/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#596) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.4.0 to 5.6.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.4.0...5.6.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 67 +++++++++++++++++----------------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index a002b05e88..28a09ff425 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.4.0" + "vimeo/psalm": "^5.6.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index fc4060272a..000ff52d9a 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "aaf14d7c1cafab2ec12ad8998a5da979", + "content-hash": "4091b34c846e0ef8490cc231cb60e951", "packages": [ { "name": "amphp/amp", @@ -715,16 +715,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.2", + "version": "v4.15.3", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", - "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", "shasum": "" }, "require": { @@ -765,9 +765,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" }, - "time": "2022-11-12T15:38:23+00:00" + "time": "2023-01-16T22:05:37+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1164,16 +1164,16 @@ }, { "name": "symfony/console", - "version": "v5.4.17", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" + "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", + "url": "https://api.github.com/repos/symfony/console/zipball/dccb8d251a9017d5994c988b034d3e18aaabf740", + "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740", "shasum": "" }, "require": { @@ -1243,7 +1243,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.17" + "source": "https://github.com/symfony/console/tree/v5.4.19" }, "funding": [ { @@ -1259,7 +1259,7 @@ "type": "tidelift" } ], - "time": "2022-12-28T14:15:31+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1330,16 +1330,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.13", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "ac09569844a9109a5966b9438fc29113ce77cf51" + "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51", - "reference": "ac09569844a9109a5966b9438fc29113ce77cf51", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/648bfaca6a494f3e22378123bcee2894045dc9d8", + "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8", "shasum": "" }, "require": { @@ -1374,7 +1374,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.13" + "source": "https://github.com/symfony/filesystem/tree/v5.4.19" }, "funding": [ { @@ -1390,7 +1390,7 @@ "type": "tidelift" } ], - "time": "2022-09-21T19:53:16+00:00" + "time": "2023-01-14T19:14:44+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1969,16 +1969,16 @@ }, { "name": "symfony/string", - "version": "v5.4.17", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b" + "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/55733a8664b8853b003e70251c58bc8cb2d82a6b", - "reference": "55733a8664b8853b003e70251c58bc8cb2d82a6b", + "url": "https://api.github.com/repos/symfony/string/zipball/0a01071610fd861cc160dfb7e2682ceec66064cb", + "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb", "shasum": "" }, "require": { @@ -2035,7 +2035,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.17" + "source": "https://github.com/symfony/string/tree/v5.4.19" }, "funding": [ { @@ -2051,20 +2051,20 @@ "type": "tidelift" } ], - "time": "2022-12-12T15:54:21+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "vimeo/psalm", - "version": "5.4.0", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863" + "reference": "e784128902dfe01d489c4123d69918a9f3c1eac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", - "reference": "62db5d4f6a7ae0a20f7cc5a4952d730272fc0863", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/e784128902dfe01d489c4123d69918a9f3c1eac5", + "reference": "e784128902dfe01d489c4123d69918a9f3c1eac5", "shasum": "" }, "require": { @@ -2087,11 +2087,10 @@ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.13", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", - "sebastian/diff": "^4.0", + "sebastian/diff": "^4.0 || ^5.0", "spatie/array-to-xml": "^2.17.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/polyfill-php80": "^1.25" + "symfony/filesystem": "^5.4 || ^6.0" }, "provide": { "psalm/psalm": "self.version" @@ -2154,9 +2153,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.4.0" + "source": "https://github.com/vimeo/psalm/tree/5.6.0" }, - "time": "2022-12-19T21:31:12+00:00" + "time": "2023-01-23T20:32:47+00:00" }, { "name": "webmozart/assert", From 55ce60cd1c26e4289770d997d4b6c0276ed630f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Feb 2023 09:25:16 +0100 Subject: [PATCH 079/229] composer(deps): bump phpstan/phpstan from 1.9.4 to 1.9.14 in /vendor-bin/phpstan (#597) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.9.4 to 1.9.14. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.10.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.9.4...1.9.14) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Fix: Run 'vendor/bin/phpstan --generate-baseline' --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- phpstan-baseline.neon | 10 ++++++++++ vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 14 +++++++------- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 67c2a8417f..8d1e9c6c9d 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -678,6 +678,16 @@ parameters: count: 1 path: src/Faker/Provider/File.php + - + message: "#^Unreachable statement \\- code above always terminates\\.$#" + count: 1 + path: src/Faker/Provider/Lorem.php + + - + message: "#^Variable \\$text in empty\\(\\) always exists and is always falsy\\.$#" + count: 1 + path: src/Faker/Provider/Lorem.php + - message: "#^Parameter \\#1 \\$str of function md5 expects string, int given\\.$#" count: 1 diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 8c745be05c..05125202dc 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan": "^1.9.14", "phpstan/phpstan-deprecation-rules": "^1.1.1" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index f4b45c14bc..0ee37ba222 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "ddcaab678c093f963f2ebb550b322de8", + "content-hash": "a8f8ebc29f2f9ec146dd307e0bf83279", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.9.4", + "version": "1.9.14", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2" + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d03bccee595e2146b7c9d174486b84f4dc61b0f2", - "reference": "d03bccee595e2146b7c9d174486b84f4dc61b0f2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58", + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58", "shasum": "" }, "require": { @@ -91,7 +91,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.4" + "source": "https://github.com/phpstan/phpstan/tree/1.9.14" }, "funding": [ { @@ -107,7 +107,7 @@ "type": "tidelift" } ], - "time": "2022-12-17T13:33:52+00:00" + "time": "2023-01-19T10:47:09+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 3ad004b1716fd475489dc68928b9647898e38ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 2 Feb 2023 10:19:49 +0100 Subject: [PATCH 080/229] Enhancement: Enable `findUnusedBaselineEntry` option (#599) * Enhancement: Enable findUnusedBaselineEntry option * Fix: Run 'vendor/bin/psalm --set-baseline=psalm.baseline.xml' --- psalm.baseline.xml | 109 ++++++++++++++++----------------------------- psalm.xml | 1 + 2 files changed, 40 insertions(+), 70 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 7c3b4e8717..f776e6fecd 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,32 +1,32 @@ - + - + 0 - + string - + $this->uniqueGenerator new ChanceGenerator($this, $weight, $default) new ValidGenerator($this, $validator, $maxRetries) - + self self self - + TableRegistry - + $this->class \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ODM\MongoDB\Mapping\ClassMetadata @@ -34,31 +34,31 @@ \Doctrine\ORM\Mapping\ClassMetadata \Doctrine\ORM\Mapping\ClassMetadata - + createQueryBuilder getAssociationMappings newInstance - + Mandango Mandango - + $this->mandango Mandango - + \ColumnMap - + $columnMap $columnMap $columnMap @@ -71,20 +71,20 @@ - + \Propel - + PropelPDO - + ColumnMap - + $columnMap $columnMap $columnMap @@ -97,28 +97,28 @@ - + Propel - + PropelPDO - + $this->mapper - + string - + $relation $relation BelongsTo Locator Mapper - + $locator $this->mapper $this->mapper @@ -130,98 +130,72 @@ - + $this->locator Locator - + Locator - + [static::class, 'randomDigit'] - + $array - + Closure - + false - - - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $element->ownerDocument - $root->ownerDocument - - - + $imei - + int - + static::$cityPrefix - + static::birthNumber(static::GENDER_FEMALE) static::birthNumber(static::GENDER_MALE) - + $weights[$i] - + $ref[$i] - + static::split($text) - - - $multipliers[$i - 1] - - - + $weights[$i] $weights[$i] - - - $weights[$i] - - - + $high[$i] $low[$i] $result[$i] @@ -229,17 +203,12 @@ $weights[$i] $weights[$i] - + DateTime - - - $multipliers[$i] - - - + static::lastName() static::lastName() diff --git a/psalm.xml b/psalm.xml index 3c640b9cce..8ecfebd70d 100644 --- a/psalm.xml +++ b/psalm.xml @@ -6,6 +6,7 @@ cacheDirectory=".build/psalm/" errorBaseline="psalm.baseline.xml" errorLevel="5" + findUnusedBaselineEntry="true" resolveFromConfigFile="true" > From abc97b54a6c82bc276b261f67c560aed79f26ecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 2 Feb 2023 10:20:13 +0100 Subject: [PATCH 081/229] Fix: Avoid ternary statement (#600) --- src/Faker/Provider/Lorem.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Faker/Provider/Lorem.php b/src/Faker/Provider/Lorem.php index a55144a586..2cfb70ea7c 100644 --- a/src/Faker/Provider/Lorem.php +++ b/src/Faker/Provider/Lorem.php @@ -184,7 +184,15 @@ public static function text($maxNbChars = 200) throw new \InvalidArgumentException('text() can only generate text of at least 5 characters'); } - $type = ($maxNbChars < 25) ? 'word' : (($maxNbChars < 100) ? 'sentence' : 'paragraph'); + $type = 'paragraph'; + + if ($maxNbChars < 100) { + $type = 'sentence'; + } + + if ($maxNbChars < 25) { + $type = 'word'; + } $text = []; From ec2cb4993af55ed9924ad6806121cd062fbb04c9 Mon Sep 17 00:00:00 2001 From: Greg Havekes <883845+havekes@users.noreply.github.com> Date: Thu, 16 Feb 2023 13:42:53 -0500 Subject: [PATCH 082/229] Fix: remove currency HRK (#602) --- src/Faker/Provider/Miscellaneous.php | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Faker/Provider/Miscellaneous.php b/src/Faker/Provider/Miscellaneous.php index 91d992ec40..354f67bb3a 100644 --- a/src/Faker/Provider/Miscellaneous.php +++ b/src/Faker/Provider/Miscellaneous.php @@ -202,11 +202,12 @@ class Miscellaneous extends Base /** * @see https://en.wikipedia.org/wiki/ISO_4217 - * On date of 2019-09-27 + * On date of 2023-01-01 * * With the following exceptions: * SVC has been replaced by the USD in 2001: https://en.wikipedia.org/wiki/Salvadoran_col%C3%B3n * ZWL has been suspended since 2009: https://en.wikipedia.org/wiki/Zimbabwean_dollar + * HRK has been replaced by EUR since 2023: https://en.wikipedia.org/wiki/Croatian_kuna */ protected static $currencyCode = [ 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', @@ -214,17 +215,17 @@ class Miscellaneous extends Base 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', - 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', - 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', - 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', - 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', - 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', - 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', - 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', - 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SYP', 'SZL', - 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', - 'UGX', 'USD', 'UYU', 'UZS', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XCD', - 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW', + 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HTG', 'HUF', 'IDR', 'ILS', + 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', + 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', + 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', + 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', + 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', + 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', + 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SYP', 'SZL', 'THB', + 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', + 'USD', 'UYU', 'UZS', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XOF', + 'XPF', 'YER', 'ZAR', 'ZMW', ]; /** From 961e22236852a61a89e2b8ae39e58f5edf795a9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 22:00:12 +0100 Subject: [PATCH 083/229] composer(deps): bump friendsofphp/php-cs-fixer (#608) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.14.3 to 3.14.4. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.14.3...v3.14.4) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 124 +++++++++++++------------- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 1c6696eccb..e9438f8ca7 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.14.3" + "friendsofphp/php-cs-fixer": "^3.14.4" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index d5f1ce4a28..f293e35c62 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "d9fa548b182c1225bf9a03ac4f2d2aff", + "content-hash": "fd5a636fdf10da05c315efe16e79476f", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "doctrine/annotations", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "d02c9f3742044e17d5fa8d28d8402a2d95c33302" + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/d02c9f3742044e17d5fa8d28d8402a2d95c33302", - "reference": "d02c9f3742044e17d5fa8d28d8402a2d95c33302", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", "shasum": "" }, "require": { @@ -296,9 +296,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.0" + "source": "https://github.com/doctrine/annotations/tree/2.0.1" }, - "time": "2022-12-19T18:17:20+00:00" + "time": "2023-02-02T22:02:53+00:00" }, { "name": "doctrine/deprecations", @@ -423,16 +423,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.14.3", + "version": "v3.14.4", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "b418036b95b4936a33fe906245d3044395935e73" + "reference": "1b3d9dba63d93b8a202c31e824748218781eae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b418036b95b4936a33fe906245d3044395935e73", - "reference": "b418036b95b4936a33fe906245d3044395935e73", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/1b3d9dba63d93b8a202c31e824748218781eae6b", + "reference": "1b3d9dba63d93b8a202c31e824748218781eae6b", "shasum": "" }, "require": { @@ -443,7 +443,7 @@ "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0", + "sebastian/diff": "^4.0 || ^5.0", "symfony/console": "^5.4 || ^6.0", "symfony/event-dispatcher": "^5.4 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0", @@ -501,7 +501,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.14.3" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.14.4" }, "funding": [ { @@ -509,7 +509,7 @@ "type": "github" } ], - "time": "2023-01-30T00:24:29+00:00" + "time": "2023-02-09T21:49:13+00:00" }, { "name": "psr/cache", @@ -776,16 +776,16 @@ }, { "name": "symfony/console", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740" + "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dccb8d251a9017d5994c988b034d3e18aaabf740", - "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740", + "url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9", + "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9", "shasum": "" }, "require": { @@ -855,7 +855,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.19" + "source": "https://github.com/symfony/console/tree/v5.4.21" }, "funding": [ { @@ -871,7 +871,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-25T16:59:41+00:00" }, { "name": "symfony/deprecation-contracts", @@ -942,16 +942,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "abf49cc084c087d94b4cb939c3f3672971784e0c" + "reference": "f0ae1383a8285dfc6752b8d8602790953118ff5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abf49cc084c087d94b4cb939c3f3672971784e0c", - "reference": "abf49cc084c087d94b4cb939c3f3672971784e0c", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f0ae1383a8285dfc6752b8d8602790953118ff5a", + "reference": "f0ae1383a8285dfc6752b8d8602790953118ff5a", "shasum": "" }, "require": { @@ -1007,7 +1007,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/v5.4.19" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.21" }, "funding": [ { @@ -1023,7 +1023,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1106,16 +1106,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8" + "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/648bfaca6a494f3e22378123bcee2894045dc9d8", - "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", + "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", "shasum": "" }, "require": { @@ -1150,7 +1150,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.19" + "source": "https://github.com/symfony/filesystem/tree/v5.4.21" }, "funding": [ { @@ -1166,20 +1166,20 @@ "type": "tidelift" } ], - "time": "2023-01-14T19:14:44+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/finder", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6071aebf810ad13fe8200c224f36103abb37cf1f" + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6071aebf810ad13fe8200c224f36103abb37cf1f", - "reference": "6071aebf810ad13fe8200c224f36103abb37cf1f", + "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", "shasum": "" }, "require": { @@ -1213,7 +1213,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.19" + "source": "https://github.com/symfony/finder/tree/v5.4.21" }, "funding": [ { @@ -1229,20 +1229,20 @@ "type": "tidelift" } ], - "time": "2023-01-14T19:14:44+00:00" + "time": "2023-02-16T09:33:00+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "b03c99236445492f20c61666e8f7e5d388b078e5" + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b03c99236445492f20c61666e8f7e5d388b078e5", - "reference": "b03c99236445492f20c61666e8f7e5d388b078e5", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", "shasum": "" }, "require": { @@ -1282,7 +1282,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.19" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" }, "funding": [ { @@ -1298,7 +1298,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1873,16 +1873,16 @@ }, { "name": "symfony/process", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c5ba874c9b636dbccf761e22ce750e88ec3f55e1" + "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c5ba874c9b636dbccf761e22ce750e88ec3f55e1", - "reference": "c5ba874c9b636dbccf761e22ce750e88ec3f55e1", + "url": "https://api.github.com/repos/symfony/process/zipball/d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", + "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", "shasum": "" }, "require": { @@ -1915,7 +1915,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.19" + "source": "https://github.com/symfony/process/tree/v5.4.21" }, "funding": [ { @@ -1931,7 +1931,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-21T19:46:44+00:00" }, { "name": "symfony/service-contracts", @@ -2018,16 +2018,16 @@ }, { "name": "symfony/stopwatch", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "bd2b066090fd6a67039371098fa25a84cb2679ec" + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/bd2b066090fd6a67039371098fa25a84cb2679ec", - "reference": "bd2b066090fd6a67039371098fa25a84cb2679ec", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", "shasum": "" }, "require": { @@ -2060,7 +2060,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.19" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" }, "funding": [ { @@ -2076,20 +2076,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/string", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb" + "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/0a01071610fd861cc160dfb7e2682ceec66064cb", - "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb", + "url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f", + "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f", "shasum": "" }, "require": { @@ -2146,7 +2146,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.19" + "source": "https://github.com/symfony/string/tree/v5.4.21" }, "funding": [ { @@ -2162,7 +2162,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-22T08:00:55+00:00" } ], "packages-dev": [], From 4d6749f182935bb4420fde91a3e07b670de94f7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 22:00:47 +0100 Subject: [PATCH 084/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#609) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.9.14 to 1.10.3. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.10.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.9.14...1.10.3) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 05125202dc..3b4e79c81a 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.14", + "phpstan/phpstan": "^1.10.3", "phpstan/phpstan-deprecation-rules": "^1.1.1" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 0ee37ba222..cc1613f434 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "a8f8ebc29f2f9ec146dd307e0bf83279", + "content-hash": "733a19b3b1c716d1f739e01230f42d21", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.9.14", + "version": "1.10.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e5fcc96289cf737304286a9b505fbed091f02e58" + "reference": "5419375b5891add97dc74be71e6c1c34baaddf64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58", - "reference": "e5fcc96289cf737304286a9b505fbed091f02e58", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5419375b5891add97dc74be71e6c1c34baaddf64", + "reference": "5419375b5891add97dc74be71e6c1c34baaddf64", "shasum": "" }, "require": { @@ -91,7 +91,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.14" + "source": "https://github.com/phpstan/phpstan/tree/1.10.3" }, "funding": [ { @@ -107,7 +107,7 @@ "type": "tidelift" } ], - "time": "2023-01-19T10:47:09+00:00" + "time": "2023-02-25T14:47:13+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 7e424425c7a8b54707c0c1a1939874dbe5938687 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 22:01:24 +0100 Subject: [PATCH 085/229] composer(deps): bump rector/rector in /vendor-bin/rector (#612) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.15.10 to 0.15.19. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.15.10...0.15.19) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 31 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 27d70f351c..7b74a0fb92 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.15.10" + "rector/rector": "^0.15.19" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index e1dfceec3b..806dc63492 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "2fcf226b6b3bc9453d86409bc5fb1a38", + "content-hash": "ccbf342466a2f2abacc1e853deb15ddc", "packages": [ { "name": "phpstan/phpstan", - "version": "1.9.14", + "version": "1.10.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e5fcc96289cf737304286a9b505fbed091f02e58" + "reference": "5419375b5891add97dc74be71e6c1c34baaddf64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58", - "reference": "e5fcc96289cf737304286a9b505fbed091f02e58", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5419375b5891add97dc74be71e6c1c34baaddf64", + "reference": "5419375b5891add97dc74be71e6c1c34baaddf64", "shasum": "" }, "require": { @@ -47,7 +47,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.9.14" + "source": "https://github.com/phpstan/phpstan/tree/1.10.3" }, "funding": [ { @@ -63,30 +63,29 @@ "type": "tidelift" } ], - "time": "2023-01-19T10:47:09+00:00" + "time": "2023-02-25T14:47:13+00:00" }, { "name": "rector/rector", - "version": "0.15.10", + "version": "0.15.19", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "000bfb6f7974449399f39e1a210458395b75c887" + "reference": "4b3a85382e890963a6d00e0ace8d09465f96e370" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/000bfb6f7974449399f39e1a210458395b75c887", - "reference": "000bfb6f7974449399f39e1a210458395b75c887", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/4b3a85382e890963a6d00e0ace8d09465f96e370", + "reference": "4b3a85382e890963a6d00e0ace8d09465f96e370", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.9.7" + "phpstan/phpstan": "^1.10.1" }, "conflict": { "rector/rector-doctrine": "*", "rector/rector-downgrade-php": "*", - "rector/rector-php-parser": "*", "rector/rector-phpunit": "*", "rector/rector-symfony": "*" }, @@ -96,7 +95,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.14-dev" + "dev-main": "0.15-dev" } }, "autoload": { @@ -111,7 +110,7 @@ "description": "Instant Upgrade and Automated Refactoring of any PHP code", "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.10" + "source": "https://github.com/rectorphp/rector/tree/0.15.19" }, "funding": [ { @@ -119,7 +118,7 @@ "type": "github" } ], - "time": "2023-01-21T14:30:16+00:00" + "time": "2023-02-28T10:47:53+00:00" } ], "packages-dev": [], From b39d2ca904cc9b9b5ff050380af1df1a23bbb8a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 22:04:34 +0100 Subject: [PATCH 086/229] composer(deps): bump vimeo/psalm from 5.6.0 to 5.7.7 in /vendor-bin/psalm (#611) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump vimeo/psalm in /vendor-bin/psalm Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.6.0 to 5.7.7. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.6.0...5.7.7) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Run 'make baseline' --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- psalm.baseline.xml | 29 ++++++++------ vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 73 +++++++++++++++++----------------- 3 files changed, 55 insertions(+), 49 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index f776e6fecd..71d7f15737 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,5 +1,5 @@ - + 0 @@ -10,7 +10,7 @@ - $this->uniqueGenerator + uniqueGenerator]]> new ChanceGenerator($this, $weight, $default) new ValidGenerator($this, $validator, $maxRetries) @@ -27,7 +27,7 @@ - $this->class + class]]> \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ODM\MongoDB\Mapping\ClassMetadata @@ -48,7 +48,7 @@ - $this->mandango + mandango]]> Mandango @@ -106,7 +106,7 @@ - $this->mapper + mapper]]> string @@ -120,18 +120,18 @@ $locator - $this->mapper - $this->mapper - $this->mapper - $this->mapper - $this->mapper + mapper]]> + mapper]]> + mapper]]> + mapper]]> + mapper]]> Locator Mapper - $this->locator + locator]]> Locator @@ -140,7 +140,7 @@ - [static::class, 'randomDigit'] + $array @@ -149,6 +149,11 @@ Closure + + + callable + + false diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 28a09ff425..01e2297dd4 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.6.0" + "vimeo/psalm": "^5.7.7" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 000ff52d9a..cd8e61d195 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "4091b34c846e0ef8490cc231cb60e951", + "content-hash": "771e1b66899f9ff7e007dfe8ebd2104b", "packages": [ { "name": "amphp/amp", @@ -603,16 +603,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "0.4.1", + "version": "0.5.1", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2" + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/79261cc280aded96d098e1b0e0ba0c4881b432c2", - "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", "shasum": "" }, "require": { @@ -652,7 +652,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.4.1" + "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" }, "funding": [ { @@ -660,7 +660,7 @@ "type": "github" } ], - "time": "2022-12-16T22:01:02+00:00" + "time": "2022-12-24T12:35:10+00:00" }, { "name": "netresearch/jsonmapper", @@ -1164,16 +1164,16 @@ }, { "name": "symfony/console", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740" + "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dccb8d251a9017d5994c988b034d3e18aaabf740", - "reference": "dccb8d251a9017d5994c988b034d3e18aaabf740", + "url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9", + "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9", "shasum": "" }, "require": { @@ -1243,7 +1243,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.19" + "source": "https://github.com/symfony/console/tree/v5.4.21" }, "funding": [ { @@ -1259,7 +1259,7 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-25T16:59:41+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1330,16 +1330,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8" + "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/648bfaca6a494f3e22378123bcee2894045dc9d8", - "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", + "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", "shasum": "" }, "require": { @@ -1374,7 +1374,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.19" + "source": "https://github.com/symfony/filesystem/tree/v5.4.21" }, "funding": [ { @@ -1390,7 +1390,7 @@ "type": "tidelift" } ], - "time": "2023-01-14T19:14:44+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1969,16 +1969,16 @@ }, { "name": "symfony/string", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb" + "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/0a01071610fd861cc160dfb7e2682ceec66064cb", - "reference": "0a01071610fd861cc160dfb7e2682ceec66064cb", + "url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f", + "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f", "shasum": "" }, "require": { @@ -2035,7 +2035,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.19" + "source": "https://github.com/symfony/string/tree/v5.4.21" }, "funding": [ { @@ -2051,20 +2051,20 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-22T08:00:55+00:00" }, { "name": "vimeo/psalm", - "version": "5.6.0", + "version": "5.7.7", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "e784128902dfe01d489c4123d69918a9f3c1eac5" + "reference": "e028ba46ba0d7f9a78bc3201c251e137383e145f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/e784128902dfe01d489c4123d69918a9f3c1eac5", - "reference": "e784128902dfe01d489c4123d69918a9f3c1eac5", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/e028ba46ba0d7f9a78bc3201c251e137383e145f", + "reference": "e028ba46ba0d7f9a78bc3201c251e137383e145f", "shasum": "" }, "require": { @@ -2083,12 +2083,12 @@ "ext-tokenizer": "*", "felixfbecker/advanced-json-rpc": "^3.1", "felixfbecker/language-server-protocol": "^1.5.2", - "fidry/cpu-core-counter": "^0.4.0", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.13", "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", + "spatie/array-to-xml": "^2.17.0 || ^3.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, @@ -2097,13 +2097,13 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4", - "brianium/paratest": "^6.0", + "brianium/paratest": "^6.9", "ext-curl": "*", "mockery/mockery": "^1.5", "nunomaduro/mock-final-classes": "^1.1", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpdoc-parser": "^1.6", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^9.6", "psalm/plugin-mockery": "^1.1", "psalm/plugin-phpunit": "^0.18", "slevomat/coding-standard": "^8.4", @@ -2149,13 +2149,14 @@ "keywords": [ "code", "inspection", - "php" + "php", + "static analysis" ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.6.0" + "source": "https://github.com/vimeo/psalm/tree/5.7.7" }, - "time": "2023-01-23T20:32:47+00:00" + "time": "2023-02-25T01:05:07+00:00" }, { "name": "webmozart/assert", From 751908e6f17656afb0f0754382cf715ba51e8481 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 22:13:34 +0100 Subject: [PATCH 087/229] composer(deps): bump phpstan/phpstan-deprecation-rules (#610) Bumps [phpstan/phpstan-deprecation-rules](https://github.com/phpstan/phpstan-deprecation-rules) from 1.1.1 to 1.1.2. - [Release notes](https://github.com/phpstan/phpstan-deprecation-rules/releases) - [Commits](https://github.com/phpstan/phpstan-deprecation-rules/compare/1.1.1...1.1.2) --- updated-dependencies: - dependency-name: phpstan/phpstan-deprecation-rules dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 3b4e79c81a..2340415a80 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -3,7 +3,7 @@ "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", "phpstan/phpstan": "^1.10.3", - "phpstan/phpstan-deprecation-rules": "^1.1.1" + "phpstan/phpstan-deprecation-rules": "^1.1.2" }, "config": { "platform": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index cc1613f434..c23a661556 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "733a19b3b1c716d1f739e01230f42d21", + "content-hash": "6b1b70648e1d3109203eef4e9715b3e7", "packages": [ { "name": "phpstan/extension-installer", @@ -111,21 +111,21 @@ }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "2c6792eda026d9c474c14aa018aed312686714db" + "reference": "bcc1e8cdf81c3da1a2ba9188ee94cd7e2a62e865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/2c6792eda026d9c474c14aa018aed312686714db", - "reference": "2c6792eda026d9c474c14aa018aed312686714db", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/bcc1e8cdf81c3da1a2ba9188ee94cd7e2a62e865", + "reference": "bcc1e8cdf81c3da1a2ba9188ee94cd7e2a62e865", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.9.3" + "phpstan/phpstan": "^1.10" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -153,9 +153,9 @@ "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/1.1.1" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.2" }, - "time": "2022-12-13T14:26:20+00:00" + "time": "2023-01-17T16:14:21+00:00" } ], "packages-dev": [], From 275f172eba8c4f0bbb588c6303cc95faf6658e14 Mon Sep 17 00:00:00 2001 From: Jeff Harris Date: Sat, 11 Mar 2023 13:13:54 -0500 Subject: [PATCH 088/229] timezone() respects countrycode (#607) --- src/Faker/Provider/DateTime.php | 10 ++++++++-- test/Faker/Provider/DateTimeTest.php | 11 +++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/Faker/Provider/DateTime.php b/src/Faker/Provider/DateTime.php index 46c3c90fec..25df1c9928 100644 --- a/src/Faker/Provider/DateTime.php +++ b/src/Faker/Provider/DateTime.php @@ -334,9 +334,15 @@ public static function century() * * @example 'Europe/Paris' */ - public static function timezone() + public static function timezone(string $countryCode = null) { - return static::randomElement(\DateTimeZone::listIdentifiers()); + if ($countryCode) { + $timezones = \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, $countryCode); + } else { + $timezones = \DateTimeZone::listIdentifiers(); + } + + return static::randomElement($timezones); } /** diff --git a/test/Faker/Provider/DateTimeTest.php b/test/Faker/Provider/DateTimeTest.php index 5b0ce2bdf6..0dc446c648 100644 --- a/test/Faker/Provider/DateTimeTest.php +++ b/test/Faker/Provider/DateTimeTest.php @@ -281,4 +281,15 @@ public function testFixedSeedWithMaximumTimestamp(): void self::assertEquals($dateTimeThisYear, DateTimeProvider::dateTimeThisYear($max)); mt_srand(); } + + public function testTimezone(): void + { + $timezone = DateTimeProvider::timezone(); + $countryTimezone = DateTimeProvider::timezone('US'); + + self::assertIsString($timezone); + self::assertContains($timezone, \DateTimeZone::listIdentifiers()); + self::assertIsString($countryTimezone); + self::assertContains($countryTimezone, \DateTimeZone::listIdentifiers(\DateTimeZone::PER_COUNTRY, 'US')); + } } From c3ebc693c147a0809d5d34a375402866bb5231bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 23:46:21 +0200 Subject: [PATCH 089/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#622) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.3 to 1.10.10. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.10.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.3...1.10.10) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 2340415a80..1609b1ff84 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.10.3", + "phpstan/phpstan": "^1.10.10", "phpstan/phpstan-deprecation-rules": "^1.1.2" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index c23a661556..6bf7f7a576 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "6b1b70648e1d3109203eef4e9715b3e7", + "content-hash": "b330290a8b74bc5b4bcc96b39c77fa8f", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.3", + "version": "1.10.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5419375b5891add97dc74be71e6c1c34baaddf64" + "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5419375b5891add97dc74be71e6c1c34baaddf64", - "reference": "5419375b5891add97dc74be71e6c1c34baaddf64", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f1e22c9b17a879987f8743d81533250a5fff47f9", + "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9", "shasum": "" }, "require": { @@ -90,8 +90,11 @@ "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", - "source": "https://github.com/phpstan/phpstan/tree/1.10.3" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -107,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T14:47:13+00:00" + "time": "2023-04-01T17:06:15+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 900c2b06cb8cc861262ce6c144d132b939f4f0b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 23:46:48 +0200 Subject: [PATCH 090/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#623) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.7.7 to 5.9.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.7.7...5.9.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 235 ++++++++++++++++++--------------- 2 files changed, 128 insertions(+), 109 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 01e2297dd4..9a1dc0ff8d 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.7.7" + "vimeo/psalm": "^5.9.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index cd8e61d195..c37d5d5cb9 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "771e1b66899f9ff7e007dfe8ebd2104b", + "content-hash": "c1ad7f419938a929431eeac9b4aa5a26", "packages": [ { "name": "amphp/amp", @@ -172,79 +172,6 @@ ], "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", @@ -500,6 +427,49 @@ }, "time": "2019-12-04T15:06:13+00:00" }, + { + "name": "doctrine/deprecations", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5|^8.5|^9.5", + "psr/log": "^1|^2|^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + }, + "time": "2022-05-02T15:47:09+00:00" + }, { "name": "felixfbecker/advanced-json-rpc", "version": "v3.2.1", @@ -715,16 +685,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.3", + "version": "v4.15.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", "shasum": "" }, "require": { @@ -765,9 +735,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" }, - "time": "2023-01-16T22:05:37+00:00" + "time": "2023-03-05T19:49:14+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -881,24 +851,27 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.2", + "version": "1.7.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" + "reference": "dfc078e8af9c99210337325ff5aa152872c98714" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dfc078e8af9c99210337325ff5aa152872c98714", + "reference": "dfc078e8af9c99210337325ff5aa152872c98714", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.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", @@ -930,9 +903,54 @@ "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.6.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.1" }, - "time": "2022-10-14T12:47:21+00:00" + "time": "2023-03-27T19:02:04+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.16.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/e27e92d939e2e3636f0a1f0afaba59692c0bf571", + "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "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" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.1" + }, + "time": "2023-02-07T18:11:17+00:00" }, { "name": "psr/container", @@ -1164,16 +1182,16 @@ }, { "name": "symfony/console", - "version": "v5.4.21", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9" + "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9", + "url": "https://api.github.com/repos/symfony/console/zipball/3cd51fd2e6c461ca678f84d419461281bd87a0a8", + "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8", "shasum": "" }, "require": { @@ -1238,12 +1256,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.21" + "source": "https://github.com/symfony/console/tree/v5.4.22" }, "funding": [ { @@ -1259,7 +1277,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T16:59:41+00:00" + "time": "2023-03-25T09:27:28+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1969,16 +1987,16 @@ }, { "name": "symfony/string", - "version": "v5.4.21", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f" + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f", + "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", "shasum": "" }, "require": { @@ -2035,7 +2053,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.21" + "source": "https://github.com/symfony/string/tree/v5.4.22" }, "funding": [ { @@ -2051,26 +2069,26 @@ "type": "tidelift" } ], - "time": "2023-02-22T08:00:55+00:00" + "time": "2023-03-14T06:11:53+00:00" }, { "name": "vimeo/psalm", - "version": "5.7.7", + "version": "5.9.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "e028ba46ba0d7f9a78bc3201c251e137383e145f" + "reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/e028ba46ba0d7f9a78bc3201c251e137383e145f", - "reference": "e028ba46ba0d7f9a78bc3201c251e137383e145f", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/8b9ad1eb9e8b7d3101f949291da2b9f7767cd163", + "reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163", "shasum": "" }, "require": { "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.10.0", + "composer-runtime-api": "^2", "composer/semver": "^1.4 || ^2.0 || ^3.0", "composer/xdebug-handler": "^2.0 || ^3.0", "dnoegel/php-xdg-base-dir": "^0.1.1", @@ -2085,7 +2103,7 @@ "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.13", + "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", @@ -2096,6 +2114,7 @@ "psalm/psalm": "self.version" }, "require-dev": { + "amphp/phpunit-util": "^2.0", "bamarni/composer-bin-plugin": "^1.4", "brianium/paratest": "^6.9", "ext-curl": "*", @@ -2154,9 +2173,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.7.7" + "source": "https://github.com/vimeo/psalm/tree/5.9.0" }, - "time": "2023-02-25T01:05:07+00:00" + "time": "2023-03-29T21:38:21+00:00" }, { "name": "webmozart/assert", From d928b54fc0fcb03dd02d2991a852c0b8c1e0bc69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 23:47:24 +0200 Subject: [PATCH 091/229] composer(deps): bump friendsofphp/php-cs-fixer (#624) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.14.4 to 3.15.1. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.14.4...v3.15.1) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 70 +++++++++++++++------------ 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index e9438f8ca7..4aa2463477 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.14.4" + "friendsofphp/php-cs-fixer": "^3.15.1" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index f293e35c62..3c0038c2fd 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "fd5a636fdf10da05c315efe16e79476f", + "content-hash": "85fa094fe5314123744719040a7f9bbb", "packages": [ { "name": "composer/pcre", @@ -423,16 +423,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.14.4", + "version": "v3.15.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "1b3d9dba63d93b8a202c31e824748218781eae6b" + "reference": "d48755372a113bddb99f749e34805d83f3acfe04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/1b3d9dba63d93b8a202c31e824748218781eae6b", - "reference": "1b3d9dba63d93b8a202c31e824748218781eae6b", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d48755372a113bddb99f749e34805d83f3acfe04", + "reference": "d48755372a113bddb99f749e34805d83f3acfe04", "shasum": "" }, "require": { @@ -499,9 +499,15 @@ } ], "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.14.4" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.15.1" }, "funding": [ { @@ -509,7 +515,7 @@ "type": "github" } ], - "time": "2023-02-09T21:49:13+00:00" + "time": "2023-03-13T23:26:30+00:00" }, { "name": "psr/cache", @@ -776,16 +782,16 @@ }, { "name": "symfony/console", - "version": "v5.4.21", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9" + "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9", - "reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9", + "url": "https://api.github.com/repos/symfony/console/zipball/3cd51fd2e6c461ca678f84d419461281bd87a0a8", + "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8", "shasum": "" }, "require": { @@ -850,12 +856,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.21" + "source": "https://github.com/symfony/console/tree/v5.4.22" }, "funding": [ { @@ -871,7 +877,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T16:59:41+00:00" + "time": "2023-03-25T09:27:28+00:00" }, { "name": "symfony/deprecation-contracts", @@ -942,16 +948,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.4.21", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f0ae1383a8285dfc6752b8d8602790953118ff5a" + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f0ae1383a8285dfc6752b8d8602790953118ff5a", - "reference": "f0ae1383a8285dfc6752b8d8602790953118ff5a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f", + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f", "shasum": "" }, "require": { @@ -1007,7 +1013,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/v5.4.21" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.22" }, "funding": [ { @@ -1023,7 +1029,7 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-03-17T11:31:58+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1873,16 +1879,16 @@ }, { "name": "symfony/process", - "version": "v5.4.21", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd" + "reference": "4b850da0cc3a2a9181c1ed407adbca4733dc839b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", - "reference": "d4ce417ebcb0b7d090b4c178ed6d3accc518e8bd", + "url": "https://api.github.com/repos/symfony/process/zipball/4b850da0cc3a2a9181c1ed407adbca4733dc839b", + "reference": "4b850da0cc3a2a9181c1ed407adbca4733dc839b", "shasum": "" }, "require": { @@ -1915,7 +1921,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.21" + "source": "https://github.com/symfony/process/tree/v5.4.22" }, "funding": [ { @@ -1931,7 +1937,7 @@ "type": "tidelift" } ], - "time": "2023-02-21T19:46:44+00:00" + "time": "2023-03-06T21:29:33+00:00" }, { "name": "symfony/service-contracts", @@ -2080,16 +2086,16 @@ }, { "name": "symfony/string", - "version": "v5.4.21", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f" + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f", + "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", "shasum": "" }, "require": { @@ -2146,7 +2152,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.21" + "source": "https://github.com/symfony/string/tree/v5.4.22" }, "funding": [ { @@ -2162,7 +2168,7 @@ "type": "tidelift" } ], - "time": "2023-02-22T08:00:55+00:00" + "time": "2023-03-14T06:11:53+00:00" } ], "packages-dev": [], From cb2576765d69f50d84d87245ff7ece6ad5f0d20e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 23:47:57 +0200 Subject: [PATCH 092/229] composer(deps): bump rector/rector in /vendor-bin/rector (#626) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.15.19 to 0.15.23. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.15.19...0.15.23) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 35 +++++++++++++++++++++------------ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 7b74a0fb92..299110015f 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.15.19" + "rector/rector": "^0.15.23" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 806dc63492..5ded0e19ec 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "ccbf342466a2f2abacc1e853deb15ddc", + "content-hash": "6e7b8edcb85c26234a7363e2cd584210", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.3", + "version": "1.10.10", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5419375b5891add97dc74be71e6c1c34baaddf64" + "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5419375b5891add97dc74be71e6c1c34baaddf64", - "reference": "5419375b5891add97dc74be71e6c1c34baaddf64", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f1e22c9b17a879987f8743d81533250a5fff47f9", + "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9", "shasum": "" }, "require": { @@ -46,8 +46,11 @@ "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", - "source": "https://github.com/phpstan/phpstan/tree/1.10.3" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -63,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-02-25T14:47:13+00:00" + "time": "2023-04-01T17:06:15+00:00" }, { "name": "rector/rector", - "version": "0.15.19", + "version": "0.15.23", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "4b3a85382e890963a6d00e0ace8d09465f96e370" + "reference": "f4984ebd62b3613002869b0ddd6868261d62819e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/4b3a85382e890963a6d00e0ace8d09465f96e370", - "reference": "4b3a85382e890963a6d00e0ace8d09465f96e370", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/f4984ebd62b3613002869b0ddd6868261d62819e", + "reference": "f4984ebd62b3613002869b0ddd6868261d62819e", "shasum": "" }, "require": { @@ -108,9 +111,15 @@ "MIT" ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.19" + "source": "https://github.com/rectorphp/rector/tree/0.15.23" }, "funding": [ { @@ -118,7 +127,7 @@ "type": "github" } ], - "time": "2023-02-28T10:47:53+00:00" + "time": "2023-03-22T15:22:45+00:00" } ], "packages-dev": [], From abf5e11b41f447ba42fcca69348fa4ad29159d72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Apr 2023 23:51:25 +0200 Subject: [PATCH 093/229] composer(deps): bump phpstan/phpstan-deprecation-rules (#625) Bumps [phpstan/phpstan-deprecation-rules](https://github.com/phpstan/phpstan-deprecation-rules) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/phpstan/phpstan-deprecation-rules/releases) - [Commits](https://github.com/phpstan/phpstan-deprecation-rules/compare/1.1.2...1.1.3) --- updated-dependencies: - dependency-name: phpstan/phpstan-deprecation-rules dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 1609b1ff84..c20b467767 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -3,7 +3,7 @@ "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", "phpstan/phpstan": "^1.10.10", - "phpstan/phpstan-deprecation-rules": "^1.1.2" + "phpstan/phpstan-deprecation-rules": "^1.1.3" }, "config": { "platform": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 6bf7f7a576..771b94746e 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "b330290a8b74bc5b4bcc96b39c77fa8f", + "content-hash": "a370d77c320c665fe7d1d5a7803de480", "packages": [ { "name": "phpstan/extension-installer", @@ -114,16 +114,16 @@ }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "bcc1e8cdf81c3da1a2ba9188ee94cd7e2a62e865" + "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/bcc1e8cdf81c3da1a2ba9188ee94cd7e2a62e865", - "reference": "bcc1e8cdf81c3da1a2ba9188ee94cd7e2a62e865", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", + "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", "shasum": "" }, "require": { @@ -156,9 +156,9 @@ "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/1.1.2" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.3" }, - "time": "2023-01-17T16:14:21+00:00" + "time": "2023-03-17T07:50:08+00:00" } ], "packages-dev": [], From feb1640cb67f08c3a2f98fb27fd6875be60fd2ad Mon Sep 17 00:00:00 2001 From: KentarouTakeda Date: Sun, 2 Apr 2023 16:55:47 +0900 Subject: [PATCH 094/229] fix: Empty `Traversable` in `randomElements()` (#605) * fix: Empty `Traversable` in `randomElements()` * Fix: Remove *unmatched* `ignoreErrors` due to code changes. --- phpstan-baseline.neon | 5 ----- src/Faker/Provider/Base.php | 4 ++-- test/Faker/Provider/BaseTest.php | 4 ++++ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 8d1e9c6c9d..4c24bc5a7e 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -648,11 +648,6 @@ parameters: count: 1 path: src/Faker/Provider/Base.php - - - message: "#^Ternary operator condition is always false\\.$#" - count: 1 - path: src/Faker/Provider/Base.php - - message: "#^Unreachable statement \\- code above always terminates\\.$#" count: 1 diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index e3713ce0e6..f4fb6398e6 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -190,15 +190,15 @@ public static function randomAscii() public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $allowDuplicates = false) { $traversables = []; + $arr = $array; if ($array instanceof \Traversable) { foreach ($array as $element) { $traversables[] = $element; } + $arr = $traversables; } - $arr = count($traversables) ? $traversables : $array; - $allKeys = array_keys($arr); $numKeys = count($allKeys); diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index 0cf06b768d..65ae520c3b 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -556,6 +556,10 @@ public function testRandomElements(): void self::assertIsArray($empty); self::assertCount(0, $empty); + $emptyTraversable = BaseProvider::randomElements(new \ArrayIterator(), 0); + self::assertIsArray($emptyTraversable); + self::assertCount(0, $emptyTraversable); + $shuffled = BaseProvider::randomElements(['foo', 'bar', 'baz'], 3); self::assertContains('foo', $shuffled); self::assertContains('bar', $shuffled); From e43a73207c7ab3a081c3cd7d2f1df32c06ef33ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 2 Apr 2023 18:53:22 +0200 Subject: [PATCH 095/229] Fix: Split test (#627) --- test/Faker/Provider/BaseTest.php | 44 ++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index 65ae520c3b..54b2dab9a1 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -548,26 +548,42 @@ public function testRandomElementsThrowsWhenRequestingTooManyKeys(): void BaseProvider::randomElements(['foo'], 2); } - public function testRandomElements(): void + public function testRandomElementsWorksWithoutArgument(): void { self::assertCount(1, BaseProvider::randomElements(), 'Should work without any input'); + } + + public function testRandomElementsWorksWithEmptyArray(): void + { + $randomElements = BaseProvider::randomElements([], 0); + + self::assertIsArray($randomElements); + self::assertCount(0, $randomElements); + } + + public function testRandomElementsWorksWithEmptyTraversable(): void + { + $randomElements = BaseProvider::randomElements(new \ArrayIterator(), 0); + + self::assertIsArray($randomElements); + self::assertCount(0, $randomElements); + } - $empty = BaseProvider::randomElements([], 0); - self::assertIsArray($empty); - self::assertCount(0, $empty); + public function testRandomElementsWorksWithNonEmptyTraversable(): void + { + $randomElements = BaseProvider::randomElements(['foo', 'bar', 'baz'], 3); - $emptyTraversable = BaseProvider::randomElements(new \ArrayIterator(), 0); - self::assertIsArray($emptyTraversable); - self::assertCount(0, $emptyTraversable); + self::assertContains('foo', $randomElements); + self::assertContains('bar', $randomElements); + self::assertContains('baz', $randomElements); + } - $shuffled = BaseProvider::randomElements(['foo', 'bar', 'baz'], 3); - self::assertContains('foo', $shuffled); - self::assertContains('bar', $shuffled); - self::assertContains('baz', $shuffled); + public function testRandomElementsWorksWithAllowDuplicates(): void + { + $randomElements = BaseProvider::randomElements(['foo', 'bar'], 3, true); - $allowDuplicates = BaseProvider::randomElements(['foo', 'bar'], 3, true); - self::assertCount(3, $allowDuplicates); - self::assertContainsOnly('string', $allowDuplicates); + self::assertCount(3, $randomElements); + self::assertContainsOnly('string', $randomElements); } } From 0603c8ee598682cc3c6e5dccdcf3e95b616fd612 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Apr 2023 10:33:50 +0200 Subject: [PATCH 096/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#632) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.10 to 1.10.14. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.10...1.10.14) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index c20b467767..e82f39c93d 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.10.10", + "phpstan/phpstan": "^1.10.14", "phpstan/phpstan-deprecation-rules": "^1.1.3" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 771b94746e..ff70747bca 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "a370d77c320c665fe7d1d5a7803de480", + "content-hash": "44cfa449718555926fba46de5b3b1f51", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.10", + "version": "1.10.14", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9" + "reference": "d232901b09e67538e5c86a724be841bea5768a7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f1e22c9b17a879987f8743d81533250a5fff47f9", - "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c", + "reference": "d232901b09e67538e5c86a724be841bea5768a7c", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-04-01T17:06:15+00:00" + "time": "2023-04-19T13:47:27+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 3b8687c4e5a2342ce057557bd44bbf19ee636cf2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Apr 2023 10:35:07 +0200 Subject: [PATCH 097/229] github-actions(deps): bump peter-evans/create-pull-request from 4 to 5 (#634) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/branch-alias.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/branch-alias.yaml b/.github/workflows/branch-alias.yaml index dcd71f1107..7370c88117 100644 --- a/.github/workflows/branch-alias.yaml +++ b/.github/workflows/branch-alias.yaml @@ -54,7 +54,7 @@ jobs: composer config extra.branch-alias.dev-main ${{ steps.find_alias.outputs.alias }}-dev - name: "Create Pull Request" - uses: "peter-evans/create-pull-request@v4" + uses: "peter-evans/create-pull-request@v5" with: base: "main" branch: "branch-alias-update" From 702bc43166277efddb108a0097143b4998bf285d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Apr 2023 10:35:31 +0200 Subject: [PATCH 098/229] composer(deps): bump friendsofphp/php-cs-fixer (#635) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.15.1 to 3.16.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.15.1...v3.16.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 4aa2463477..134cdd5615 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.15.1" + "friendsofphp/php-cs-fixer": "^3.16.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 3c0038c2fd..b9cce18c8b 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "85fa094fe5314123744719040a7f9bbb", + "content-hash": "df971a090ccc82b024ac70866942a898", "packages": [ { "name": "composer/pcre", @@ -423,16 +423,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.15.1", + "version": "v3.16.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d48755372a113bddb99f749e34805d83f3acfe04" + "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d48755372a113bddb99f749e34805d83f3acfe04", - "reference": "d48755372a113bddb99f749e34805d83f3acfe04", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", + "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", "shasum": "" }, "require": { @@ -507,7 +507,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.15.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.16.0" }, "funding": [ { @@ -515,7 +515,7 @@ "type": "github" } ], - "time": "2023-03-13T23:26:30+00:00" + "time": "2023-04-02T19:30:06+00:00" }, { "name": "psr/cache", From c38b7ca6a37f4610b51674d32125a2662ba783d2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Apr 2023 10:35:51 +0200 Subject: [PATCH 099/229] composer(deps): bump phpstan/extension-installer in /vendor-bin/phpstan (#633) Bumps [phpstan/extension-installer](https://github.com/phpstan/extension-installer) from 1.2.0 to 1.3.0. - [Release notes](https://github.com/phpstan/extension-installer/releases) - [Commits](https://github.com/phpstan/extension-installer/compare/1.2.0...1.3.0) --- updated-dependencies: - dependency-name: phpstan/extension-installer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index e82f39c93d..129d2940dc 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "phpstan/extension-installer": "^1.2.0", + "phpstan/extension-installer": "^1.3.0", "phpstan/phpstan": "^1.10.14", "phpstan/phpstan-deprecation-rules": "^1.1.3" }, diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index ff70747bca..d5febe50c7 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "44cfa449718555926fba46de5b3b1f51", + "content-hash": "717c66c4ba1d74bfd05b5c6e44e70e52", "packages": [ { "name": "phpstan/extension-installer", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40" + "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", - "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", + "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", "shasum": "" }, "require": { @@ -32,7 +32,12 @@ }, "type": "composer-plugin", "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin" + "class": "PHPStan\\ExtensionInstaller\\Plugin", + "phpstan/extension-installer": { + "ignore": [ + "phpstan/phpstan-phpunit" + ] + } }, "autoload": { "psr-4": { @@ -46,9 +51,9 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.2.0" + "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" }, - "time": "2022-10-17T12:59:16+00:00" + "time": "2023-04-18T13:08:02+00:00" }, { "name": "phpstan/phpstan", From 062013938d178bd9f19d07166522a04f679e13db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Apr 2023 10:36:15 +0200 Subject: [PATCH 100/229] composer(deps): bump rector/rector in /vendor-bin/rector (#636) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.15.23 to 0.15.25. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.15.23...0.15.25) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 299110015f..69a460cb60 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.15.23" + "rector/rector": "^0.15.25" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 5ded0e19ec..a1b8cd2f85 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "6e7b8edcb85c26234a7363e2cd584210", + "content-hash": "c14fbc1bb6050bcbcb33a669cf32e258", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.10", + "version": "1.10.14", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9" + "reference": "d232901b09e67538e5c86a724be841bea5768a7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f1e22c9b17a879987f8743d81533250a5fff47f9", - "reference": "f1e22c9b17a879987f8743d81533250a5fff47f9", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c", + "reference": "d232901b09e67538e5c86a724be841bea5768a7c", "shasum": "" }, "require": { @@ -66,25 +66,25 @@ "type": "tidelift" } ], - "time": "2023-04-01T17:06:15+00:00" + "time": "2023-04-19T13:47:27+00:00" }, { "name": "rector/rector", - "version": "0.15.23", + "version": "0.15.25", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "f4984ebd62b3613002869b0ddd6868261d62819e" + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/f4984ebd62b3613002869b0ddd6868261d62819e", - "reference": "f4984ebd62b3613002869b0ddd6868261d62819e", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/015935c7ed9e48a4f5895ba974f337e20a263841", + "reference": "015935c7ed9e48a4f5895ba974f337e20a263841", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.1" + "phpstan/phpstan": "^1.10.14" }, "conflict": { "rector/rector-doctrine": "*", @@ -119,7 +119,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.23" + "source": "https://github.com/rectorphp/rector/tree/0.15.25" }, "funding": [ { @@ -127,7 +127,7 @@ "type": "github" } ], - "time": "2023-03-22T15:22:45+00:00" + "time": "2023-04-20T16:07:39+00:00" } ], "packages-dev": [], From 1a735f050e3246fadccdf8f684122b1f97e4bddb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sat, 22 Apr 2023 00:02:22 +0200 Subject: [PATCH 101/229] Fix: DocBlock (#631) --- src/Faker/Generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index ec77c08749..2cad02d7a8 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -275,7 +275,7 @@ * * @property string $imageUrl * - * @method string imageUrl($width = 640, $height = 480, $category = null, $randomize = true, $word = null, $gray = false) + * @method string imageUrl($width = 640, $height = 480, $category = null, $randomize = true, $word = null, $gray = false, string $format = 'png') * * @property string $image * From da0dad13b0d8432918b1453cc763e04d7364d739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 27 Apr 2023 20:33:17 +0200 Subject: [PATCH 102/229] Fix: Disable findUnusedCode option (#637) --- psalm.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/psalm.xml b/psalm.xml index 8ecfebd70d..a10904b5b7 100644 --- a/psalm.xml +++ b/psalm.xml @@ -7,6 +7,7 @@ errorBaseline="psalm.baseline.xml" errorLevel="5" findUnusedBaselineEntry="true" + findUnusedCode="false" resolveFromConfigFile="true" > From c374da04cfce5ab5c2353a248c1f4ed71d2b1b3d Mon Sep 17 00:00:00 2001 From: Hesham Fouda <15731469+etchfoda@users.noreply.github.com> Date: Mon, 1 May 2023 12:51:30 +0300 Subject: [PATCH 103/229] fix name (#641) * fix name * Update Person.php --- src/Faker/Provider/ar_EG/Person.php | 2 +- src/Faker/Provider/ar_SA/Person.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Faker/Provider/ar_EG/Person.php b/src/Faker/Provider/ar_EG/Person.php index 76f6f79e66..e456a07f96 100644 --- a/src/Faker/Provider/ar_EG/Person.php +++ b/src/Faker/Provider/ar_EG/Person.php @@ -29,7 +29,7 @@ class Person extends \Faker\Provider\Person 'حاتم', 'حازم', 'حافظ', 'حامد', 'حبيب', 'حسام', 'حسان', 'حسن', 'حسني', 'حسين', 'حمدان', 'حمدي', 'حمزة', 'حميد', 'خالد', 'خضر', 'خلف', 'خليفة', 'خليل', 'خميس', 'داوود', 'دياب', 'رأفت', 'رؤوف', 'رائد', 'رائف', 'راجح', 'راجي', 'راشد', 'راضي', 'راغب', 'رافت', 'راكان', 'رامز', 'رامي', 'ربيع', 'رجب', 'رزق', 'رشاد', 'رشيد', 'رضا', 'رضوان', 'رياض', 'ريان', 'زاهر', 'زاهي', 'زايد', 'زكريا', 'زمام', 'زهير', 'زياد', 'زيد', 'زيدان', 'زين', 'سالم', 'سامح', 'سامر', 'سامي', 'سعد', 'سعيد', 'سلام', 'سلطان', 'سلمان', 'سليم', 'سليمان', 'سمعان', 'سميح', 'سنان', 'سند', - 'سيف', 'شادي', 'شاكر', 'شريف', 'شهاب', 'شهم', 'شوان', 'صادق', 'صافي', 'صالح', 'صفاء', 'صفوان', 'صقر', 'صلاح', 'صلاح الدين', 'صهيب', 'ضرغام', 'ضياء', 'ضياء الدين’, ', 'طارق', 'طالب', 'طاهر', 'طه', 'عادل', 'عاصم', 'عاطف', + 'سيف', 'شادي', 'شاكر', 'شريف', 'شهاب', 'شهم', 'شوان', 'صادق', 'صافي', 'صالح', 'صفاء', 'صفوان', 'صقر', 'صلاح', 'صلاح الدين', 'صهيب', 'ضرغام', 'ضياء', 'ضياء الدين', 'طارق', 'طالب', 'طاهر', 'طه', 'عادل', 'عاصم', 'عاطف', 'عبيدة', 'عثمان', 'عدلي', 'عدنان', 'عزت', 'عصام', 'علاء', 'علي', 'عماد', 'عمار', 'عمر', 'عمرو', 'عنان', 'عواد', 'عوض', 'عوف', 'عوني', 'عيد', 'عيسى', 'غازي', 'غسان', 'غيث', 'فؤاد', 'فادي', 'فارس', 'فاروق', 'فاضل', 'فايز', 'فتحي', 'فراس', 'فرح', 'فريد', 'فهد', 'فهمي', 'فوزي', 'فيصل', 'قارس', 'قاسم', 'قيس', 'كامل', 'كرم', 'كريم', 'كمال', 'لؤي', 'لبيب', 'لطفي', 'ليث', 'مأمون', diff --git a/src/Faker/Provider/ar_SA/Person.php b/src/Faker/Provider/ar_SA/Person.php index 505c8640c4..91527c39ae 100644 --- a/src/Faker/Provider/ar_SA/Person.php +++ b/src/Faker/Provider/ar_SA/Person.php @@ -36,7 +36,7 @@ class Person extends \Faker\Provider\Person 'جواد', 'حابس', 'حاتم', 'حارث', 'حازم', 'حافظ', 'حاكم', 'حامد', 'حبيب', 'حذيفة', 'حسام', 'حسان', 'حسن', 'حسني', 'حسين', 'حكم', 'حمد', 'حمدالله', 'حمدان', 'حمدي', 'حمزة', 'حمود', 'حميد', 'خالد', 'خضر', 'خلدون', 'خلف', 'خليفة', 'خليل', 'خميس', 'داوود', 'ذياب', 'ذيب', 'رأفت', 'رؤوف', 'رئاد', 'رائد', 'رائف', 'راجح', 'راجي', 'راشد', 'راضي', 'راغب', 'رافت', 'رافع', 'رافي', 'راكان', 'رامان', 'رامز', 'رامي', 'رامين', 'ربيع', 'رجا', 'رجائي', 'رجب', 'رداد', 'رزق', 'رسلان', 'رشاد', 'رشيد', 'رضا', 'رضوان', 'رعد', 'رغد', 'رغيد', 'ركان', 'رماح', 'رياض', 'ريان', 'زاهر', 'زاهي', 'زايد', 'زكريا', 'زمام', 'زهير', 'زياد', 'زيد', 'زيدان', 'زيدون', 'زين', 'زين العابدين', 'سائد', 'ساري', 'سالم', 'سامح', 'سامر', 'سامي', 'ساهر', 'سدير', 'سرمد', 'سري', 'سعد', 'سعود', 'سعيد', 'سفيان', 'سكوت', 'سلام', 'سلطان', 'سلمان', 'سليم', 'سليمان', 'سمعان', 'سميح', 'سنان', 'سند', 'سهل', 'سهم', - 'سيف', 'شادي', 'شافع', 'شاكر', 'شامل', 'شاهر', 'شرحبيل', 'شريف', 'شهاب', 'شهم', 'شوان', 'صادق', 'صافي', 'صالح', 'صخر', 'صدام', 'صفاء', 'صفوان', 'صقر', 'صلاح', 'صلاح الدين', 'صهيب', 'ضرار', 'ضرغام', 'ضياء', 'ضياء الدين’, ', 'طارق', 'طالب', 'طاهر', 'طلال', 'طه', 'عادل', 'عاصم', 'عاطف', + 'سيف', 'شادي', 'شافع', 'شاكر', 'شامل', 'شاهر', 'شرحبيل', 'شريف', 'شهاب', 'شهم', 'شوان', 'صادق', 'صافي', 'صالح', 'صخر', 'صدام', 'صفاء', 'صفوان', 'صقر', 'صلاح', 'صلاح الدين', 'صهيب', 'ضرار', 'ضرغام', 'ضياء', 'ضياء الدين', 'طارق', 'طالب', 'طاهر', 'طلال', 'طه', 'عادل', 'عاصم', 'عاطف', 'عامر', 'عايد', 'عبادة', 'عباس', 'عبد الباري', 'عبد الحافظ', 'عبد الحكيم', 'عبد الحليم', 'عبد الحميد', 'عبد الحي', 'عبد الرحمان', 'عبد الرحمن', 'عبد الرحيم', 'عبد الرزاق', 'عبد السلام', 'عبد السميع', 'عبد العزيز', 'عبد العفو', 'عبد الغني', 'عبد الفتاح', 'عبد القادر', 'عبد الكريم', 'عبد اللطيف', 'عبد الله', 'عبد المجيد', 'عبد المولى', 'عبد الناصر', 'عبد الهادي', 'عبد ربه', 'عبداالله', 'عبدالاله', 'عبدالباسط', 'عبدالجليل', 'عبدالجواد', 'عبدالحليم', 'عبدالحميد', 'عبدالرؤوف', 'عبدالرحمن', 'عبدالرحيم', 'عبدالرزاق', 'عبدالسلام', 'عبدالعزيز', 'عبدالفتاح', 'عبدالقادر', 'عبدالكريم', 'عبداللطيف', 'عبدالله', 'عبدالمجيد', 'عبدالمطلب', 'عبدالمعطي', 'عبدالمهيمن', 'عبدالناصر', 'عبدالهادي', 'عبدالوهاب', 'عبيدالله', 'عبيدة', 'عتيبه', 'عثمان', 'عدب', 'عدلي', 'عدنان', 'عدوان', 'عدي', 'عرار', 'عرمان', 'عروة', 'عريق', 'عرين', 'عز الدين', 'عزالدين', 'عزام', 'عزت', From ddb039044866c9573e0180d56b077db507cea647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 1 May 2023 11:52:40 +0200 Subject: [PATCH 104/229] Fix: Clean up `randomElements()` and `randomElement()` (#639) * Fix: Use iterator_to_array() * Fix: Do not assign multiple values in one go * Fix: Whitespace * Fix: Rename variable * Fix: Rename variable * Fix: Count elements * Fix: Slide statement * Fix: Rename variable * Fix: Rename variable * Enhancement: Extract variable * Fix: Rename variable * Fix: Rename variable * Fix: Rename variable * Fix: Rename variable * Fix: Slide statement * Fix: DocBlock * Fix: Whitespace * Fix: Rename variable * Fix: Return early * Enhancement: Use iterator_to_array() * Fix: DocBlock * Fix: Do not reassign value to argument --- phpstan-baseline.neon | 10 ------ psalm.baseline.xml | 7 ++-- src/Faker/Provider/Base.php | 67 ++++++++++++++++++++++--------------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 4c24bc5a7e..d0ef6d35f6 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -610,11 +610,6 @@ parameters: count: 1 path: src/Faker/ORM/Spot/Populator.php - - - message: "#^Instanceof between array and Traversable will always evaluate to false\\.$#" - count: 2 - path: src/Faker/Provider/Base.php - - message: """ #^Instantiation of deprecated class Faker\\\\DefaultGenerator\\: @@ -643,11 +638,6 @@ parameters: count: 1 path: src/Faker/Provider/Base.php - - - message: "#^Result of && is always false\\.$#" - count: 1 - path: src/Faker/Provider/Base.php - - message: "#^Unreachable statement \\- code above always terminates\\.$#" count: 1 diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 71d7f15737..1c9b9ada28 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,5 +1,5 @@ - + 0 @@ -140,11 +140,8 @@ - + [static::class, 'randomDigit'] - - $array - Closure diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index f4fb6398e6..eec675ae20 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -179,9 +179,9 @@ public static function randomAscii() /** * Returns randomly ordered subsequence of $count elements from a provided array * - * @param array $array Array to take elements from. Defaults to a-c - * @param int $count Number of elements to take. - * @param bool $allowDuplicates Allow elements to be picked several times. Defaults to false + * @param array|\Traversable $array Array to take elements from. Defaults to a-c + * @param int $count Number of elements to take. + * @param bool $allowDuplicates Allow elements to be picked several times. Defaults to false * * @throws \LengthException When requesting more elements than provided * @@ -189,57 +189,70 @@ public static function randomAscii() */ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $allowDuplicates = false) { - $traversables = []; - $arr = $array; + $elements = $array; if ($array instanceof \Traversable) { - foreach ($array as $element) { - $traversables[] = $element; - } - $arr = $traversables; + $elements = \iterator_to_array($array, false); } - $allKeys = array_keys($arr); - $numKeys = count($allKeys); + $numberOfElements = count($elements); - if (!$allowDuplicates && $numKeys < $count) { - throw new \LengthException(sprintf('Cannot get %d elements, only %d in array', $count, $numKeys)); + if (!$allowDuplicates && $numberOfElements < $count) { + throw new \LengthException(sprintf( + 'Cannot get %d elements, only %d in array', + $count, + $numberOfElements, + )); } - $highKey = $numKeys - 1; - $keys = $elements = []; - $numElements = 0; + $randomElements = []; + + $keys = array_keys($elements); + $maxIndex = $numberOfElements - 1; + $elementHasBeenSelectedAlready = []; + $numberOfRandomElements = 0; - while ($numElements < $count) { - $num = mt_rand(0, $highKey); + while ($numberOfRandomElements < $count) { + $index = mt_rand(0, $maxIndex); if (!$allowDuplicates) { - if (isset($keys[$num])) { + if (isset($elementHasBeenSelectedAlready[$index])) { continue; } - $keys[$num] = true; + + $elementHasBeenSelectedAlready[$index] = true; } - $elements[] = $arr[$allKeys[$num]]; - ++$numElements; + $key = $keys[$index]; + + $randomElements[] = $elements[$key]; + + ++$numberOfRandomElements; } - return $elements; + return $randomElements; } /** * Returns a random element from a passed array * - * @param array $array + * @param array|\Traversable $array */ public static function randomElement($array = ['a', 'b', 'c']) { - if (!$array || ($array instanceof \Traversable && !count($array))) { + $elements = $array; + + if ($array instanceof \Traversable) { + $elements = iterator_to_array($array, false); + } + + if ($elements === []) { return null; } - $elements = static::randomElements($array, 1); - return $elements[0]; + $randomElements = static::randomElements($elements, 1); + + return $randomElements[0]; } /** From 71997e4f239916913a3580b2174b2724652d5441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 1 May 2023 11:53:06 +0200 Subject: [PATCH 105/229] Fix: Do not configure deprecated braces fixer (#638) --- .php-cs-fixer.dist.php | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 2bf12611d8..847b3c6c48 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -51,9 +51,6 @@ 'yield', ], ], - 'braces' => [ - 'allow_single_line_anonymous_class_with_empty_body' => true, - ], 'cast_spaces' => true, 'class_attributes_separation' => [ 'elements' => [ @@ -65,7 +62,11 @@ 'concat_space' => [ 'spacing' => 'one', ], + 'control_structure_braces' => true, + 'control_structure_continuation_position' => true, + 'curly_braces_position' => true, 'declare_equal_normalize' => true, + 'declare_parentheses' => true, 'function_typehint_space' => true, 'general_phpdoc_annotation_remove' => [ 'annotations' => [ @@ -99,6 +100,7 @@ 'no_extra_blank_lines' => true, 'no_leading_import_slash' => true, 'no_leading_namespace_whitespace' => true, + 'no_multiple_statements_per_line' => true, 'no_spaces_around_offset' => true, 'no_superfluous_elseif' => true, 'no_superfluous_phpdoc_tags' => true, @@ -184,8 +186,24 @@ 'single_blank_line_before_namespace' => true, 'single_line_comment_style' => true, 'single_quote' => true, + 'single_space_around_construct' => [ + 'constructs_contain_a_single_space' => [], + 'constructs_followed_by_a_single_space' => [ + 'elseif', + 'for', + 'foreach', + 'if', + 'match', + 'while', + 'use_lambda', + ], + 'constructs_preceded_by_a_single_space' => [ + 'use_lambda', + ], + ], 'single_trait_insert_per_statement' => true, 'standardize_not_equals' => true, + 'statement_indentation' => true, 'static_lambda' => true, 'strict_param' => true, 'switch_case_space' => true, From cd773f417ded084059c010bc672c35c242b7bdc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 2 May 2023 10:04:15 +0200 Subject: [PATCH 106/229] Fix: Reject invalid arguments (#642) --- src/Faker/Provider/Base.php | 21 ++++++++++++++++++++- test/Faker/Provider/BaseTest.php | 24 ++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index eec675ae20..d48b57d5d6 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -183,7 +183,8 @@ public static function randomAscii() * @param int $count Number of elements to take. * @param bool $allowDuplicates Allow elements to be picked several times. Defaults to false * - * @throws \LengthException When requesting more elements than provided + * @throws \InvalidArgumentException + * @throws \LengthException When requesting more elements than provided * * @return array New array with $count elements from $array */ @@ -195,6 +196,14 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all $elements = \iterator_to_array($array, false); } + if (!is_array($elements)) { + throw new \InvalidArgumentException(sprintf( + 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + \Traversable::class, + is_object($array) ? get_class($array) : gettype($array), + )); + } + $numberOfElements = count($elements); if (!$allowDuplicates && $numberOfElements < $count) { @@ -237,6 +246,8 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all * Returns a random element from a passed array * * @param array|\Traversable $array + * + * @throws \InvalidArgumentException */ public static function randomElement($array = ['a', 'b', 'c']) { @@ -250,6 +261,14 @@ public static function randomElement($array = ['a', 'b', 'c']) return null; } + if (!is_array($elements)) { + throw new \InvalidArgumentException(sprintf( + 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + \Traversable::class, + is_object($array) ? get_class($array) : gettype($array), + )); + } + $randomElements = static::randomElements($elements, 1); return $randomElements[0]; diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index 54b2dab9a1..f1a1d61808 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -548,6 +548,30 @@ public function testRandomElementsThrowsWhenRequestingTooManyKeys(): void BaseProvider::randomElements(['foo'], 2); } + public function testRandomElementsRejectsInvalidArgument(): void + { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage(sprintf( + 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + \Traversable::class, + \stdClass::class, + )); + + BaseProvider::randomElements(new \stdClass()); + } + + public function testRandomElementRejectsInvalidArgument(): void + { + $this->expectException(\InvalidArgumentException::class); + $this->expectExceptionMessage(sprintf( + 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + \Traversable::class, + 'string', + )); + + BaseProvider::randomElement('foo'); + } + public function testRandomElementsWorksWithoutArgument(): void { self::assertCount(1, BaseProvider::randomElements(), 'Should work without any input'); From 096f7fffd86321604eb648de9735d2787fefea93 Mon Sep 17 00:00:00 2001 From: Luke Kuzmish <42181698+cosmastech@users.noreply.github.com> Date: Sun, 14 May 2023 08:09:13 -0400 Subject: [PATCH 107/229] allows passing an `enum` to `randomElement()` or `randomElements()` (#620) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * allows passing an enum to randomElement or randomElements * psalm fix * fix: array not an instanceof Traversable * specify class-string * Update test/Faker/Provider/BaseTest.php Co-authored-by: Andreas Möller * remove require_once Co-authored-by: Andreas Möller * clean up tests splits tests, splits phases of tests, adds more specific assertions Co-authored-by: Andreas Möller * Apply suggestions from code review Co-authored-by: Andreas Möller * Fix: Avoid unnecessary import * Fix: Remove unnecessary reference to root namespace * Fix: Exclude BackedEnum * Fix: DocBlock * Fix: Run 'make baseline' * Fix: Run 'make baseline' * Fix: Test --------- Co-authored-by: Andreas Möller --- .php-cs-fixer.dist.php | 3 +++ phpstan-baseline.neon | 5 +++++ psalm.baseline.xml | 8 ++++++++ src/Faker/Provider/Base.php | 22 ++++++++++++++++------ test/Faker/Provider/BaseTest.php | 30 ++++++++++++++++++++++++++++-- test/Fixture/Enum/BackedEnum.php | 12 ++++++++++++ 6 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 test/Fixture/Enum/BackedEnum.php diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 847b3c6c48..ff9a013169 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -8,6 +8,9 @@ '.github/', 'vendor-bin/', ]) + ->notPath([ + 'test/Fixture/Enum/BackedEnum.php', + ]) ->ignoreDotFiles(false) ->in(__DIR__); diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index d0ef6d35f6..a9b8f8536c 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -610,6 +610,11 @@ parameters: count: 1 path: src/Faker/ORM/Spot/Populator.php + - + message: "#^Class UnitEnum not found\\.$#" + count: 2 + path: src/Faker/Provider/Base.php + - message: """ #^Instantiation of deprecated class Faker\\\\DefaultGenerator\\: diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 1c9b9ada28..277230f16a 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -142,9 +142,17 @@ [static::class, 'randomDigit'] + + \UnitEnum + \UnitEnum + Closure + + enum_exists($array) + enum_exists($array) + diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index d48b57d5d6..675cf89e76 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -179,9 +179,9 @@ public static function randomAscii() /** * Returns randomly ordered subsequence of $count elements from a provided array * - * @param array|\Traversable $array Array to take elements from. Defaults to a-c - * @param int $count Number of elements to take. - * @param bool $allowDuplicates Allow elements to be picked several times. Defaults to false + * @param array|class-string|\Traversable $array Array to take elements from. Defaults to a-c + * @param int $count Number of elements to take. + * @param bool $allowDuplicates Allow elements to be picked several times. Defaults to false * * @throws \InvalidArgumentException * @throws \LengthException When requesting more elements than provided @@ -192,13 +192,18 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all { $elements = $array; + if (is_string($array) && function_exists('enum_exists') && enum_exists($array)) { + $elements = $array::cases(); + } + if ($array instanceof \Traversable) { $elements = \iterator_to_array($array, false); } if (!is_array($elements)) { throw new \InvalidArgumentException(sprintf( - 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + 'Argument for parameter $array needs to be array, an instance of %s, or an instance of %s, got %s instead.', + \UnitEnum::class, \Traversable::class, is_object($array) ? get_class($array) : gettype($array), )); @@ -245,7 +250,7 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all /** * Returns a random element from a passed array * - * @param array|\Traversable $array + * @param array|class-string|\Traversable $array * * @throws \InvalidArgumentException */ @@ -253,6 +258,10 @@ public static function randomElement($array = ['a', 'b', 'c']) { $elements = $array; + if (is_string($array) && function_exists('enum_exists') && enum_exists($array)) { + $elements = $array::cases(); + } + if ($array instanceof \Traversable) { $elements = iterator_to_array($array, false); } @@ -263,7 +272,8 @@ public static function randomElement($array = ['a', 'b', 'c']) if (!is_array($elements)) { throw new \InvalidArgumentException(sprintf( - 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + 'Argument for parameter $array needs to be array, an instance of %s, or an instance of %s, got %s instead.', + \UnitEnum::class, \Traversable::class, is_object($array) ? get_class($array) : gettype($array), )); diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index f1a1d61808..bb64857f8a 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -3,6 +3,7 @@ namespace Faker\Test\Provider; use Faker\Provider\Base as BaseProvider; +use Faker\Test\Fixture; use Faker\Test\TestCase; /** @@ -552,7 +553,8 @@ public function testRandomElementsRejectsInvalidArgument(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage(sprintf( - 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + 'Argument for parameter $array needs to be array, an instance of %s, or an instance of %s, got %s instead.', + \UnitEnum::class, \Traversable::class, \stdClass::class, )); @@ -564,7 +566,8 @@ public function testRandomElementRejectsInvalidArgument(): void { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionMessage(sprintf( - 'Argument for parameter $array needs to be array or an instance of %s, got %s instead.', + 'Argument for parameter $array needs to be array, an instance of %s, or an instance of %s, got %s instead.', + \UnitEnum::class, \Traversable::class, 'string', )); @@ -609,6 +612,29 @@ public function testRandomElementsWorksWithAllowDuplicates(): void self::assertCount(3, $randomElements); self::assertContainsOnly('string', $randomElements); } + + /** + * @requires PHP 8.1 + */ + public function testRandomElementsWithEnum(): void + { + $count = 2; + + $randomElements = BaseProvider::randomElements(Fixture\Enum\BackedEnum::class, $count); + + self::assertCount($count, $randomElements); + self::assertContainsOnlyInstancesOf(Fixture\Enum\BackedEnum::class, $randomElements); + } + + /** + * @requires PHP 8.1 + */ + public function testRandomElementWithEnum(): void + { + $randomElement = BaseProvider::randomElement(Fixture\Enum\BackedEnum::class); + + self::assertInstanceOf(Fixture\Enum\BackedEnum::class, $randomElement); + } } /** diff --git a/test/Fixture/Enum/BackedEnum.php b/test/Fixture/Enum/BackedEnum.php new file mode 100644 index 0000000000..965df23bba --- /dev/null +++ b/test/Fixture/Enum/BackedEnum.php @@ -0,0 +1,12 @@ + Date: Sun, 14 May 2023 14:12:11 +0200 Subject: [PATCH 108/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#646) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.14 to 1.10.15. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.14...1.10.15) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 129d2940dc..c0e917c3e9 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.0", - "phpstan/phpstan": "^1.10.14", + "phpstan/phpstan": "^1.10.15", "phpstan/phpstan-deprecation-rules": "^1.1.3" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index d5febe50c7..ecd755a0f9 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "717c66c4ba1d74bfd05b5c6e44e70e52", + "content-hash": "f1e8b9b08e929477210face7bb4d741a", "packages": [ { "name": "phpstan/extension-installer", @@ -57,16 +57,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.14", + "version": "1.10.15", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c" + "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", + "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", "shasum": "" }, "require": { @@ -115,7 +115,7 @@ "type": "tidelift" } ], - "time": "2023-04-19T13:47:27+00:00" + "time": "2023-05-09T15:28:01+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From a345d80e31ff97f5099fcc5ed3425abb1c539be1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 14 May 2023 14:17:48 +0200 Subject: [PATCH 109/229] composer(deps): bump vimeo/psalm from 5.9.0 to 5.11.0 in /vendor-bin/psalm (#647) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump vimeo/psalm in /vendor-bin/psalm Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.9.0 to 5.11.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.9.0...5.11.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Run 'make baseline' --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- psalm.baseline.xml | 3 +- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 74 +++++++++++++++++----------------- 3 files changed, 40 insertions(+), 39 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 277230f16a..271a6a6b2e 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,5 +1,5 @@ - + 0 @@ -28,6 +28,7 @@ class]]> + class->associationMappings]]> \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ODM\MongoDB\Mapping\ClassMetadata \Doctrine\ODM\MongoDB\Mapping\ClassMetadata diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 9a1dc0ff8d..7d87223514 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.9.0" + "vimeo/psalm": "^5.11.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index c37d5d5cb9..6b47755191 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "c1ad7f419938a929431eeac9b4aa5a26", + "content-hash": "e6d921625f56ff0c149661e6cdf51374", "packages": [ { "name": "amphp/amp", @@ -634,16 +634,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.1.0", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "shasum": "" }, "require": { @@ -679,9 +679,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" }, - "time": "2022-12-08T20:46:14+00:00" + "time": "2023-04-09T17:37:40+00:00" }, { "name": "nikic/php-parser", @@ -909,16 +909,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.16.1", + "version": "1.20.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571" + "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/e27e92d939e2e3636f0a1f0afaba59692c0bf571", - "reference": "e27e92d939e2e3636f0a1f0afaba59692c0bf571", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", + "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", "shasum": "" }, "require": { @@ -948,9 +948,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.16.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.20.4" }, - "time": "2023-02-07T18:11:17+00:00" + "time": "2023-05-02T09:19:37+00:00" }, { "name": "psr/container", @@ -1052,16 +1052,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -1106,7 +1106,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -1114,7 +1114,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "spatie/array-to-xml", @@ -1182,16 +1182,16 @@ }, { "name": "symfony/console", - "version": "v5.4.22", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8" + "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3cd51fd2e6c461ca678f84d419461281bd87a0a8", - "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8", + "url": "https://api.github.com/repos/symfony/console/zipball/90f21e27d0d88ce38720556dd164d4a1e4c3934c", + "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c", "shasum": "" }, "require": { @@ -1261,7 +1261,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.22" + "source": "https://github.com/symfony/console/tree/v5.4.23" }, "funding": [ { @@ -1277,7 +1277,7 @@ "type": "tidelift" } ], - "time": "2023-03-25T09:27:28+00:00" + "time": "2023-04-24T18:47:29+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1348,16 +1348,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.21", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f" + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", "shasum": "" }, "require": { @@ -1392,7 +1392,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.21" + "source": "https://github.com/symfony/filesystem/tree/v5.4.23" }, "funding": [ { @@ -1408,7 +1408,7 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-03-02T11:38:35+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2073,16 +2073,16 @@ }, { "name": "vimeo/psalm", - "version": "5.9.0", + "version": "5.11.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163" + "reference": "c9b192ab8400fdaf04b2b13d110575adc879aa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/8b9ad1eb9e8b7d3101f949291da2b9f7767cd163", - "reference": "8b9ad1eb9e8b7d3101f949291da2b9f7767cd163", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/c9b192ab8400fdaf04b2b13d110575adc879aa90", + "reference": "c9b192ab8400fdaf04b2b13d110575adc879aa90", "shasum": "" }, "require": { @@ -2173,9 +2173,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.9.0" + "source": "https://github.com/vimeo/psalm/tree/5.11.0" }, - "time": "2023-03-29T21:38:21+00:00" + "time": "2023-05-04T21:35:44+00:00" }, { "name": "webmozart/assert", From 22da7f1c91e98560f405ca58893f072df2e07ba1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 14 May 2023 14:18:52 +0200 Subject: [PATCH 110/229] composer(deps): bump rector/rector in /vendor-bin/rector (#648) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.15.25 to 0.16.0. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.15.25...0.16.0) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 69a460cb60..daf132ee10 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.15.25" + "rector/rector": "^0.16.0" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index a1b8cd2f85..367f67377d 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "c14fbc1bb6050bcbcb33a669cf32e258", + "content-hash": "31d6590ac94472981a79ba104001dbbb", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.14", + "version": "1.10.15", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c" + "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d232901b09e67538e5c86a724be841bea5768a7c", - "reference": "d232901b09e67538e5c86a724be841bea5768a7c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", + "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", "shasum": "" }, "require": { @@ -66,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-04-19T13:47:27+00:00" + "time": "2023-05-09T15:28:01+00:00" }, { "name": "rector/rector", - "version": "0.15.25", + "version": "0.16.0", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "015935c7ed9e48a4f5895ba974f337e20a263841" + "reference": "2125ff71ea05b079562a8f59ca48a97eb78dc07f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/015935c7ed9e48a4f5895ba974f337e20a263841", - "reference": "015935c7ed9e48a4f5895ba974f337e20a263841", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/2125ff71ea05b079562a8f59ca48a97eb78dc07f", + "reference": "2125ff71ea05b079562a8f59ca48a97eb78dc07f", "shasum": "" }, "require": { @@ -119,7 +119,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.15.25" + "source": "https://github.com/rectorphp/rector/tree/0.16.0" }, "funding": [ { @@ -127,7 +127,7 @@ "type": "github" } ], - "time": "2023-04-20T16:07:39+00:00" + "time": "2023-05-05T12:12:17+00:00" } ], "packages-dev": [], From f85772abd508bd04e20bb4b1bbe260a68d0066d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 14 May 2023 14:31:37 +0200 Subject: [PATCH 111/229] Fix: Update CHANGELOG.md (#628) --- CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 566ad322c7..40516fb8ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,12 @@ # CHANGELOG -## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.20.0...main) +## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.22.0...main) + +## [2023-05-14, v1.22.0](https://github.com/FakerPHP/Faker/compare/v1.21.0..v1.22.0) + +- Fixed `randomElements()` to accept empty iterator (#605) +- Added support for passing an `Enum` to `randomElement()` and `randomElements()` (#620) +- Started rejecting invalid arguments passed to `randomElement()` and `randomElements()` (#642) ## [2022-12-13, v1.21.0](https://github.com/FakerPHP/Faker/compare/v1.20.0..v1.21.0) From 1a297511598df7769bf45155dd83b8f36672d9b5 Mon Sep 17 00:00:00 2001 From: Ahmed Ghanem <124502255+ahmedghanem00@users.noreply.github.com> Date: Sun, 28 May 2023 13:38:20 +0300 Subject: [PATCH 112/229] Improve the way of generating Egyptian National Ids (#651) --- src/Faker/Provider/ar_EG/Address.php | 64 ++++++++++++++---------- src/Faker/Provider/ar_EG/Person.php | 26 +++++++--- test/Faker/Provider/ar_EG/PersonTest.php | 4 +- 3 files changed, 57 insertions(+), 37 deletions(-) diff --git a/src/Faker/Provider/ar_EG/Address.php b/src/Faker/Provider/ar_EG/Address.php index 8fe73f50c6..87facaaf03 100644 --- a/src/Faker/Provider/ar_EG/Address.php +++ b/src/Faker/Provider/ar_EG/Address.php @@ -84,35 +84,35 @@ class Address extends \Faker\Provider\Address /** * @see https://ar.wikipedia.org/wiki/%D9%82%D8%A7%D8%A6%D9%85%D8%A9_%D9%85%D8%AD%D8%A7%D9%81%D8%B8%D8%A7%D8%AA_%D9%85%D8%B5%D8%B1 + * @see https://ar.wikipedia.org/wiki/%D8%A8%D8%B7%D8%A7%D9%82%D8%A9_%D8%A7%D9%84%D8%B1%D9%82%D9%85_%D8%A7%D9%84%D9%82%D9%88%D9%85%D9%8A_%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D9%8A%D8%A9 */ protected static $governorates = [ - 'الإسكندرية', - 'الإسماعيلية', - 'أسوان', - 'أسيوط', - 'الأقصر', - 'البحر الأحمر', - 'البحيرة', - 'بني سويف', - 'بورسعيد', - 'جنوب سيناء', - 'الجيزة', - 'الدقهلية', - 'دمياط', - 'سوهاج', - 'السويس', - 'الشرقية', - 'شمال سيناء', - 'الغربية', - 'الفيوم', - 'القاهرة', - 'القليوبية', - 'قنا', - 'كفر الشيخ', - 'مطروح', - 'المنوفية', - 'المنيا', - 'الوادي الجديد', + 'الإسكندرية' => '02', + 'الإسماعيلية' => '19', + 'أسوان' => '28', + 'أسيوط' => '25', + 'الأقصر' => '29', + 'البحر الأحمر' => '31', + 'البحيرة' => '18', + 'بني سويف' => '22', + 'بورسعيد' => '03', + 'جنوب سيناء' => '35', + 'القاهرة' => '01', + 'الدقهلية' => '12', + 'دمياط' => '11', + 'سوهاج' => '26', + 'السويس' => '04', + 'الشرقية' => '13', + 'شمال سيناء' => '34', + 'الغربية' => '16', + 'الفيوم' => '23', + 'القليوبية' => '14', + 'قنا' => '27', + 'كفر الشيخ' => '15', + 'مطروح' => '33', + 'المنوفية' => '17', + 'المنيا' => '24', + 'الوادي الجديد' => '32', ]; protected static $buildingNumber = ['%####', '%###', '%#']; @@ -201,6 +201,16 @@ public static function secondaryAddress() * @example 'الإسكندرية' */ public static function governorate() + { + return static::randomKey(static::$governorates); + } + + /** + * @example '01' + * + * @return string + */ + public static function governorateId() { return static::randomElement(static::$governorates); } diff --git a/src/Faker/Provider/ar_EG/Person.php b/src/Faker/Provider/ar_EG/Person.php index e456a07f96..f6e0b15c14 100644 --- a/src/Faker/Provider/ar_EG/Person.php +++ b/src/Faker/Provider/ar_EG/Person.php @@ -2,8 +2,6 @@ namespace Faker\Provider\ar_EG; -use Faker\Calculator\Luhn; - class Person extends \Faker\Provider\Person { protected static $maleNameFormats = [ @@ -80,16 +78,30 @@ public static function prefix() } /** + * @see https://ar.wikipedia.org/wiki/%D8%A8%D8%B7%D8%A7%D9%82%D8%A9_%D8%A7%D9%84%D8%B1%D9%82%D9%85_%D8%A7%D9%84%D9%82%D9%88%D9%85%D9%8A_%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D9%8A%D8%A9 + * * @example 27512310101010 + * + * @return string */ - public static function nationalIdNumber() + public static function nationalIdNumber($gender = null) { - $timestamp = self::numberBetween(1, time()); + $randomBirthDateTimestamp = mt_rand(strtotime('1950-Jan-10'), strtotime('2005-Dec-25')); + + $centuryId = ((int) date('Y', $randomBirthDateTimestamp)) >= 2000 ? 3 : 2; + $fullBirthDate = date('ymd', $randomBirthDateTimestamp); + $governorateId = Address::governorateId(); + $birthRegistrationSequence = mt_rand(1, 500); - $date = explode(':', date('y:m:d', $timestamp)); + if ($gender === static::GENDER_MALE) { + $birthRegistrationSequence = $birthRegistrationSequence | 1; // Convert to the nearest odd number + } elseif ($gender === static::GENDER_FEMALE) { + $birthRegistrationSequence = $birthRegistrationSequence & ~1; // Convert to the nearest even number + } - $partialValue = static::numerify(2 . $date[0] . $date[1] . $date[2] . str_repeat('#', 6)); + $birthRegistrationSequence = str_pad((string) $birthRegistrationSequence, 4, '0', STR_PAD_LEFT); + $randomCheckDigit = mt_rand(1, 9); - return Luhn::generateLuhnNumber($partialValue); + return $centuryId . $fullBirthDate . $governorateId . $birthRegistrationSequence . $randomCheckDigit; } } diff --git a/test/Faker/Provider/ar_EG/PersonTest.php b/test/Faker/Provider/ar_EG/PersonTest.php index b940c7be63..db7aa7e662 100644 --- a/test/Faker/Provider/ar_EG/PersonTest.php +++ b/test/Faker/Provider/ar_EG/PersonTest.php @@ -2,7 +2,6 @@ namespace Faker\Test\Provider\ar_EG; -use Faker\Calculator\Luhn; use Faker\Provider\ar_EG\Person; use Faker\Test\TestCase; @@ -14,8 +13,7 @@ final class PersonTest extends TestCase public function testNationalIdNumber(): void { $nationalIdNumber = $this->faker->nationalIdNumber(); - self::assertMatchesRegularExpression('/^2\d{13}$/', $nationalIdNumber); - self::assertTrue(Luhn::isValid($nationalIdNumber)); + self::assertMatchesRegularExpression('/^\d{14}$/', $nationalIdNumber); } protected function getProviders(): iterable From e48edf1baba70862bfea9c47fbc5ee7e1796e682 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jun 2023 09:38:42 +0100 Subject: [PATCH 113/229] composer(deps): bump friendsofphp/php-cs-fixer (#653) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.16.0 to 3.17.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.16.0...v3.17.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 74 +++++++++++++-------------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 134cdd5615..af0aa10dcb 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.16.0" + "friendsofphp/php-cs-fixer": "^3.17.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index b9cce18c8b..397e34ea19 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "df971a090ccc82b024ac70866942a898", + "content-hash": "8ce14ad433ee930efb2f4371a3c7024f", "packages": [ { "name": "composer/pcre", @@ -302,16 +302,16 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "8cffffb2218e01f3b370bf763e00e81697725259" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/8cffffb2218e01f3b370bf763e00e81697725259", + "reference": "8cffffb2218e01f3b370bf763e00e81697725259", "shasum": "" }, "require": { @@ -339,9 +339,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.0" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-05-29T18:55:17+00:00" }, { "name": "doctrine/lexer", @@ -423,16 +423,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.16.0", + "version": "v3.17.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc" + "reference": "3f0ed862f22386c55a767461ef5083bddceeed79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", - "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/3f0ed862f22386c55a767461ef5083bddceeed79", + "reference": "3f0ed862f22386c55a767461ef5083bddceeed79", "shasum": "" }, "require": { @@ -507,7 +507,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.16.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.17.0" }, "funding": [ { @@ -515,7 +515,7 @@ "type": "github" } ], - "time": "2023-04-02T19:30:06+00:00" + "time": "2023-05-22T19:59:32+00:00" }, { "name": "psr/cache", @@ -716,16 +716,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -770,7 +770,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -778,20 +778,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "symfony/console", - "version": "v5.4.22", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8" + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3cd51fd2e6c461ca678f84d419461281bd87a0a8", - "reference": "3cd51fd2e6c461ca678f84d419461281bd87a0a8", + "url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", "shasum": "" }, "require": { @@ -861,7 +861,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.22" + "source": "https://github.com/symfony/console/tree/v5.4.24" }, "funding": [ { @@ -877,7 +877,7 @@ "type": "tidelift" } ], - "time": "2023-03-25T09:27:28+00:00" + "time": "2023-05-26T05:13:16+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1112,16 +1112,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.21", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f" + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", - "reference": "e75960b1bbfd2b8c9e483e0d74811d555ca3de9f", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", "shasum": "" }, "require": { @@ -1156,7 +1156,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.21" + "source": "https://github.com/symfony/filesystem/tree/v5.4.23" }, "funding": [ { @@ -1172,7 +1172,7 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-03-02T11:38:35+00:00" }, { "name": "symfony/finder", @@ -1879,16 +1879,16 @@ }, { "name": "symfony/process", - "version": "v5.4.22", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "4b850da0cc3a2a9181c1ed407adbca4733dc839b" + "reference": "e3c46cc5689c8782944274bb30702106ecbe3b64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4b850da0cc3a2a9181c1ed407adbca4733dc839b", - "reference": "4b850da0cc3a2a9181c1ed407adbca4733dc839b", + "url": "https://api.github.com/repos/symfony/process/zipball/e3c46cc5689c8782944274bb30702106ecbe3b64", + "reference": "e3c46cc5689c8782944274bb30702106ecbe3b64", "shasum": "" }, "require": { @@ -1921,7 +1921,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.22" + "source": "https://github.com/symfony/process/tree/v5.4.24" }, "funding": [ { @@ -1937,7 +1937,7 @@ "type": "tidelift" } ], - "time": "2023-03-06T21:29:33+00:00" + "time": "2023-05-17T11:26:05+00:00" }, { "name": "symfony/service-contracts", From ff91a3a111d4b10700b0ac4e2eb8fd2aa8eee28e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jun 2023 09:38:56 +0100 Subject: [PATCH 114/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#654) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.11.0 to 5.12.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.11.0...5.12.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 76 +++++++++++++++++----------------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 7d87223514..58847a5b4b 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.11.0" + "vimeo/psalm": "^5.12.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 6b47755191..dad3d53fce 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "e6d921625f56ff0c149661e6cdf51374", + "content-hash": "86309fa843bd1716e5cbefe131d15afc", "packages": [ { "name": "amphp/amp", @@ -429,16 +429,16 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "8cffffb2218e01f3b370bf763e00e81697725259" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/8cffffb2218e01f3b370bf763e00e81697725259", + "reference": "8cffffb2218e01f3b370bf763e00e81697725259", "shasum": "" }, "require": { @@ -466,9 +466,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.0" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-05-29T18:55:17+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -685,16 +685,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.15.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -735,9 +735,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-05-19T20:20:00+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -851,16 +851,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.1", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "dfc078e8af9c99210337325ff5aa152872c98714" + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dfc078e8af9c99210337325ff5aa152872c98714", - "reference": "dfc078e8af9c99210337325ff5aa152872c98714", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", "shasum": "" }, "require": { @@ -903,28 +903,30 @@ "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.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" }, - "time": "2023-03-27T19:02:04+00:00" + "time": "2023-05-30T18:13:47+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.20.4", + "version": "1.22.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd" + "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", + "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", "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", @@ -948,9 +950,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.20.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.0" }, - "time": "2023-05-02T09:19:37+00:00" + "time": "2023-06-01T12:35:21+00:00" }, { "name": "psr/container", @@ -1182,16 +1184,16 @@ }, { "name": "symfony/console", - "version": "v5.4.23", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c" + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/90f21e27d0d88ce38720556dd164d4a1e4c3934c", - "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c", + "url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", "shasum": "" }, "require": { @@ -1261,7 +1263,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.23" + "source": "https://github.com/symfony/console/tree/v5.4.24" }, "funding": [ { @@ -1277,7 +1279,7 @@ "type": "tidelift" } ], - "time": "2023-04-24T18:47:29+00:00" + "time": "2023-05-26T05:13:16+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2073,16 +2075,16 @@ }, { "name": "vimeo/psalm", - "version": "5.11.0", + "version": "5.12.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "c9b192ab8400fdaf04b2b13d110575adc879aa90" + "reference": "f90118cdeacd0088e7215e64c0c99ceca819e176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/c9b192ab8400fdaf04b2b13d110575adc879aa90", - "reference": "c9b192ab8400fdaf04b2b13d110575adc879aa90", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/f90118cdeacd0088e7215e64c0c99ceca819e176", + "reference": "f90118cdeacd0088e7215e64c0c99ceca819e176", "shasum": "" }, "require": { @@ -2173,9 +2175,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.11.0" + "source": "https://github.com/vimeo/psalm/tree/5.12.0" }, - "time": "2023-05-04T21:35:44+00:00" + "time": "2023-05-22T21:19:03+00:00" }, { "name": "webmozart/assert", From 5674ac4a79b48faf36d8bff4bdf2c5e274b47abc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jun 2023 09:39:08 +0100 Subject: [PATCH 115/229] composer(deps): bump phpstan/extension-installer in /vendor-bin/phpstan (#655) Bumps [phpstan/extension-installer](https://github.com/phpstan/extension-installer) from 1.3.0 to 1.3.1. - [Release notes](https://github.com/phpstan/extension-installer/releases) - [Commits](https://github.com/phpstan/extension-installer/compare/1.3.0...1.3.1) --- updated-dependencies: - dependency-name: phpstan/extension-installer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 23 +++++++++-------------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index c0e917c3e9..71db14b9d9 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "phpstan/extension-installer": "^1.3.0", + "phpstan/extension-installer": "^1.3.1", "phpstan/phpstan": "^1.10.15", "phpstan/phpstan-deprecation-rules": "^1.1.3" }, diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index ecd755a0f9..0d551fc48a 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/composer.lock @@ -4,26 +4,26 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f1e8b9b08e929477210face7bb4d741a", + "content-hash": "138df2ef452a08862d974f139e444db0", "packages": [ { "name": "phpstan/extension-installer", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a" + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f5e02d40f277d28513001976f444d9ff1dc15e9a", - "reference": "f5e02d40f277d28513001976f444d9ff1dc15e9a", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.8.0" + "phpstan/phpstan": "^1.9.0" }, "require-dev": { "composer/composer": "^2.0", @@ -32,12 +32,7 @@ }, "type": "composer-plugin", "extra": { - "class": "PHPStan\\ExtensionInstaller\\Plugin", - "phpstan/extension-installer": { - "ignore": [ - "phpstan/phpstan-phpunit" - ] - } + "class": "PHPStan\\ExtensionInstaller\\Plugin" }, "autoload": { "psr-4": { @@ -51,9 +46,9 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.3.0" + "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" }, - "time": "2023-04-18T13:08:02+00:00" + "time": "2023-05-24T08:59:17+00:00" }, { "name": "phpstan/phpstan", From f22dffaf5339a1bb6edefce903e777dc7a7864c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jun 2023 09:39:19 +0100 Subject: [PATCH 116/229] composer(deps): bump rector/rector in /vendor-bin/rector (#656) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.16.0 to 0.17.0. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.16.0...0.17.0) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index daf132ee10..2f7ecbbd57 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.16.0" + "rector/rector": "^0.17.0" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 367f67377d..a9e8a017ac 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "31d6590ac94472981a79ba104001dbbb", + "content-hash": "96df4562e61b7e6a3e8f8a2651ffb449", "packages": [ { "name": "phpstan/phpstan", @@ -70,21 +70,21 @@ }, { "name": "rector/rector", - "version": "0.16.0", + "version": "0.17.0", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "2125ff71ea05b079562a8f59ca48a97eb78dc07f" + "reference": "d8da002b107c9b64d464bb48101290d4d078df4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/2125ff71ea05b079562a8f59ca48a97eb78dc07f", - "reference": "2125ff71ea05b079562a8f59ca48a97eb78dc07f", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/d8da002b107c9b64d464bb48101290d4d078df4b", + "reference": "d8da002b107c9b64d464bb48101290d4d078df4b", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.14" + "phpstan/phpstan": "^1.10.15" }, "conflict": { "rector/rector-doctrine": "*", @@ -119,7 +119,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.16.0" + "source": "https://github.com/rectorphp/rector/tree/0.17.0" }, "funding": [ { @@ -127,7 +127,7 @@ "type": "github" } ], - "time": "2023-05-05T12:12:17+00:00" + "time": "2023-06-01T09:42:59+00:00" } ], "packages-dev": [], From 73531656cf571664e81b90940a28bd5ece537e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dawid=20Wo=C5=82osowicz?= Date: Sun, 4 Jun 2023 10:18:09 +0200 Subject: [PATCH 117/229] Introduce the Color provider for "pl_PL" locale (#657) --- src/Faker/Provider/pl_PL/Color.php | 40 +++++++++++++++++++++++++ test/Faker/Provider/pl_PL/ColorTest.php | 29 ++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/Faker/Provider/pl_PL/Color.php create mode 100644 test/Faker/Provider/pl_PL/ColorTest.php diff --git a/src/Faker/Provider/pl_PL/Color.php b/src/Faker/Provider/pl_PL/Color.php new file mode 100644 index 0000000000..afc161a887 --- /dev/null +++ b/src/Faker/Provider/pl_PL/Color.php @@ -0,0 +1,40 @@ +faker->colorName()); + self::assertEquals('alabastrowy', $this->faker->colorName()); + } + + public function testSafeColorName(): void + { + self::assertEquals('żółty', $this->faker->safeColorName()); + self::assertEquals('czarny', $this->faker->safeColorName()); + } + + protected function getProviders(): iterable + { + yield new Color($this->faker); + } +} From f64484a5d699d9f7c7e1a483b260340187a96a33 Mon Sep 17 00:00:00 2001 From: CalebW Date: Sat, 10 Jun 2023 06:43:19 -0500 Subject: [PATCH 118/229] Update `randomElements` to return random number of elements when no count is provided (#658) --- src/Faker/Provider/Base.php | 10 ++++++++-- test/Faker/Provider/BaseTest.php | 5 +++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index 675cf89e76..d91552c8a3 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -179,8 +179,10 @@ public static function randomAscii() /** * Returns randomly ordered subsequence of $count elements from a provided array * + * @todo update default $count to `null` (BC) for next major version + * * @param array|class-string|\Traversable $array Array to take elements from. Defaults to a-c - * @param int $count Number of elements to take. + * @param int|null $count Number of elements to take. If `null` then returns random number of elements * @param bool $allowDuplicates Allow elements to be picked several times. Defaults to false * * @throws \InvalidArgumentException @@ -211,7 +213,7 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all $numberOfElements = count($elements); - if (!$allowDuplicates && $numberOfElements < $count) { + if (!$allowDuplicates && null !== $count && $numberOfElements < $count) { throw new \LengthException(sprintf( 'Cannot get %d elements, only %d in array', $count, @@ -219,6 +221,10 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all )); } + if (null === $count) { + $count = mt_rand(1, $numberOfElements); + } + $randomElements = []; $keys = array_keys($elements); diff --git a/test/Faker/Provider/BaseTest.php b/test/Faker/Provider/BaseTest.php index bb64857f8a..78d3b24042 100644 --- a/test/Faker/Provider/BaseTest.php +++ b/test/Faker/Provider/BaseTest.php @@ -580,6 +580,11 @@ public function testRandomElementsWorksWithoutArgument(): void self::assertCount(1, BaseProvider::randomElements(), 'Should work without any input'); } + public function testRandomElementsReturnsRandomCountWhenNull(): void + { + self::assertCount(2, BaseProvider::randomElements(['foo', 'bar', 'baz'], null), 'Should return random count when null'); + } + public function testRandomElementsWorksWithEmptyArray(): void { $randomElements = BaseProvider::randomElements([], 0); From e3daa170d00fde61ea7719ef47bb09bb8f1d9b01 Mon Sep 17 00:00:00 2001 From: Bram Date: Mon, 12 Jun 2023 09:44:38 +0100 Subject: [PATCH 119/229] Update CHANGELOG.md (#659) --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40516fb8ba..0900d4798e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # CHANGELOG -## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.22.0...main) +## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.23.0...main) + +## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) + +- Update `randomElements` to return random number of elements when no count is provided (#658) ## [2023-05-14, v1.22.0](https://github.com/FakerPHP/Faker/compare/v1.21.0..v1.22.0) From 366d2efcd05324e61fcbad1aa56a70b131b345ea Mon Sep 17 00:00:00 2001 From: Vasily Pyatykh Date: Tue, 13 Jun 2023 20:14:06 +0800 Subject: [PATCH 120/229] fix typos: "assymetric" -> asymmetric (#660) --- src/Faker/Provider/en_US/Company.php | 2 +- src/Faker/Provider/es_AR/Company.php | 2 +- src/Faker/Provider/es_ES/Company.php | 2 +- src/Faker/Provider/es_PE/Company.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Faker/Provider/en_US/Company.php b/src/Faker/Provider/en_US/Company.php index ee72fca993..8cab28a95e 100644 --- a/src/Faker/Provider/en_US/Company.php +++ b/src/Faker/Provider/en_US/Company.php @@ -15,7 +15,7 @@ class Company extends \Faker\Provider\Company 'Adaptive', 'Advanced', 'Ameliorated', 'Assimilated', 'Automated', 'Balanced', 'Business-focused', 'Centralized', 'Cloned', 'Compatible', 'Configurable', 'Cross-group', 'Cross-platform', 'Customer-focused', 'Customizable', 'Decentralized', 'De-engineered', 'Devolved', 'Digitized', 'Distributed', 'Diverse', 'Down-sized', 'Enhanced', 'Enterprise-wide', 'Ergonomic', 'Exclusive', 'Expanded', 'Extended', 'Facetoface', 'Focused', 'Front-line', 'Fully-configurable', 'Function-based', 'Fundamental', 'Future-proofed', 'Grass-roots', 'Horizontal', 'Implemented', 'Innovative', 'Integrated', 'Intuitive', 'Inverse', 'Managed', 'Mandatory', 'Monitored', 'Multi-channelled', 'Multi-lateral', 'Multi-layered', 'Multi-tiered', 'Networked', 'Object-based', 'Open-architected', 'Open-source', 'Operative', 'Optimized', 'Optional', 'Organic', 'Organized', 'Persevering', 'Persistent', 'Phased', 'Polarised', 'Pre-emptive', 'Proactive', 'Profit-focused', 'Profound', 'Programmable', 'Progressive', 'Public-key', 'Quality-focused', 'Reactive', 'Realigned', 'Re-contextualized', 'Re-engineered', 'Reduced', 'Reverse-engineered', 'Right-sized', 'Robust', 'Seamless', 'Secured', 'Self-enabling', 'Sharable', 'Stand-alone', 'Streamlined', 'Switchable', 'Synchronised', 'Synergistic', 'Synergized', 'Team-oriented', 'Total', 'Triple-buffered', 'Universal', 'Up-sized', 'Upgradable', 'User-centric', 'User-friendly', 'Versatile', 'Virtual', 'Visionary', 'Vision-oriented', ], [ - '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'assymetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', + '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'asymmetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', ], [ 'ability', 'access', 'adapter', 'algorithm', 'alliance', 'analyzer', 'application', 'approach', 'architecture', 'archive', 'artificialintelligence', 'array', 'attitude', 'benchmark', 'blockchain', 'budgetarymanagement', 'capability', 'capacity', 'challenge', 'circuit', 'collaboration', 'complexity', 'concept', 'conglomeration', 'contingency', 'core', 'customerloyalty', 'database', 'data-warehouse', 'definition', 'emulation', 'encoding', 'encryption', 'extranet', 'firmware', 'flexibility', 'focusgroup', 'forecast', 'frame', 'framework', 'function', 'functionalities', 'GraphicInterface', 'groupware', 'GraphicalUserInterface', 'hardware', 'help-desk', 'hierarchy', 'hub', 'implementation', 'info-mediaries', 'infrastructure', 'initiative', 'installation', 'instructionset', 'interface', 'internetsolution', 'intranet', 'knowledgeuser', 'knowledgebase', 'localareanetwork', 'leverage', 'matrices', 'matrix', 'methodology', 'middleware', 'migration', 'model', 'moderator', 'monitoring', 'moratorium', 'neural-net', 'openarchitecture', 'opensystem', 'orchestration', 'paradigm', 'parallelism', 'policy', 'portal', 'pricingstructure', 'processimprovement', 'product', 'productivity', 'project', 'projection', 'protocol', 'securedline', 'service-desk', 'software', 'solution', 'standardization', 'strategy', 'structure', 'success', 'superstructure', 'support', 'synergy', 'systemengine', 'task-force', 'throughput', 'time-frame', 'toolset', 'utilisation', 'website', 'workforce', diff --git a/src/Faker/Provider/es_AR/Company.php b/src/Faker/Provider/es_AR/Company.php index f14d446716..bc6211cdfa 100644 --- a/src/Faker/Provider/es_AR/Company.php +++ b/src/Faker/Provider/es_AR/Company.php @@ -17,7 +17,7 @@ class Company extends \Faker\Provider\Company 'Adaptive', 'Advanced', 'Ameliorated', 'Assimilated', 'Automated', 'Balanced', 'Business-focused', 'Centralized', 'Cloned', 'Compatible', 'Configurable', 'Cross-group', 'Cross-platform', 'Customer-focused', 'Customizable', 'Decentralized', 'De-engineered', 'Devolved', 'Digitized', 'Distributed', 'Diverse', 'Down-sized', 'Enhanced', 'Enterprise-wide', 'Ergonomic', 'Exclusive', 'Expanded', 'Extended', 'Facetoface', 'Focused', 'Front-line', 'Fully-configurable', 'Function-based', 'Fundamental', 'Future-proofed', 'Grass-roots', 'Horizontal', 'Implemented', 'Innovative', 'Integrated', 'Intuitive', 'Inverse', 'Managed', 'Mandatory', 'Monitored', 'Multi-channelled', 'Multi-lateral', 'Multi-layered', 'Multi-tiered', 'Networked', 'Object-based', 'Open-architected', 'Open-source', 'Operative', 'Optimized', 'Optional', 'Organic', 'Organized', 'Persevering', 'Persistent', 'Phased', 'Polarised', 'Pre-emptive', 'Proactive', 'Profit-focused', 'Profound', 'Programmable', 'Progressive', 'Public-key', 'Quality-focused', 'Reactive', 'Realigned', 'Re-contextualized', 'Re-engineered', 'Reduced', 'Reverse-engineered', 'Right-sized', 'Robust', 'Seamless', 'Secured', 'Self-enabling', 'Sharable', 'Stand-alone', 'Streamlined', 'Switchable', 'Synchronised', 'Synergistic', 'Synergized', 'Team-oriented', 'Total', 'Triple-buffered', 'Universal', 'Up-sized', 'Upgradable', 'User-centric', 'User-friendly', 'Versatile', 'Virtual', 'Visionary', 'Vision-oriented', ], [ - '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'assymetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', + '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'asymmetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', ], [ 'ability', 'access', 'adapter', 'algorithm', 'alliance', 'analyzer', 'application', 'approach', 'architecture', 'archive', 'artificialintelligence', 'array', 'attitude', 'benchmark', 'budgetarymanagement', 'capability', 'capacity', 'challenge', 'circuit', 'collaboration', 'complexity', 'concept', 'conglomeration', 'contingency', 'core', 'customerloyalty', 'database', 'data-warehouse', 'definition', 'emulation', 'encoding', 'encryption', 'extranet', 'firmware', 'flexibility', 'focusgroup', 'forecast', 'frame', 'framework', 'function', 'functionalities', 'GraphicInterface', 'groupware', 'GraphicalUserInterface', 'hardware', 'help-desk', 'hierarchy', 'hub', 'implementation', 'info-mediaries', 'infrastructure', 'initiative', 'installation', 'instructionset', 'interface', 'internetsolution', 'intranet', 'knowledgeuser', 'knowledgebase', 'localareanetwork', 'leverage', 'matrices', 'matrix', 'methodology', 'middleware', 'migration', 'model', 'moderator', 'monitoring', 'moratorium', 'neural-net', 'openarchitecture', 'opensystem', 'orchestration', 'paradigm', 'parallelism', 'policy', 'portal', 'pricingstructure', 'processimprovement', 'product', 'productivity', 'project', 'projection', 'protocol', 'securedline', 'service-desk', 'software', 'solution', 'standardization', 'strategy', 'structure', 'success', 'superstructure', 'support', 'synergy', 'systemengine', 'task-force', 'throughput', 'time-frame', 'toolset', 'utilisation', 'website', 'workforce', diff --git a/src/Faker/Provider/es_ES/Company.php b/src/Faker/Provider/es_ES/Company.php index 73bd3159b2..5d6dafecc2 100644 --- a/src/Faker/Provider/es_ES/Company.php +++ b/src/Faker/Provider/es_ES/Company.php @@ -22,7 +22,7 @@ class Company extends \Faker\Provider\Company 'Adaptive', 'Advanced', 'Ameliorated', 'Assimilated', 'Automated', 'Balanced', 'Business-focused', 'Centralized', 'Cloned', 'Compatible', 'Configurable', 'Cross-group', 'Cross-platform', 'Customer-focused', 'Customizable', 'Decentralized', 'De-engineered', 'Devolved', 'Digitized', 'Distributed', 'Diverse', 'Down-sized', 'Enhanced', 'Enterprise-wide', 'Ergonomic', 'Exclusive', 'Expanded', 'Extended', 'Facetoface', 'Focused', 'Front-line', 'Fully-configurable', 'Function-based', 'Fundamental', 'Future-proofed', 'Grass-roots', 'Horizontal', 'Implemented', 'Innovative', 'Integrated', 'Intuitive', 'Inverse', 'Managed', 'Mandatory', 'Monitored', 'Multi-channelled', 'Multi-lateral', 'Multi-layered', 'Multi-tiered', 'Networked', 'Object-based', 'Open-architected', 'Open-source', 'Operative', 'Optimized', 'Optional', 'Organic', 'Organized', 'Persevering', 'Persistent', 'Phased', 'Polarised', 'Pre-emptive', 'Proactive', 'Profit-focused', 'Profound', 'Programmable', 'Progressive', 'Public-key', 'Quality-focused', 'Reactive', 'Realigned', 'Re-contextualized', 'Re-engineered', 'Reduced', 'Reverse-engineered', 'Right-sized', 'Robust', 'Seamless', 'Secured', 'Self-enabling', 'Sharable', 'Stand-alone', 'Streamlined', 'Switchable', 'Synchronised', 'Synergistic', 'Synergized', 'Team-oriented', 'Total', 'Triple-buffered', 'Universal', 'Up-sized', 'Upgradable', 'User-centric', 'User-friendly', 'Versatile', 'Virtual', 'Visionary', 'Vision-oriented', ], [ - '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'assymetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', + '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'asymmetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', ], [ 'ability', 'access', 'adapter', 'algorithm', 'alliance', 'analyzer', 'application', 'approach', 'architecture', 'archive', 'artificialintelligence', 'array', 'attitude', 'benchmark', 'budgetarymanagement', 'capability', 'capacity', 'challenge', 'circuit', 'collaboration', 'complexity', 'concept', 'conglomeration', 'contingency', 'core', 'customerloyalty', 'database', 'data-warehouse', 'definition', 'emulation', 'encoding', 'encryption', 'extranet', 'firmware', 'flexibility', 'focusgroup', 'forecast', 'frame', 'framework', 'function', 'functionalities', 'GraphicInterface', 'groupware', 'GraphicalUserInterface', 'hardware', 'help-desk', 'hierarchy', 'hub', 'implementation', 'info-mediaries', 'infrastructure', 'initiative', 'installation', 'instructionset', 'interface', 'internetsolution', 'intranet', 'knowledgeuser', 'knowledgebase', 'localareanetwork', 'leverage', 'matrices', 'matrix', 'methodology', 'middleware', 'migration', 'model', 'moderator', 'monitoring', 'moratorium', 'neural-net', 'openarchitecture', 'opensystem', 'orchestration', 'paradigm', 'parallelism', 'policy', 'portal', 'pricingstructure', 'processimprovement', 'product', 'productivity', 'project', 'projection', 'protocol', 'securedline', 'service-desk', 'software', 'solution', 'standardization', 'strategy', 'structure', 'success', 'superstructure', 'support', 'synergy', 'systemengine', 'task-force', 'throughput', 'time-frame', 'toolset', 'utilisation', 'website', 'workforce', diff --git a/src/Faker/Provider/es_PE/Company.php b/src/Faker/Provider/es_PE/Company.php index ff9f50dc11..96a1d13ebd 100644 --- a/src/Faker/Provider/es_PE/Company.php +++ b/src/Faker/Provider/es_PE/Company.php @@ -17,7 +17,7 @@ class Company extends \Faker\Provider\Company 'Adaptive', 'Advanced', 'Ameliorated', 'Assimilated', 'Automated', 'Balanced', 'Business-focused', 'Centralized', 'Cloned', 'Compatible', 'Configurable', 'Cross-group', 'Cross-platform', 'Customer-focused', 'Customizable', 'Decentralized', 'De-engineered', 'Devolved', 'Digitized', 'Distributed', 'Diverse', 'Down-sized', 'Enhanced', 'Enterprise-wide', 'Ergonomic', 'Exclusive', 'Expanded', 'Extended', 'Facetoface', 'Focused', 'Front-line', 'Fully-configurable', 'Function-based', 'Fundamental', 'Future-proofed', 'Grass-roots', 'Horizontal', 'Implemented', 'Innovative', 'Integrated', 'Intuitive', 'Inverse', 'Managed', 'Mandatory', 'Monitored', 'Multi-channelled', 'Multi-lateral', 'Multi-layered', 'Multi-tiered', 'Networked', 'Object-based', 'Open-architected', 'Open-source', 'Operative', 'Optimized', 'Optional', 'Organic', 'Organized', 'Persevering', 'Persistent', 'Phased', 'Polarised', 'Pre-emptive', 'Proactive', 'Profit-focused', 'Profound', 'Programmable', 'Progressive', 'Public-key', 'Quality-focused', 'Reactive', 'Realigned', 'Re-contextualized', 'Re-engineered', 'Reduced', 'Reverse-engineered', 'Right-sized', 'Robust', 'Seamless', 'Secured', 'Self-enabling', 'Sharable', 'Stand-alone', 'Streamlined', 'Switchable', 'Synchronised', 'Synergistic', 'Synergized', 'Team-oriented', 'Total', 'Triple-buffered', 'Universal', 'Up-sized', 'Upgradable', 'User-centric', 'User-friendly', 'Versatile', 'Virtual', 'Visionary', 'Vision-oriented', ], [ - '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'assymetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', + '24hour', '24/7', '3rdgeneration', '4thgeneration', '5thgeneration', '6thgeneration', 'actuating', 'analyzing', 'asymmetric', 'asynchronous', 'attitude-oriented', 'background', 'bandwidth-monitored', 'bi-directional', 'bifurcated', 'bottom-line', 'clear-thinking', 'client-driven', 'client-server', 'coherent', 'cohesive', 'composite', 'context-sensitive', 'contextually-based', 'content-based', 'dedicated', 'demand-driven', 'didactic', 'directional', 'discrete', 'disintermediate', 'dynamic', 'eco-centric', 'empowering', 'encompassing', 'even-keeled', 'executive', 'explicit', 'exuding', 'fault-tolerant', 'foreground', 'fresh-thinking', 'full-range', 'global', 'grid-enabled', 'heuristic', 'high-level', 'holistic', 'homogeneous', 'human-resource', 'hybrid', 'impactful', 'incremental', 'intangible', 'interactive', 'intermediate', 'leadingedge', 'local', 'logistical', 'maximized', 'methodical', 'mission-critical', 'mobile', 'modular', 'motivating', 'multimedia', 'multi-state', 'multi-tasking', 'national', 'needs-based', 'neutral', 'nextgeneration', 'non-volatile', 'object-oriented', 'optimal', 'optimizing', 'radical', 'real-time', 'reciprocal', 'regional', 'responsive', 'scalable', 'secondary', 'solution-oriented', 'stable', 'static', 'systematic', 'systemic', 'system-worthy', 'tangible', 'tertiary', 'transitional', 'uniform', 'upward-trending', 'user-facing', 'value-added', 'web-enabled', 'well-modulated', 'zeroadministration', 'zerodefect', 'zerotolerance', ], [ 'ability', 'access', 'adapter', 'algorithm', 'alliance', 'analyzer', 'application', 'approach', 'architecture', 'archive', 'artificialintelligence', 'array', 'attitude', 'benchmark', 'budgetarymanagement', 'capability', 'capacity', 'challenge', 'circuit', 'collaboration', 'complexity', 'concept', 'conglomeration', 'contingency', 'core', 'customerloyalty', 'database', 'data-warehouse', 'definition', 'emulation', 'encoding', 'encryption', 'extranet', 'firmware', 'flexibility', 'focusgroup', 'forecast', 'frame', 'framework', 'function', 'functionalities', 'GraphicInterface', 'groupware', 'GraphicalUserInterface', 'hardware', 'help-desk', 'hierarchy', 'hub', 'implementation', 'info-mediaries', 'infrastructure', 'initiative', 'installation', 'instructionset', 'interface', 'internetsolution', 'intranet', 'knowledgeuser', 'knowledgebase', 'localareanetwork', 'leverage', 'matrices', 'matrix', 'methodology', 'middleware', 'migration', 'model', 'moderator', 'monitoring', 'moratorium', 'neural-net', 'openarchitecture', 'opensystem', 'orchestration', 'paradigm', 'parallelism', 'policy', 'portal', 'pricingstructure', 'processimprovement', 'product', 'productivity', 'project', 'projection', 'protocol', 'securedline', 'service-desk', 'software', 'solution', 'standardization', 'strategy', 'structure', 'success', 'superstructure', 'support', 'synergy', 'systemengine', 'task-force', 'throughput', 'time-frame', 'toolset', 'utilisation', 'website', 'workforce', From c21a797c618b6611058f6787b9289e9aadb98fe9 Mon Sep 17 00:00:00 2001 From: EdgarsN Date: Wed, 14 Jun 2023 19:09:03 +0300 Subject: [PATCH 121/229] Fix: lv_LV postcode format (#661) * fix lv_LV postcode format * test added --- src/Faker/Provider/lv_LV/Address.php | 2 +- test/Faker/Provider/lv_LV/AddressTest.php | 25 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/Faker/Provider/lv_LV/AddressTest.php diff --git a/src/Faker/Provider/lv_LV/Address.php b/src/Faker/Provider/lv_LV/Address.php index fc8db5c196..0bddcc53b9 100644 --- a/src/Faker/Provider/lv_LV/Address.php +++ b/src/Faker/Provider/lv_LV/Address.php @@ -12,7 +12,7 @@ class Address extends \Faker\Provider\Address ]; protected static $buildingNumber = ['%#']; - protected static $postcode = ['LV ####']; + protected static $postcode = ['LV-####']; /** * @see https://lv.wikipedia.org/wiki/Suver%C4%93no_valstu_uzskait%C4%ABjums diff --git a/test/Faker/Provider/lv_LV/AddressTest.php b/test/Faker/Provider/lv_LV/AddressTest.php new file mode 100644 index 0000000000..275340516e --- /dev/null +++ b/test/Faker/Provider/lv_LV/AddressTest.php @@ -0,0 +1,25 @@ +faker->postcode(); + self::assertNotEmpty($postcode); + self::assertIsString($postcode); + self::assertMatchesRegularExpression('/LV-\d{4}/', $postcode); + } + + protected function getProviders(): iterable + { + yield new Address($this->faker); + } +} From 2d4ef8ec64863281a813c7b992653b7c164ff0c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 09:57:45 +0200 Subject: [PATCH 122/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#669) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.12.0 to 5.13.1. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.12.0...5.13.1) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 60 ++++++++++++++++++---------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 58847a5b4b..1b3cd62fb3 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.12.0" + "vimeo/psalm": "^5.13.1" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index dad3d53fce..ea2b3dd065 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "86309fa843bd1716e5cbefe131d15afc", + "content-hash": "37211349afb3a730daadebfce9228beb", "packages": [ { "name": "amphp/amp", @@ -429,25 +429,29 @@ }, { "name": "doctrine/deprecations", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "8cffffb2218e01f3b370bf763e00e81697725259" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/8cffffb2218e01f3b370bf763e00e81697725259", - "reference": "8cffffb2218e01f3b370bf763e00e81697725259", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "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" @@ -466,9 +470,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2023-05-29T18:55:17+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -685,16 +689,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.5", + "version": "v4.16.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", - "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", "shasum": "" }, "require": { @@ -735,9 +739,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" }, - "time": "2023-05-19T20:20:00+00:00" + "time": "2023-06-25T14:52:30+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1350,16 +1354,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.23", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", "shasum": "" }, "require": { @@ -1394,7 +1398,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.23" + "source": "https://github.com/symfony/filesystem/tree/v5.4.25" }, "funding": [ { @@ -1410,7 +1414,7 @@ "type": "tidelift" } ], - "time": "2023-03-02T11:38:35+00:00" + "time": "2023-05-31T13:04:02+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2075,16 +2079,16 @@ }, { "name": "vimeo/psalm", - "version": "5.12.0", + "version": "5.13.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "f90118cdeacd0088e7215e64c0c99ceca819e176" + "reference": "086b94371304750d1c673315321a55d15fc59015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/f90118cdeacd0088e7215e64c0c99ceca819e176", - "reference": "f90118cdeacd0088e7215e64c0c99ceca819e176", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/086b94371304750d1c673315321a55d15fc59015", + "reference": "086b94371304750d1c673315321a55d15fc59015", "shasum": "" }, "require": { @@ -2175,9 +2179,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.12.0" + "source": "https://github.com/vimeo/psalm/tree/5.13.1" }, - "time": "2023-05-22T21:19:03+00:00" + "time": "2023-06-27T16:39:49+00:00" }, { "name": "webmozart/assert", From 6637e5a58d959e5c290c2d79e967da244d23912f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 09:58:05 +0200 Subject: [PATCH 123/229] composer(deps): bump rector/rector in /vendor-bin/rector (#667) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.17.0 to 0.17.2. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.17.0...0.17.2) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 2f7ecbbd57..176d5e8265 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.17.0" + "rector/rector": "^0.17.2" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index a9e8a017ac..b0e8881b4e 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "96df4562e61b7e6a3e8f8a2651ffb449", + "content-hash": "3dd80c93457ab30710aed15359aecad9", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.15", + "version": "1.10.22", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" + "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/97d694dfd4ceb57bcce4e3b38548f13ea62e4287", + "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287", "shasum": "" }, "require": { @@ -66,25 +66,25 @@ "type": "tidelift" } ], - "time": "2023-05-09T15:28:01+00:00" + "time": "2023-06-30T20:04:11+00:00" }, { "name": "rector/rector", - "version": "0.17.0", + "version": "0.17.2", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "d8da002b107c9b64d464bb48101290d4d078df4b" + "reference": "b8f72ff7e4914bb1d1557cc5c6d33898f7fd2bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/d8da002b107c9b64d464bb48101290d4d078df4b", - "reference": "d8da002b107c9b64d464bb48101290d4d078df4b", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/b8f72ff7e4914bb1d1557cc5c6d33898f7fd2bfb", + "reference": "b8f72ff7e4914bb1d1557cc5c6d33898f7fd2bfb", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.15" + "phpstan/phpstan": "^1.10.20" }, "conflict": { "rector/rector-doctrine": "*", @@ -119,7 +119,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.17.0" + "source": "https://github.com/rectorphp/rector/tree/0.17.2" }, "funding": [ { @@ -127,7 +127,7 @@ "type": "github" } ], - "time": "2023-06-01T09:42:59+00:00" + "time": "2023-06-29T10:03:28+00:00" } ], "packages-dev": [], From d08588de89e45bd16adcaeeb6d40449f2b89ea79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 10:00:23 +0200 Subject: [PATCH 124/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#666) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.15 to 1.10.22. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.15...1.10.22) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 71db14b9d9..a56f4245a5 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.15", + "phpstan/phpstan": "^1.10.22", "phpstan/phpstan-deprecation-rules": "^1.1.3" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 0d551fc48a..b9cebef88a 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "138df2ef452a08862d974f139e444db0", + "content-hash": "863043782a582fdfd295bb0a0cd51c08", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.15", + "version": "1.10.22", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd" + "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/762c4dac4da6f8756eebb80e528c3a47855da9bd", - "reference": "762c4dac4da6f8756eebb80e528c3a47855da9bd", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/97d694dfd4ceb57bcce4e3b38548f13ea62e4287", + "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-05-09T15:28:01+00:00" + "time": "2023-06-30T20:04:11+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 5c1e5005cc0b11143e535ed50c965e58a46225b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 2 Jul 2023 10:09:21 +0200 Subject: [PATCH 125/229] composer(deps): bump friendsofphp/php-cs-fixer from 3.17.0 to 3.20.0 in /vendor-bin/php-cs-fixer (#668) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump friendsofphp/php-cs-fixer Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.17.0 to 3.20.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.17.0...v3.20.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Run 'make cs' * Fix: Whitespace * Enhancement: Configure blank_lines_before_namespace instead of deprecated single_blank_line_before_namespace fixer --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- .php-cs-fixer.dist.php | 5 ++- src/Faker/Provider/nl_BE/Person.php | 14 +++---- src/Faker/Provider/pt_BR/Text.php | 56 +++++++++++++-------------- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 48 ++++++++++++----------- 5 files changed, 66 insertions(+), 59 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index ff9a013169..90a8d4feb8 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -54,6 +54,10 @@ 'yield', ], ], + 'blank_lines_before_namespace' => [ + 'max_line_breaks' => 2, + 'min_line_breaks' => 2, + ], 'cast_spaces' => true, 'class_attributes_separation' => [ 'elements' => [ @@ -186,7 +190,6 @@ 'return_type_declaration' => true, 'semicolon_after_instruction' => true, 'short_scalar_cast' => true, - 'single_blank_line_before_namespace' => true, 'single_line_comment_style' => true, 'single_quote' => true, 'single_space_around_construct' => [ diff --git a/src/Faker/Provider/nl_BE/Person.php b/src/Faker/Provider/nl_BE/Person.php index f4a60f96b4..55d6f18eaa 100644 --- a/src/Faker/Provider/nl_BE/Person.php +++ b/src/Faker/Provider/nl_BE/Person.php @@ -73,17 +73,17 @@ class Person extends \Faker\Provider\Person ]; /** - * Belgian Rijksregister numbers are used to identify each citizen, - * it consists of three parts, the person's day of birth, in the - * format 'ymd', followed by a number between 1 and 997, odd for - * males, even for females. The last part is used to check if it's - * a valid number. + * Belgian Rijksregister numbers are used to identify each citizen, + * it consists of three parts, the person's day of birth, in the + * format 'ymd', followed by a number between 1 and 997, odd for + * males, even for females. The last part is used to check if it's + * a valid number. * * @see https://nl.wikipedia.org/wiki/Rijksregisternummer * - * @param string|null $gender 'male', 'female' or null for any + * @param string|null $gender 'male', 'female' or null for any * - * @return string + * @return string */ public static function rrn($gender = null) { diff --git a/src/Faker/Provider/pt_BR/Text.php b/src/Faker/Provider/pt_BR/Text.php index d177c8725c..ce60728557 100644 --- a/src/Faker/Provider/pt_BR/Text.php +++ b/src/Faker/Provider/pt_BR/Text.php @@ -5,52 +5,52 @@ class Text extends \Faker\Provider\Text { /** - * The Project Gutenberg EBook of Dom Casmurro, by Machado de Assis + * The Project Gutenberg EBook of Dom Casmurro, by Machado de Assis * - * This eBook is for the use of anyone anywhere in the United States and most - * other parts of the world at no cost and with almost no restrictions - * whatsoever. You may copy it, give it away or re-use it under the terms of - * the Project Gutenberg License included with this eBook or online at - * www.gutenberg.org. If you are not located in the United States, you'll have - * to check the laws of the country where you are located before using this ebook. + * This eBook is for the use of anyone anywhere in the United States and most + * other parts of the world at no cost and with almost no restrictions + * whatsoever. You may copy it, give it away or re-use it under the terms of + * the Project Gutenberg License included with this eBook or online at + * www.gutenberg.org. If you are not located in the United States, you'll have + * to check the laws of the country where you are located before using this ebook. * - * Title: Dom Casmurro + * Title: Dom Casmurro * - * Author: Machado de Assis + * Author: Machado de Assis * - * Release Date: October 15, 2017 [EBook #55752] + * Release Date: October 15, 2017 [EBook #55752] * - * Language: Portuguese + * Language: Portuguese * - * *** START OF THIS PROJECT GUTENBERG EBOOK DOM CASMURRO *** + * *** START OF THIS PROJECT GUTENBERG EBOOK DOM CASMURRO *** * - * Produced by Laura Natal Rodriguez & Marc D'Hooghe at Free - * Literature (online soon in an extended version,also linking - * to free sources for education worldwide ... MOOC's, - * educational materials,...) (Images generously made available - * by the Bibliotheca Nacional Digital Brasil.) + * Produced by Laura Natal Rodriguez & Marc D'Hooghe at Free + * Literature (online soon in an extended version,also linking + * to free sources for education worldwide ... MOOC's, + * educational materials,...) (Images generously made available + * by the Bibliotheca Nacional Digital Brasil.) * - * DOM CASMURRO + * DOM CASMURRO * - * POR + * POR * - * MACHADO DE ASSIS + * MACHADO DE ASSIS * - * DA ACADEMIA BRAZILEIRA + * DA ACADEMIA BRAZILEIRA * - * H. GARNIER, LIVREIRO-EDITOR + * H. GARNIER, LIVREIRO-EDITOR * - * RUA MOREIRA CEZAR, 71 + * RUA MOREIRA CEZAR, 71 * - * RIO DE JANEIRO + * RIO DE JANEIRO * - * 6, RUE DES SAINTS-PÈRES, 6 + * 6, RUE DES SAINTS-PÈRES, 6 * - * PARIZ + * PARIZ * - * @see https://www.gutenberg.org/cache/epub/55752/pg55752.txt + * @see https://www.gutenberg.org/cache/epub/55752/pg55752.txt * - * @var string + * @var string */ protected static $baseText = <<<'EOT' I diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index af0aa10dcb..b49e67eb2b 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.17.0" + "friendsofphp/php-cs-fixer": "^3.20.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 397e34ea19..8abed99b19 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "8ce14ad433ee930efb2f4371a3c7024f", + "content-hash": "9950cb32653c494c4cd0bf260df0453e", "packages": [ { "name": "composer/pcre", @@ -302,25 +302,29 @@ }, { "name": "doctrine/deprecations", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "8cffffb2218e01f3b370bf763e00e81697725259" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/8cffffb2218e01f3b370bf763e00e81697725259", - "reference": "8cffffb2218e01f3b370bf763e00e81697725259", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "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" @@ -339,9 +343,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2023-05-29T18:55:17+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/lexer", @@ -423,16 +427,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.17.0", + "version": "v3.20.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "3f0ed862f22386c55a767461ef5083bddceeed79" + "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/3f0ed862f22386c55a767461ef5083bddceeed79", - "reference": "3f0ed862f22386c55a767461ef5083bddceeed79", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/0e8249e0b15e2bc022fbbd1090ce29d071481e69", + "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69", "shasum": "" }, "require": { @@ -507,7 +511,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.17.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.20.0" }, "funding": [ { @@ -515,7 +519,7 @@ "type": "github" } ], - "time": "2023-05-22T19:59:32+00:00" + "time": "2023-06-27T20:22:39+00:00" }, { "name": "psr/cache", @@ -1112,16 +1116,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.23", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", "shasum": "" }, "require": { @@ -1156,7 +1160,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.23" + "source": "https://github.com/symfony/filesystem/tree/v5.4.25" }, "funding": [ { @@ -1172,7 +1176,7 @@ "type": "tidelift" } ], - "time": "2023-03-02T11:38:35+00:00" + "time": "2023-05-31T13:04:02+00:00" }, { "name": "symfony/finder", From 35bddf23e27db8978d079fa5cf6bd414cdea42dc Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Thu, 6 Jul 2023 08:40:21 +0200 Subject: [PATCH 126/229] Add `$format` to `image` DocBlock (#670) --- src/Faker/Generator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index 2cad02d7a8..225e8e5313 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -279,7 +279,7 @@ * * @property string $image * - * @method string image($dir = null, $width = 640, $height = 480, $category = null, $fullPath = true, $randomize = true, $word = null, $gray = false) + * @method string image($dir = null, $width = 640, $height = 480, $category = null, $fullPath = true, $randomize = true, $word = null, $gray = false, string $format = 'png') * * @property string $email * From 05bc4defd822512913afc209372f4f769bbfc0e8 Mon Sep 17 00:00:00 2001 From: EdgarsN Date: Sun, 9 Jul 2023 09:22:21 +0300 Subject: [PATCH 127/229] Fix: lv_LV generating invalid personal identity numbers (#663) --- src/Faker/Provider/lv_LV/Person.php | 28 +++++++++++++++--- test/Faker/Provider/lv_LV/PersonTest.php | 37 ++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 test/Faker/Provider/lv_LV/PersonTest.php diff --git a/src/Faker/Provider/lv_LV/Person.php b/src/Faker/Provider/lv_LV/Person.php index d251f891a6..4e9b93b75d 100644 --- a/src/Faker/Provider/lv_LV/Person.php +++ b/src/Faker/Provider/lv_LV/Person.php @@ -2,7 +2,6 @@ namespace Faker\Provider\lv_LV; -use Faker\Calculator\Luhn; use Faker\Provider\DateTime; class Person extends \Faker\Provider\Person @@ -145,11 +144,32 @@ public function personalIdentityNumber(\DateTime $birthdate = null) $birthdate = DateTime::dateTimeThisCentury(); } + $year = $birthdate->format('Y'); + + if ($year >= 2000 && $year <= 2099) { + $century = 2; + } elseif ($year >= 1900 && $year <= 1999) { + $century = 1; + } else { + $century = 0; + } + $datePart = $birthdate->format('dmy'); - $randomDigits = (string) static::numerify('####'); + $serialNumber = static::numerify('###'); + + $partialNumberSplit = str_split($datePart . $century . $serialNumber); + + $idDigitValidator = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; + $total = 0; + + foreach ($partialNumberSplit as $key => $digit) { + if (isset($idDigitValidator[$key])) { + $total += $idDigitValidator[$key] * (int) $digit; + } + } - $checksum = Luhn::computeCheckDigit($datePart . $randomDigits); + $checksumDigit = (1101 - $total) % 11 % 10; - return $datePart . '-' . $randomDigits . $checksum; + return $datePart . '-' . $century . $serialNumber . $checksumDigit; } } diff --git a/test/Faker/Provider/lv_LV/PersonTest.php b/test/Faker/Provider/lv_LV/PersonTest.php new file mode 100644 index 0000000000..94a3a05365 --- /dev/null +++ b/test/Faker/Provider/lv_LV/PersonTest.php @@ -0,0 +1,37 @@ +faker->personalIdentityNumber(); + + self::assertMatchesRegularExpression('/^[0-9]{6}-[0-9]{5}$/', $idNumber); + } + + public function testChecksumDigitCalculation(): void + { + $idNumber = $this->faker->personalIdentityNumber(\DateTime::createFromFormat('Y-m-d', '1981-05-24')); + + $serialNumber = substr($idNumber, 8, 3); + $serialNumberSplit = str_split($serialNumber); + + // calculate checksum, using static digits from date (2 4 0 5 8 1 1) and inserting random serial number digits + $checksumDigit = (1101 - (1 * 2 + 6 * 4 + 3 * 0 + 7 * 5 + 9 * 8 + 10 * 1 + 5 * 1 + 8 * (int) $serialNumberSplit[0] + 4 * (int) $serialNumberSplit[1] + 2 * (int) $serialNumberSplit[2])) % 11 % 10; + + self::assertSame('240581-1' . $serialNumber . $checksumDigit, $idNumber); + } + + protected function getProviders(): iterable + { + yield new Person($this->faker); + } +} From a5f88f759ef348098a9ab27def8d222347c609a7 Mon Sep 17 00:00:00 2001 From: Tomasz Klim Date: Sat, 15 Jul 2023 10:43:43 +0200 Subject: [PATCH 128/229] Fix for polish street names + more polish TLDs (#664) --- src/Faker/Provider/pl_PL/Address.php | 174 +++++++++++++------------- src/Faker/Provider/pl_PL/Internet.php | 2 +- 2 files changed, 86 insertions(+), 90 deletions(-) diff --git a/src/Faker/Provider/pl_PL/Address.php b/src/Faker/Provider/pl_PL/Address.php index ca42cb8c31..a7b01bbb1b 100644 --- a/src/Faker/Provider/pl_PL/Address.php +++ b/src/Faker/Provider/pl_PL/Address.php @@ -99,101 +99,97 @@ class Address extends \Faker\Provider\Address * @see http://www.poczta-polska.pl/ */ protected static $street = [ - '1 Maja', '3 Maja', '11 Listopada', 'Agrestowa', 'Akacjowa', 'Andersa Władysława', 'Armii Krajowej', - 'Asnyka Adama', 'Astrów', 'Azaliowa', 'Baczyńskiego Krzysztofa Kamila', 'Bałtycka', - 'Barlickiego Norberta', 'Batalionów Chłopskich', 'Batorego Stefana', 'Bema Józefa', - 'Bema Józefa', 'Beskidzka', 'Białostocka', 'Bielska', 'Bieszczadzka', 'Błękitna', - 'Boczna', 'Bogusławskiego Wojciecha', 'Bohaterów Westerplatte', 'Bolesława Chrobrego', - 'Bolesława Krzywoustego', 'Borowa', 'Botaniczna', 'Bracka', 'Bratków', 'Broniewskiego Władysława', - 'Brzechwy Jana', 'Brzoskwiniowa', 'Brzozowa', 'Budowlanych', 'Bukowa', 'Bursztynowa', - 'Bydgoska', 'Bytomska', 'Cedrowa', 'Cegielniana', 'Ceglana', 'Chabrowa', 'Chełmońskiego Józefa', - 'Chłodna', 'Chłopska', 'Chmielna', 'Chopina Fryderyka', 'Chorzowska', 'Chrobrego Bolesława', - 'Ciasna', 'Cicha', 'Cieszyńska', 'Cisowa', 'Cmentarna', 'Curie-Skłodowskiej Marii', - 'Czarnieckiego Stefana', 'Czereśniowa', 'Częstochowska', 'Czwartaków', 'Daleka', 'Daszyńskiego Ignacego', - 'Dąbrowskiego Jana Henryka', 'Dąbrowskiego Jarosława', 'Dąbrowskiego Jarosława', - 'Dąbrowskiej Marii', 'Dąbrowszczaków', 'Dąbrówki', 'Dębowa', 'Diamentowa', 'Długa', - 'Długosza Jana', 'Dmowskiego Romana', 'Dobra', 'Dolna', 'Dożynkowa', 'Drzymały Michała', - 'Dubois Stanisława', 'Dworcowa', 'Dworska', 'Działkowa', 'Energetyków', 'Fabryczna', - 'Fałata Juliana', 'Fiołkowa', 'Folwarczna', 'Franciszkańska', 'Francuska', 'Fredry Aleksandra', - 'Gagarina Jurija', 'Gajowa', 'Gałczyńskiego Konstantego Ildefonsa', 'Gdańska', 'Gdyńska', - 'Gliwicka', 'Głogowa', 'Głogowska', 'Głowackiego Bartosza', 'Główna', 'Gminna', 'Gnieźnieńska', - 'Gojawiczyńskiej Poli', 'Gołębia', 'Gościnna', 'Górna', 'Górnicza', 'Górnośląska', - 'Grabowa', 'Graniczna', 'Granitowa', 'Grochowska', 'Grodzka', 'Grota-Roweckiego Stefana', - 'Grottgera Artura', 'Grójecka', 'Grunwaldzka', 'Grzybowa', 'Hallera Józefa', 'Handlowa', - 'Harcerska', 'Hetmańska', 'Hoża', 'Husarska', 'Hutnicza', 'Inżynierska', 'Iwaszkiewicza Jarosława', - 'Jagiellońska', 'Jagiellońskie Os.', 'Jagiełły Władysława', 'Jagodowa', 'Jałowcowa', - 'Jana Pawła II', 'Jana Pawła II Al.', 'Jaracza Stefana', 'Jarzębinowa', 'Jaskółcza', - 'Jasna', 'Jastrzębia', 'Jaśminowa', 'Jaworowa', 'Jerozolimskie Al.', 'Jesienna', 'Jesionowa', - 'Jeżynowa', 'Jodłowa', 'Kalinowa', 'Kaliska', 'Kamienna', 'Karłowicza Mieczysława', - 'Karpacka', 'Kartuska', 'Kasprowicza Jana', 'Kasprzaka Marcina', 'Kasztanowa', 'Kaszubska', - 'Katowicka', 'Kazimierza Wielkiego', 'Kielecka', 'Kilińskiego Jana', 'Kleeberga Franciszka', - 'Klonowa', 'Kłosowa', 'Kochanowskiego Jana', 'Kolberga Oskara', 'Kolejowa', 'Kolorowa', - 'Kołłątaja Hugo', 'Kołłątaja Hugona', 'Kołobrzeska', 'Konarskiego Stanisława', - 'Konopnickiej Marii', 'Konstytucji 3 Maja', 'Konwaliowa', 'Kopalniana', 'Kopernika Mikołaja', - 'Koralowa', 'Korczaka Janusza', 'Korfantego Wojciecha', 'Kosmonautów', 'Kossaka Juliusza', - 'Kosynierów', 'Koszalińska', 'Koszykowa', 'Kościelna', 'Kościuszki Tadeusza', 'Kościuszki Tadeusza Pl.', - 'Kowalska', 'Krakowska', 'Krańcowa', 'Krasickiego Ignacego', 'Krasińskiego Zygmunta', - 'Kraszewskiego Józefa Ignacego', 'Kresowa', 'Kręta', 'Królewska', 'Królowej Jadwigi', - 'Krótka', 'Krucza', 'Kruczkowskiego Leona', 'Krzywa', 'Księżycowa', 'Kujawska', 'Kusocińskiego Janusza', - 'Kwiatkowskiego Eugeniusza', 'Kwiatowa', 'Lawendowa', 'Lazurowa', 'Lechicka', 'Legionów', - 'Legnicka', 'Lelewela Joachima', 'Leszczynowa', 'Leśmiana Bolesława', 'Leśna', 'Letnia', - 'Ligonia Juliusza', 'Liliowa', 'Limanowskiego Bolesława', 'Lipowa', 'Lisia', 'Litewska', - 'Lompy Józefa', 'Lotnicza', 'Lotników', 'Lubelska', 'Ludowa', 'Lwowska', 'Łabędzia', - 'Łagiewnicka', 'Łanowa', 'Łączna', 'Łąkowa', 'Łokietka Władysława', 'Łomżyńska', - 'Łowicka', 'Łódzka', 'Łukasiewicza Ignacego', 'Łużycka', 'Maczka Stanisława', - 'Magazynowa', 'Majowa', 'Makowa', 'Makuszyńskiego Kornela', 'Malczewskiego Jacka', 'Malinowa', - 'Mała', 'Małachowskiego Stanisława', 'Małopolska', 'Marszałkowska', 'Matejki Jana', - 'Mazowiecka', 'Mazurska', 'Miarki Karola', 'Mickiewicza Adama', 'Miedziana', 'Mieszka I', - 'Miła', 'Miodowa', 'Młynarska', 'Młyńska', 'Modlińska', 'Modra', 'Modrzejewskiej Heleny', - 'Modrzewiowa', 'Mokra', 'Moniuszki Stanisława', 'Morcinka Gustawa', 'Morelowa', 'Morska', - 'Mostowa', 'Myśliwska', 'Nadbrzeżna', 'Nadrzeczna', 'Nałkowskiej Zofii', 'Narutowicza Gabriela', - 'Niecała', 'Niedziałkowskiego Mieczysława', 'Niemcewicza Juliana Ursyna', 'Niepodległości', - 'Niepodległości Al.', 'Niska', 'Norwida Cypriana Kamila', 'Nowa', 'Nowowiejska', 'Nowowiejskiego Feliksa', + '1 Maja', '3 Maja', '11 Listopada', 'Agrestowa', 'Akacjowa', 'Andersa', 'Armii Krajowej', + 'Asnyka', 'Astrów', 'Azaliowa', 'Baczyńskiego', 'Bałtycka', 'Barlickiego', 'Batalionów Chłopskich', + 'Batorego', 'Bema', 'Beskidzka', 'Białostocka', 'Bielska', 'Bieszczadzka', 'Błękitna', + 'Boczna', 'Bogusławskiego', 'Bohaterów Westerplatte', 'Bolesława Chrobrego', + 'Bolesława Krzywoustego', 'Borowa', 'Botaniczna', 'Bracka', 'Bratków', 'Broniewskiego', + 'Brzechwy', 'Brzoskwiniowa', 'Brzozowa', 'Budowlanych', 'Bukowa', 'Bursztynowa', + 'Bydgoska', 'Bytomska', 'Cedrowa', 'Cegielniana', 'Ceglana', 'Chabrowa', 'Chełmońskiego', + 'Chłodna', 'Chłopska', 'Chmielna', 'Chopina Fryderyka', 'Chorzowska', + 'Ciasna', 'Cicha', 'Cieszyńska', 'Cisowa', 'Cmentarna', 'Curie-Skłodowskiej', + 'Czarnieckiego', 'Czereśniowa', 'Częstochowska', 'Czwartaków', 'Daleka', 'Daszyńskiego', + 'Dąbrowskiego', 'Dąbrowskiej', 'Dąbrowszczaków', 'Dąbrówki', 'Dębowa', 'Diamentowa', 'Długa', + 'Długosza', 'Dmowskiego', 'Dobra', 'Dolna', 'Dożynkowa', 'Drzymały', + 'Dworcowa', 'Dworska', 'Działkowa', 'Energetyków', 'Fabryczna', + 'Fałata', 'Fiołkowa', 'Folwarczna', 'Franciszkańska', 'Francuska', 'Fredry', + 'Gagarina', 'Gajowa', 'Gałczyńskiego', 'Gdańska', 'Gdyńska', + 'Gliwicka', 'Głogowa', 'Głogowska', 'Głowackiego', 'Główna', 'Gminna', 'Gnieźnieńska', + 'Gojawiczyńskiej', 'Gołębia', 'Gościnna', 'Górna', 'Górnicza', 'Górnośląska', + 'Grabowa', 'Graniczna', 'Granitowa', 'Grochowska', 'Grodzka', 'Grota-Roweckiego', + 'Grottgera', 'Grójecka', 'Grunwaldzka', 'Grzybowa', 'Hallera', 'Handlowa', + 'Harcerska', 'Hetmańska', 'Hoża', 'Husarska', 'Hutnicza', 'Inżynierska', 'Iwaszkiewicza', + 'Jagiellońska', 'Os. Jagiellońskie', 'Jagiełły', 'Jagodowa', 'Jałowcowa', + 'Jana Pawła II', 'Al. Jana Pawła II', 'Jaracza', 'Jarzębinowa', 'Jaskółcza', + 'Jasna', 'Jastrzębia', 'Jaśminowa', 'Jaworowa', 'Al. Jerozolimskie', 'Jesienna', 'Jesionowa', + 'Jeżynowa', 'Jodłowa', 'Kalinowa', 'Kaliska', 'Kamienna', 'Karłowicza', + 'Karpacka', 'Kartuska', 'Kasprowicza', 'Kasprzaka Marcina', 'Kasztanowa', 'Kaszubska', + 'Katowicka', 'Kazimierza Wielkiego', 'Kielecka', 'Kilińskiego', 'Kleeberga', + 'Klonowa', 'Kłosowa', 'Kochanowskiego', 'Kolberga', 'Kolejowa', 'Kolorowa', + 'Kołłątaja', 'Kołobrzeska', 'Konarskiego', + 'Konopnickiej', 'Konstytucji 3 Maja', 'Konwaliowa', 'Kopalniana', 'Kopernika', + 'Koralowa', 'Korczaka', 'Korfantego', 'Kosmonautów', 'Kossaka', + 'Kosynierów', 'Koszalińska', 'Koszykowa', 'Kościelna', 'Kościuszki', 'Pl. Kościuszki', + 'Kowalska', 'Krakowska', 'Krańcowa', 'Krasickiego', 'Krasińskiego', + 'Kraszewskiego', 'Kresowa', 'Kręta', 'Królewska', 'Królowej Jadwigi', + 'Krótka', 'Krucza', 'Kruczkowskiego', 'Krzywa', 'Księżycowa', 'Kujawska', 'Kusocińskiego', + 'Kwiatkowskiego', 'Kwiatowa', 'Lawendowa', 'Lazurowa', 'Lechicka', 'Legionów', + 'Legnicka', 'Lelewela', 'Leszczynowa', 'Leśmiana', 'Leśna', 'Letnia', + 'Ligonia', 'Liliowa', 'Limanowskiego', 'Lipowa', 'Lisia', 'Litewska', + 'Lompy', 'Lotnicza', 'Lotników', 'Lubelska', 'Ludowa', 'Lwowska', 'Łabędzia', + 'Łagiewnicka', 'Łanowa', 'Łączna', 'Łąkowa', 'Łokietka', 'Łomżyńska', + 'Łowicka', 'Łódzka', 'Łukasiewicza', 'Łużycka', 'Maczka', + 'Magazynowa', 'Majowa', 'Makowa', 'Makuszyńskiego', 'Malczewskiego', 'Malinowa', + 'Mała', 'Małachowskiego', 'Małopolska', 'Marszałkowska', 'Matejki', + 'Mazowiecka', 'Mazurska', 'Miarki', 'Mickiewicza', 'Miedziana', 'Mieszka I', + 'Miła', 'Miodowa', 'Młynarska', 'Młyńska', 'Modlińska', 'Modra', 'Modrzejewskiej', + 'Modrzewiowa', 'Mokra', 'Moniuszki', 'Morcinka', 'Morelowa', 'Morska', + 'Mostowa', 'Myśliwska', 'Nadbrzeżna', 'Nadrzeczna', 'Nałkowskiej', 'Narutowicza', + 'Niecała', 'Niedziałkowskiego', 'Niemcewicza', 'Niepodległości', + 'Al. Niepodległości', 'Niska', 'Norwida', 'Nowa', 'Nowowiejska', 'Nowowiejskiego', 'Nowy Świat', 'Obrońców Westerplatte', 'Odrodzenia', 'Odrzańska', 'Ogrodowa', 'Okopowa', - 'Okólna', 'Okrężna', 'Okrzei Stefana', 'Okulickiego Leopolda', 'Olchowa', 'Olimpijska', - 'Olsztyńska', 'Opolska', 'Orkana Władysława', 'Orla', 'Orzechowa', 'Orzeszkowej Elizy', - 'Osiedlowa', 'Oświęcimska', 'Owocowa', 'Paderewskiego Ignacego', 'Parkowa', 'Partyzantów', - 'Patriotów', 'Pawia', 'Perłowa', 'Piaskowa', 'Piastowska', 'Piastowskie Os.', 'Piekarska', - 'Piękna', 'Piłsudskiego Józefa', 'Piłsudskiego Józefa', 'Piłsudskiego Józefa Al.', - 'Piotrkowska', 'Piwna', 'Plater Emilii', 'Plebiscytowa', 'Płocka', 'Pocztowa', 'Podchorążych', + 'Okólna', 'Okrężna', 'Okrzei', 'Okulickiego', 'Olchowa', 'Olimpijska', + 'Olsztyńska', 'Opolska', 'Orkana', 'Orla', 'Orzechowa', 'Orzeszkowej', + 'Osiedlowa', 'Oświęcimska', 'Owocowa', 'Paderewskiego', 'Parkowa', 'Partyzantów', + 'Patriotów', 'Pawia', 'Perłowa', 'Piaskowa', 'Piastowska', 'Os. Piastowskie', 'Piekarska', + 'Piękna', 'Piłsudskiego', 'Al. Piłsudskiego', + 'Piotrkowska', 'Piwna', 'Emilii Plater', 'Plebiscytowa', 'Płocka', 'Pocztowa', 'Podchorążych', 'Podgórna', 'Podhalańska', 'Podleśna', 'Podmiejska', 'Podwale', 'Pogodna', 'Pokoju', - 'Pola Wincentego', 'Polna', 'Południowa', 'Pomorska', 'Poniatowskiego Józefa', 'Poniatowskiego Józefa', - 'Popiełuszki Jerzego', 'Poprzeczna', 'Portowa', 'Porzeczkowa', 'Powstańców', 'Powstańców Śląskich', + 'Wincentego Pola', 'Polna', 'Południowa', 'Pomorska', 'Poniatowskiego', + 'Popiełuszki', 'Poprzeczna', 'Portowa', 'Porzeczkowa', 'Powstańców', 'Powstańców Śląskich', 'Powstańców Wielkopolskich', 'Poziomkowa', 'Poznańska', 'Północna', 'Promienna', - 'Prosta', 'Prusa Bolesława', 'Przechodnia', 'Przemysłowa', 'Przybyszewskiego Stanisława', - 'Przyjaźni', 'Pszenna', 'Ptasia', 'Pułaskiego Kazimierza', 'Pułaskiego Kazimierza', - 'Puławska', 'Puszkina Aleksandra', 'Racławicka', 'Radomska', 'Radosna', 'Rataja Macieja', - 'Reja Mikołaja', 'Rejtana Tadeusza', 'Reymonta Władysława', 'Reymonta Władysława Stanisława', + 'Prosta', 'Bolesława Prusa', 'Przechodnia', 'Przemysłowa', 'Przybyszewskiego', + 'Przyjaźni', 'Pszenna', 'Ptasia', 'Pułaskiego', 'Puławska', 'Puszkina', 'Racławicka', + 'Radomska', 'Radosna', 'Rataja', 'Reja', 'Rejtana', 'Reymonta', 'Robotnicza', 'Rodzinna', 'Rolna', 'Rolnicza', 'Równa', 'Różana', 'Rubinowa', 'Rumiankowa', - 'Rybacka', 'Rybna', 'Rybnicka', 'Rycerska', 'Rynek', 'Rynek Rynek', 'Rzeczna', 'Rzemieślnicza', - 'Sadowa', 'Sandomierska', 'Saperów', 'Sawickiej Hanki', 'Sądowa', 'Sąsiedzka', 'Senatorska', - 'Siemiradzkiego Henryka', 'Sienkiewicza Henryka', 'Sienna', 'Siewna', 'Sikorskiego Władysława', - 'Sikorskiego Władysława', 'Skargi Piotra', 'Skargi Piotra', 'Składowa', 'Skłodowskiej-Curie Marii', - 'Skośna', 'Skrajna', 'Słoneczna', 'Słonecznikowa', 'Słowackiego Juliusza', 'Słowiańska', - 'Słowicza', 'Sobieskiego Jana', 'Sobieskiego Jana III', 'Sokola', 'Solidarności Al.', - 'Solna', 'Solskiego Ludwika', 'Sosnowa', 'Sowia', 'Sowińskiego Józefa', 'Spacerowa', - 'Spokojna', 'Sportowa', 'Spółdzielcza', 'Srebrna', 'Staffa Leopolda', 'Stalowa', 'Staromiejska', - 'Starowiejska', 'Staszica Stanisława', 'Stawowa', 'Stolarska', 'Strażacka', 'Stroma', - 'Struga Andrzeja', 'Strumykowa', 'Strzelecka', 'Studzienna', 'Stwosza Wita', 'Sucha', - 'Sucharskiego Henryka', 'Szafirowa', 'Szarych Szeregów', 'Szczecińska', 'Szczęśliwa', - 'Szeroka', 'Szewska', 'Szkolna', 'Szmaragdowa', 'Szpitalna', 'Szymanowskiego Karola', - 'Ściegiennego Piotra', 'Śląska', 'Średnia', 'Środkowa', 'Świdnicka', 'Świerkowa', + 'Rybacka', 'Rybna', 'Rybnicka', 'Rycerska', 'Rynek', 'Rzeczna', 'Rzemieślnicza', + 'Sadowa', 'Sandomierska', 'Saperów', 'Sawickiej', 'Sądowa', 'Sąsiedzka', 'Senatorska', + 'Siemiradzkiego', 'Sienkiewicza', 'Sienna', 'Siewna', + 'Sikorskiego', 'Piotra Skargi', 'Składowa', 'Skłodowskiej-Curie', + 'Skośna', 'Skrajna', 'Słoneczna', 'Słonecznikowa', 'Słowackiego', 'Słowiańska', + 'Słowicza', 'Sobieskiego', 'Jana III Sobieskiego', 'Sokola', 'Al. Solidarności', + 'Solna', 'Solskiego', 'Sosnowa', 'Sowia', 'Sowińskiego', 'Spacerowa', + 'Spokojna', 'Sportowa', 'Spółdzielcza', 'Srebrna', 'Staffa ', 'Stalowa', 'Staromiejska', + 'Starowiejska', 'Staszica', 'Stawowa', 'Stolarska', 'Strażacka', 'Stroma', + 'Struga', 'Strumykowa', 'Strzelecka', 'Studzienna', 'Wita Stwosza', 'Sucha', + 'Sucharskiego', 'Szafirowa', 'Szarych Szeregów', 'Szczecińska', 'Szczęśliwa', + 'Szeroka', 'Szewska', 'Szkolna', 'Szmaragdowa', 'Szpitalna', 'Szymanowskiego', + 'Ściegiennego', 'Śląska', 'Średnia', 'Środkowa', 'Świdnicka', 'Świerkowa', 'Świętojańska', 'Świętokrzyska', 'Targowa', 'Tatrzańska', 'Tęczowa', 'Topolowa', - 'Torowa', 'Toruńska', 'Towarowa', 'Traugutta Romualda', 'Truskawkowa', 'Tulipanowa', - 'Tulipanów', 'Turkusowa', 'Turystyczna', 'Tuwima Juliana', 'Tylna', 'Tysiąclecia', 'Ułańska', - 'Urocza', 'Wałowa', 'Wandy', 'Wańkowicza Melchiora', 'Wapienna', 'Warmińska', 'Warszawska', - 'Waryńskiego Ludwika', 'Wąska', 'Wczasowa', 'Wesoła', 'Węglowa', 'Widok', 'Wiejska', - 'Wielkopolska', 'Wieniawskiego Henryka', 'Wierzbowa', 'Wilcza', 'Wileńska', 'Willowa', - 'Wiosenna', 'Wiśniowa', 'Witosa Wincentego', 'Władysława IV', 'Wodna', 'Wojska Polskiego', - 'Wojska Polskiego Al.', 'Wolności', 'Wolności Pl.', 'Wolska', 'Wołodyjowskiego Michała', - 'Wrocławska', 'Wronia', 'Wróblewskiego Walerego', 'Wrzosowa', 'Wschodnia', 'Wspólna', - 'Wybickiego Józefa', 'Wysoka', 'Wyspiańskiego Stanisława', 'Wyszyńskiego Stefana', - 'Wyzwolenia', 'Wyzwolenia Al.', 'Zachodnia', 'Zacisze', 'Zajęcza', 'Zakątek', 'Zakopiańska', - 'Zamenhofa Ludwika', 'Zamkowa', 'Zapolskiej Gabrieli', 'Zbożowa', 'Zdrojowa', 'Zgierska', + 'Torowa', 'Toruńska', 'Towarowa', 'Traugutta', 'Truskawkowa', 'Tulipanowa', + 'Tulipanów', 'Turkusowa', 'Turystyczna', 'Tuwima', 'Tylna', 'Tysiąclecia', 'Ułańska', + 'Urocza', 'Wałowa', 'Wandy', 'Wańkowicza', 'Wapienna', 'Warmińska', 'Warszawska', + 'Waryńskiego', 'Wąska', 'Wczasowa', 'Wesoła', 'Węglowa', 'Widok', 'Wiejska', + 'Wielkopolska', 'Wieniawskiego', 'Wierzbowa', 'Wilcza', 'Wileńska', 'Willowa', + 'Wiosenna', 'Wiśniowa', 'Witosa', 'Władysława IV', 'Wodna', 'Wojska Polskiego', + 'Al. Wojska Polskiego', 'Wolności', 'Pl. Wolności', 'Wolska', 'Wołodyjowskiego', + 'Wrocławska', 'Wronia', 'Wróblewskiego', 'Wrzosowa', 'Wschodnia', 'Wspólna', + 'Wybickiego', 'Wysoka', 'Wyspiańskiego', 'Wyszyńskiego', + 'Wyzwolenia', 'Al. Wyzwolenia', 'Zachodnia', 'Zacisze', 'Zajęcza', 'Zakątek', 'Zakopiańska', + 'Zamenhofa', 'Zamkowa', 'Zapolskiej', 'Zbożowa', 'Zdrojowa', 'Zgierska', 'Zielna', 'Zielona', 'Złota', 'Zwierzyniecka', 'Zwycięstwa', 'Źródlana', 'Żabia', - 'Żeglarska', 'Żelazna', 'Żeromskiego Stefana', 'Żniwna', 'Żołnierska', 'Żółkiewskiego Stanisława', - 'Żurawia', 'Żwirki Franciszka i Wigury Stanisława', 'Żwirki i Wigury', 'Żwirowa', - 'Żytnia', + 'Żeglarska', 'Żelazna', 'Żeromskiego', 'Żniwna', 'Żołnierska', 'Żółkiewskiego', + 'Żurawia', 'Żwirki i Wigury', 'Żwirowa', 'Żytnia', ]; public function city() diff --git a/src/Faker/Provider/pl_PL/Internet.php b/src/Faker/Provider/pl_PL/Internet.php index 661e4b0bc2..f6ed7f6b5b 100644 --- a/src/Faker/Provider/pl_PL/Internet.php +++ b/src/Faker/Provider/pl_PL/Internet.php @@ -5,5 +5,5 @@ class Internet extends \Faker\Provider\Internet { protected static $freeEmailDomain = ['gmail.com', 'yahoo.com', 'wp.pl', 'onet.pl', 'interia.pl', 'gazeta.pl']; - protected static $tld = ['pl', 'pl', 'pl', 'pl', 'pl', 'pl', 'com', 'info', 'net', 'org', 'com.pl', 'com.pl']; + protected static $tld = ['pl', 'pl', 'pl', 'pl', 'pl', 'pl', 'com', 'info', 'net', 'org', 'com.pl', 'com.pl', 'co.pl', 'net.pl', 'org.pl']; } From 5ce0bf295de6bcb80f8f530fa377db8ff63002a8 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Sat, 29 Jul 2023 19:49:17 +0200 Subject: [PATCH 129/229] Fix psalm baseline in .gitattributes (#674) --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 5ee738da79..5634d98c1b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -11,6 +11,6 @@ /phpstan-baseline.neon export-ignore /phpstan.neon.dist export-ignore /phpunit.xml.dist export-ignore -/psalm-baseline.xml export-ignore +/psalm.baseline.xml export-ignore /psalm.xml export-ignore /roave-bc-check.yaml export-ignore From 66316225da2c610c5f93a4c9789a128d664c1c70 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 22:15:41 +0200 Subject: [PATCH 130/229] composer(deps): bump rector/rector in /vendor-bin/rector (#676) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.17.2 to 0.17.7. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.17.2...0.17.7) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 176d5e8265..4629c7e110 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.17.2" + "rector/rector": "^0.17.7" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index b0e8881b4e..3d01a9a03e 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "3dd80c93457ab30710aed15359aecad9", + "content-hash": "38de6ca28e0714d43c68fea81ac1be10", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.22", + "version": "1.10.26", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287" + "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/97d694dfd4ceb57bcce4e3b38548f13ea62e4287", - "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", + "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", "shasum": "" }, "require": { @@ -66,25 +66,25 @@ "type": "tidelift" } ], - "time": "2023-06-30T20:04:11+00:00" + "time": "2023-07-19T12:44:37+00:00" }, { "name": "rector/rector", - "version": "0.17.2", + "version": "0.17.7", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "b8f72ff7e4914bb1d1557cc5c6d33898f7fd2bfb" + "reference": "0e76101aa329911b7fec43106aac5843a978b209" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/b8f72ff7e4914bb1d1557cc5c6d33898f7fd2bfb", - "reference": "b8f72ff7e4914bb1d1557cc5c6d33898f7fd2bfb", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/0e76101aa329911b7fec43106aac5843a978b209", + "reference": "0e76101aa329911b7fec43106aac5843a978b209", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.20" + "phpstan/phpstan": "^1.10.26" }, "conflict": { "rector/rector-doctrine": "*", @@ -119,7 +119,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.17.2" + "source": "https://github.com/rectorphp/rector/tree/0.17.7" }, "funding": [ { @@ -127,7 +127,7 @@ "type": "github" } ], - "time": "2023-06-29T10:03:28+00:00" + "time": "2023-07-23T20:44:23+00:00" } ], "packages-dev": [], From 5f3281deaf7b87e0a9ac33d41708fa0bfb02cb34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 22:17:17 +0200 Subject: [PATCH 131/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#677) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.22 to 1.10.26. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.22...1.10.26) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index a56f4245a5..7fac44fde0 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.22", + "phpstan/phpstan": "^1.10.26", "phpstan/phpstan-deprecation-rules": "^1.1.3" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index b9cebef88a..6e93fdf443 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "863043782a582fdfd295bb0a0cd51c08", + "content-hash": "01f684f3d02eaa69106eb0df92a9ac38", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.22", + "version": "1.10.26", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287" + "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/97d694dfd4ceb57bcce4e3b38548f13ea62e4287", - "reference": "97d694dfd4ceb57bcce4e3b38548f13ea62e4287", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", + "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-06-30T20:04:11+00:00" + "time": "2023-07-19T12:44:37+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 72392f010e0e081faca5e3dc77fae1ccd9cda947 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 22:21:06 +0200 Subject: [PATCH 132/229] composer(deps): bump friendsofphp/php-cs-fixer (#679) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.20.0 to 3.22.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.20.0...v3.22.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 75 ++++++++++++++------------- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index b49e67eb2b..b5e879f6a5 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.20.0" + "friendsofphp/php-cs-fixer": "^3.22.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 8abed99b19..dacdc76c57 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "9950cb32653c494c4cd0bf260df0453e", + "content-hash": "bad07ff1321f61559511a3b5cb4c2d71", "packages": [ { "name": "composer/pcre", @@ -427,16 +427,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.20.0", + "version": "v3.22.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69" + "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/0e8249e0b15e2bc022fbbd1090ce29d071481e69", - "reference": "0e8249e0b15e2bc022fbbd1090ce29d071481e69", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3", + "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", "shasum": "" }, "require": { @@ -460,6 +460,7 @@ "symfony/stopwatch": "^5.4 || ^6.0" }, "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", "keradus/cli-executor": "^2.0", "mikey179/vfsstream": "^1.6.11", @@ -511,7 +512,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.20.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.22.0" }, "funding": [ { @@ -519,7 +520,7 @@ "type": "github" } ], - "time": "2023-06-27T20:22:39+00:00" + "time": "2023-07-16T23:08:06+00:00" }, { "name": "psr/cache", @@ -786,16 +787,16 @@ }, { "name": "symfony/console", - "version": "v5.4.24", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8" + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", - "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", + "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", "shasum": "" }, "require": { @@ -865,7 +866,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.24" + "source": "https://github.com/symfony/console/tree/v5.4.26" }, "funding": [ { @@ -881,7 +882,7 @@ "type": "tidelift" } ], - "time": "2023-05-26T05:13:16+00:00" + "time": "2023-07-19T20:11:33+00:00" }, { "name": "symfony/deprecation-contracts", @@ -952,16 +953,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.4.22", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f" + "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f", - "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5dcc00e03413f05c1e7900090927bb7247cb0aac", + "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac", "shasum": "" }, "require": { @@ -1017,7 +1018,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/v5.4.22" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.26" }, "funding": [ { @@ -1033,7 +1034,7 @@ "type": "tidelift" } ], - "time": "2023-03-17T11:31:58+00:00" + "time": "2023-07-06T06:34:20+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1180,16 +1181,16 @@ }, { "name": "symfony/finder", - "version": "v5.4.21", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { @@ -1223,7 +1224,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.21" + "source": "https://github.com/symfony/finder/tree/v5.4.27" }, "funding": [ { @@ -1239,7 +1240,7 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2023-07-31T08:02:31+00:00" }, { "name": "symfony/options-resolver", @@ -1883,16 +1884,16 @@ }, { "name": "symfony/process", - "version": "v5.4.24", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "e3c46cc5689c8782944274bb30702106ecbe3b64" + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e3c46cc5689c8782944274bb30702106ecbe3b64", - "reference": "e3c46cc5689c8782944274bb30702106ecbe3b64", + "url": "https://api.github.com/repos/symfony/process/zipball/1a44dc377ec86a50fab40d066cd061e28a6b482f", + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f", "shasum": "" }, "require": { @@ -1925,7 +1926,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.24" + "source": "https://github.com/symfony/process/tree/v5.4.26" }, "funding": [ { @@ -1941,7 +1942,7 @@ "type": "tidelift" } ], - "time": "2023-05-17T11:26:05+00:00" + "time": "2023-07-12T15:44:31+00:00" }, { "name": "symfony/service-contracts", @@ -2090,16 +2091,16 @@ }, { "name": "symfony/string", - "version": "v5.4.22", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" + "reference": "1181fe9270e373537475e826873b5867b863883c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", + "reference": "1181fe9270e373537475e826873b5867b863883c", "shasum": "" }, "require": { @@ -2156,7 +2157,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.22" + "source": "https://github.com/symfony/string/tree/v5.4.26" }, "funding": [ { @@ -2172,7 +2173,7 @@ "type": "tidelift" } ], - "time": "2023-03-14T06:11:53+00:00" + "time": "2023-06-28T12:46:07+00:00" } ], "packages-dev": [], From 1d21cbcbf7b2f7f5b1aa4b415a7b80f31f35a57d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 22:22:07 +0200 Subject: [PATCH 133/229] composer(deps): bump vimeo/psalm from 5.13.1 to 5.14.1 in /vendor-bin/psalm (#678) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump vimeo/psalm in /vendor-bin/psalm Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.13.1 to 5.14.1. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.13.1...5.14.1) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Run 'make baseline' --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- psalm.baseline.xml | 9 +++++- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 54 +++++++++++++++++----------------- 3 files changed, 36 insertions(+), 29 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 271a6a6b2e..170c7c2780 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,5 +1,5 @@ - + 0 @@ -142,6 +142,13 @@ [static::class, 'randomDigit'] + static function ($matches) { + // remove backslashes (that are not followed by another backslash) because they are escape characters + $match = preg_replace('/\\\(?!\\\)/', '', $matches[1]); + $randomElement = Base::randomElement(str_split($match)); + //[.] should not be a random character, but a literal . + return str_replace('.', '\.', $randomElement); + } \UnitEnum diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 1b3cd62fb3..e1cb8957dd 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.13.1" + "vimeo/psalm": "^5.14.1" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index ea2b3dd065..0102c7db2b 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "37211349afb3a730daadebfce9228beb", + "content-hash": "9256a4cf322e5ef672cbd6d5283a2360", "packages": [ { "name": "amphp/amp", @@ -913,16 +913,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.22.0", + "version": "1.23.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c" + "reference": "a2b24135c35852b348894320d47b3902a94bc494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", - "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", + "reference": "a2b24135c35852b348894320d47b3902a94bc494", "shasum": "" }, "require": { @@ -954,9 +954,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.0" }, - "time": "2023-06-01T12:35:21+00:00" + "time": "2023-07-23T22:17:56+00:00" }, { "name": "psr/container", @@ -1188,16 +1188,16 @@ }, { "name": "symfony/console", - "version": "v5.4.24", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8" + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", - "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", + "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", "shasum": "" }, "require": { @@ -1267,7 +1267,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.24" + "source": "https://github.com/symfony/console/tree/v5.4.26" }, "funding": [ { @@ -1283,7 +1283,7 @@ "type": "tidelift" } ], - "time": "2023-05-26T05:13:16+00:00" + "time": "2023-07-19T20:11:33+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1993,16 +1993,16 @@ }, { "name": "symfony/string", - "version": "v5.4.22", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" + "reference": "1181fe9270e373537475e826873b5867b863883c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", + "reference": "1181fe9270e373537475e826873b5867b863883c", "shasum": "" }, "require": { @@ -2059,7 +2059,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.22" + "source": "https://github.com/symfony/string/tree/v5.4.26" }, "funding": [ { @@ -2075,20 +2075,20 @@ "type": "tidelift" } ], - "time": "2023-03-14T06:11:53+00:00" + "time": "2023-06-28T12:46:07+00:00" }, { "name": "vimeo/psalm", - "version": "5.13.1", + "version": "5.14.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "086b94371304750d1c673315321a55d15fc59015" + "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/086b94371304750d1c673315321a55d15fc59015", - "reference": "086b94371304750d1c673315321a55d15fc59015", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/b9d355e0829c397b9b3b47d0c0ed042a8a70284d", + "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d", "shasum": "" }, "require": { @@ -2109,8 +2109,8 @@ "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", + "nikic/php-parser": "^4.16", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.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", @@ -2179,9 +2179,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.13.1" + "source": "https://github.com/vimeo/psalm/tree/5.14.1" }, - "time": "2023-06-27T16:39:49+00:00" + "time": "2023-08-01T05:16:55+00:00" }, { "name": "webmozart/assert", From 840d2e9125e0c34f20495271f6f55b96c6be18a3 Mon Sep 17 00:00:00 2001 From: chris Date: Fri, 25 Aug 2023 10:37:19 +0200 Subject: [PATCH 134/229] chore: ensure php 8.3 compatibility (#684) Co-authored-by: Christopher Georg --- .github/workflows/tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index c6974c386d..6c5f5796cc 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -20,6 +20,7 @@ jobs: - "8.0" - "8.1" - "8.2" + - "8.3" runs-on: "ubuntu-latest" From af7428b76efdc08dd7824785b58aa118e03f9d55 Mon Sep 17 00:00:00 2001 From: Romain Monteil Date: Sat, 26 Aug 2023 10:02:18 +0200 Subject: [PATCH 135/229] Remove invalid postcode pattern for France (#683) --- src/Faker/Provider/fr_FR/Address.php | 6 +++++- test/Faker/Provider/fr_FR/AddressTest.php | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Faker/Provider/fr_FR/Address.php b/src/Faker/Provider/fr_FR/Address.php index 106f648cca..d6dbb76cca 100644 --- a/src/Faker/Provider/fr_FR/Address.php +++ b/src/Faker/Provider/fr_FR/Address.php @@ -34,7 +34,11 @@ class Address extends \Faker\Provider\Address ]; protected static $buildingNumber = ['%', '%#', '%#', '%#', '%##']; - protected static $postcode = ['#####', '## ###']; + + /** + * @see https://en.wikipedia.org/wiki/Postal_codes_in_France + */ + protected static $postcode = ['#####']; protected static $country = [ 'Afghanistan', 'Afrique du sud', 'Albanie', 'Algérie', 'Allemagne', 'Andorre', 'Angola', 'Anguilla', 'Antarctique', 'Antigua et Barbuda', 'Antilles néerlandaises', 'Arabie saoudite', 'Argentine', 'Arménie', 'Aruba', 'Australie', 'Autriche', 'Azerbaïdjan', 'Bahamas', 'Bahrain', 'Bangladesh', 'Belgique', 'Belize', 'Benin', 'Bermudes (Les)', 'Bhoutan', 'Biélorussie', 'Bolivie', 'Bosnie-Herzégovine', 'Botswana', 'Bouvet (Îles)', 'Brunei', 'Brésil', 'Bulgarie', 'Burkina Faso', 'Burundi', 'Cambodge', 'Cameroun', 'Canada', 'Cap Vert', 'Cayman (Îles)', 'Chili', 'Chine (Rép. pop.)', 'Christmas (Île)', 'Chypre', 'Cocos (Îles)', 'Colombie', 'Comores', 'Cook (Îles)', 'Corée du Nord', 'Corée, Sud', 'Costa Rica', 'Croatie', 'Cuba', 'Côte d\'Ivoire', 'Danemark', 'Djibouti', 'Dominique', 'Égypte', 'El Salvador', 'Émirats arabes unis', 'Équateur', 'Érythrée', 'Espagne', 'Estonie', 'États-Unis', 'Ethiopie', 'Falkland (Île)', 'Fidji (République des)', 'Finlande', 'France', 'Féroé (Îles)', 'Gabon', diff --git a/test/Faker/Provider/fr_FR/AddressTest.php b/test/Faker/Provider/fr_FR/AddressTest.php index 1f48f54d5f..c2bd8697b4 100644 --- a/test/Faker/Provider/fr_FR/AddressTest.php +++ b/test/Faker/Provider/fr_FR/AddressTest.php @@ -10,6 +10,14 @@ */ final class AddressTest extends TestCase { + public function testPostcode(): void + { + $postcode = $this->faker->postcode(); + self::assertNotEmpty($postcode); + self::assertIsString($postcode); + self::assertMatchesRegularExpression('@^\d{5}$@', $postcode); + } + public function testSecondaryAddress(): void { self::assertEquals('Étage 007', $this->faker->secondaryAddress()); From 8a79daf7d1cccc28388b27eccb7fac63480608af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sat, 2 Sep 2023 16:33:32 +0200 Subject: [PATCH 136/229] Fix: Allow tests to fail on PHP 8.3 (#693) --- .github/workflows/tests.yaml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 6c5f5796cc..bc6fa82dab 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -11,16 +11,20 @@ name: "Tests" jobs: phpunit: - name: "PHPUnit" + name: "PHPUnit (${{ matrix.php-version }})" strategy: matrix: + experimental: + - false php-version: - "7.4" - "8.0" - "8.1" - "8.2" - - "8.3" + include: + - experimental: true + php-version: "8.3" runs-on: "ubuntu-latest" @@ -53,3 +57,4 @@ jobs: - name: "Run tests" run: "./vendor/bin/phpunit --colors=always" + continue-on-error: "${{ matrix.experimental }}" From 14888813a8d4a5eb32430df9d74c80fa78f05bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sat, 2 Sep 2023 17:15:45 +0200 Subject: [PATCH 137/229] Fix: Test does not perform any assertions (#695) --- test/Faker/UniqueGeneratorTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Faker/UniqueGeneratorTest.php b/test/Faker/UniqueGeneratorTest.php index bf7b147c8d..f1ad670dd8 100644 --- a/test/Faker/UniqueGeneratorTest.php +++ b/test/Faker/UniqueGeneratorTest.php @@ -23,5 +23,7 @@ public function testUniqueGeneratorRetries(): void for ($i = 0; $i < 10; ++$i) { $this->faker->unique()->ext(NumberExtension::class)->numberBetween(0, 9); } + + $this->addToAssertionCount(1); } } From b048b4aa9859651492b0949e5fffe48907d10a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sat, 2 Sep 2023 17:16:22 +0200 Subject: [PATCH 138/229] Fix: Operator (#696) --- test/Faker/Provider/ImageTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Faker/Provider/ImageTest.php b/test/Faker/Provider/ImageTest.php index ff5e7f1c8a..1aa495e17c 100644 --- a/test/Faker/Provider/ImageTest.php +++ b/test/Faker/Provider/ImageTest.php @@ -185,7 +185,7 @@ private static function checkUrlConnection(string $url): void $httpCode = curl_getinfo($curlPing, CURLINFO_HTTP_CODE); curl_close($curlPing); - if ($httpCode < 200 | $httpCode > 300) { + if ($httpCode < 200 || $httpCode > 300) { self::markTestSkipped(sprintf('"%s" is offline, skipping test', $url)); } } From 7a06315855efe0e6e7cb185eaac6770c22692924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sat, 2 Sep 2023 17:17:09 +0200 Subject: [PATCH 139/229] Fix: Use boolean expressions (#697) --- src/Faker/Core/Version.php | 8 ++++---- src/Faker/Extension/Helper.php | 2 +- src/Faker/Provider/Base.php | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Faker/Core/Version.php b/src/Faker/Core/Version.php index ce484e6ad8..f5e7cf5a08 100644 --- a/src/Faker/Core/Version.php +++ b/src/Faker/Core/Version.php @@ -25,8 +25,8 @@ public function semver(bool $preRelease = false, bool $build = false): string mt_rand(0, 9), mt_rand(0, 99), mt_rand(0, 99), - $preRelease && mt_rand(0, 1) ? '-' . $this->semverPreReleaseIdentifier() : '', - $build && mt_rand(0, 1) ? '+' . $this->semverBuildIdentifier() : '', + $preRelease && mt_rand(0, 1) === 1 ? '-' . $this->semverPreReleaseIdentifier() : '', + $build && mt_rand(0, 1) === 1 ? '+' . $this->semverBuildIdentifier() : '', ); } @@ -37,7 +37,7 @@ private function semverPreReleaseIdentifier(): string { $ident = Helper::randomElement($this->semverCommonPreReleaseIdentifiers); - if (!mt_rand(0, 1)) { + if (mt_rand(0, 1) !== 1) { return $ident; } @@ -49,7 +49,7 @@ private function semverPreReleaseIdentifier(): string */ private function semverBuildIdentifier(): string { - if (mt_rand(0, 1)) { + if (mt_rand(0, 1) === 1) { // short git revision syntax: https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection return substr(sha1(Helper::lexify('??????')), 0, 7); } diff --git a/src/Faker/Extension/Helper.php b/src/Faker/Extension/Helper.php index 27a66143fe..d6245313f9 100644 --- a/src/Faker/Extension/Helper.php +++ b/src/Faker/Extension/Helper.php @@ -83,7 +83,7 @@ public static function lexify(string $string): string public static function bothify(string $string): string { $string = self::replaceWildcard($string, '*', static function () { - return mt_rand(0, 1) ? '#' : '?'; + return mt_rand(0, 1) === 1 ? '#' : '?'; }); return static::lexify(static::numerify($string)); diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index d91552c8a3..a590afb478 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -491,7 +491,7 @@ public static function lexify($string = '????') public static function bothify($string = '## ??') { $string = self::replaceWildcard($string, '*', static function () { - return mt_rand(0, 1) ? '#' : '?'; + return mt_rand(0, 1) === 1 ? '#' : '?'; }); return static::lexify(static::numerify($string)); From bfcece8fa2600dbe25cfaa026d95ed6fc827c434 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:18:35 +0200 Subject: [PATCH 140/229] composer(deps): bump rector/rector in /vendor-bin/rector (#688) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.17.7 to 0.18.1. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.17.7...0.18.1) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 31 +++++++++++++------------------ 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 4629c7e110..18424d46ab 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.17.7" + "rector/rector": "^0.18.1" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 3d01a9a03e..acc90bec5c 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "38de6ca28e0714d43c68fea81ac1be10", + "content-hash": "dd4072cf57d54447f34914509c1999ed", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.26", + "version": "1.10.32", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" + "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44", + "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44", "shasum": "" }, "require": { @@ -66,25 +66,25 @@ "type": "tidelift" } ], - "time": "2023-07-19T12:44:37+00:00" + "time": "2023-08-24T21:54:50+00:00" }, { "name": "rector/rector", - "version": "0.17.7", + "version": "0.18.1", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "0e76101aa329911b7fec43106aac5843a978b209" + "reference": "ee72ef542680a7f47ed8c6784f78b032c0d2f381" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/0e76101aa329911b7fec43106aac5843a978b209", - "reference": "0e76101aa329911b7fec43106aac5843a978b209", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/ee72ef542680a7f47ed8c6784f78b032c0d2f381", + "reference": "ee72ef542680a7f47ed8c6784f78b032c0d2f381", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.26" + "phpstan/phpstan": "^1.10.31" }, "conflict": { "rector/rector-doctrine": "*", @@ -96,11 +96,6 @@ "bin/rector" ], "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.15-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -119,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.17.7" + "source": "https://github.com/rectorphp/rector/tree/0.18.1" }, "funding": [ { @@ -127,7 +122,7 @@ "type": "github" } ], - "time": "2023-07-23T20:44:23+00:00" + "time": "2023-08-28T18:01:58+00:00" } ], "packages-dev": [], From 47759b18289e53ee0508dd2482371203bfd19178 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:18:55 +0200 Subject: [PATCH 141/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#689) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.26 to 1.10.32. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.26...1.10.32) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 7fac44fde0..971bb21ded 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.26", + "phpstan/phpstan": "^1.10.32", "phpstan/phpstan-deprecation-rules": "^1.1.3" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 6e93fdf443..939a8c352a 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "01f684f3d02eaa69106eb0df92a9ac38", + "content-hash": "ab3a8dc7b1925c32630e8ce343da1429", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.26", + "version": "1.10.32", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f" + "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5d660cbb7e1b89253a47147ae44044f49832351f", - "reference": "5d660cbb7e1b89253a47147ae44044f49832351f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44", + "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T12:44:37+00:00" + "time": "2023-08-24T21:54:50+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 070868e4c63a4793dda55b0ea762b046ceb970b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:20:14 +0200 Subject: [PATCH 142/229] composer(deps): bump vimeo/psalm from 5.14.1 to 5.15.0 in /vendor-bin/psalm (#687) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump vimeo/psalm in /vendor-bin/psalm Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.14.1 to 5.15.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.14.1...5.15.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Run 'make baseline' --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- psalm.baseline.xml | 2 +- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 163 +++++++++++++++++---------------- 3 files changed, 85 insertions(+), 82 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 170c7c2780..b209427b2c 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,5 +1,5 @@ - + 0 diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index e1cb8957dd..5ef8200c93 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.14.1" + "vimeo/psalm": "^5.15.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index 0102c7db2b..b99f2ec160 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "9256a4cf322e5ef672cbd6d5283a2360", + "content-hash": "c92d54202d70caf9276f2ad5d3097955", "packages": [ { "name": "amphp/amp", @@ -245,16 +245,16 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -304,9 +304,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -322,7 +322,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -689,16 +689,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "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/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -739,9 +739,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -855,16 +855,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { @@ -907,22 +907,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2023-05-30T18:13:47+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.0", + "version": "1.23.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "a2b24135c35852b348894320d47b3902a94bc494" + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a2b24135c35852b348894320d47b3902a94bc494", - "reference": "a2b24135c35852b348894320d47b3902a94bc494", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", "shasum": "" }, "require": { @@ -954,9 +954,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" }, - "time": "2023-07-23T22:17:56+00:00" + "time": "2023-08-03T16:32:59+00:00" }, { "name": "psr/container", @@ -1188,16 +1188,16 @@ }, { "name": "symfony/console", - "version": "v5.4.26", + "version": "v5.4.28", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" + "reference": "f4f71842f24c2023b91237c72a365306f3c58827" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", - "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", + "reference": "f4f71842f24c2023b91237c72a365306f3c58827", "shasum": "" }, "require": { @@ -1267,7 +1267,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.26" + "source": "https://github.com/symfony/console/tree/v5.4.28" }, "funding": [ { @@ -1283,7 +1283,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:11:33+00:00" + "time": "2023-08-07T06:12:30+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1418,16 +1418,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "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/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -1442,7 +1442,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1480,7 +1480,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -1496,20 +1496,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "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/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -1521,7 +1521,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1561,7 +1561,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.28.0" }, "funding": [ { @@ -1577,20 +1577,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "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/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -1602,7 +1602,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1645,7 +1645,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.28.0" }, "funding": [ { @@ -1661,20 +1661,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "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/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -1689,7 +1689,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1728,7 +1728,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -1744,20 +1744,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", "shasum": "" }, "require": { @@ -1766,7 +1766,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1807,7 +1807,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" }, "funding": [ { @@ -1823,20 +1823,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "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/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -1845,7 +1845,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1890,7 +1890,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -1906,7 +1906,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/service-contracts", @@ -2079,16 +2079,16 @@ }, { "name": "vimeo/psalm", - "version": "5.14.1", + "version": "5.15.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b9d355e0829c397b9b3b47d0c0ed042a8a70284d", - "reference": "b9d355e0829c397b9b3b47d0c0ed042a8a70284d", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { @@ -2116,6 +2116,9 @@ "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, @@ -2179,9 +2182,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.14.1" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, - "time": "2023-08-01T05:16:55+00:00" + "time": "2023-08-20T23:07:30+00:00" }, { "name": "webmozart/assert", From 849ff231bb57b0ebda5746bf82fc277aa14fa3e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:20:48 +0200 Subject: [PATCH 143/229] composer(deps): bump phpstan/phpstan-deprecation-rules (#690) Bumps [phpstan/phpstan-deprecation-rules](https://github.com/phpstan/phpstan-deprecation-rules) from 1.1.3 to 1.1.4. - [Release notes](https://github.com/phpstan/phpstan-deprecation-rules/releases) - [Commits](https://github.com/phpstan/phpstan-deprecation-rules/compare/1.1.3...1.1.4) --- updated-dependencies: - dependency-name: phpstan/phpstan-deprecation-rules dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 971bb21ded..e15922f664 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -3,7 +3,7 @@ "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", "phpstan/phpstan": "^1.10.32", - "phpstan/phpstan-deprecation-rules": "^1.1.3" + "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { "platform": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 939a8c352a..b7d79a163a 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "ab3a8dc7b1925c32630e8ce343da1429", + "content-hash": "a9a13b1fedad6fc7cf7e70503054cbe2", "packages": [ { "name": "phpstan/extension-installer", @@ -114,21 +114,21 @@ }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319" + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", - "reference": "a22b36b955a2e9a3d39fe533b6c1bb5359f9c319", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.3" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -156,9 +156,9 @@ "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/1.1.3" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" }, - "time": "2023-03-17T07:50:08+00:00" + "time": "2023-08-05T09:02:04+00:00" } ], "packages-dev": [], From ea48cdde9e7bc2305e6894d5cabf2a9a34be633d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Sep 2023 17:27:51 +0200 Subject: [PATCH 144/229] composer(deps): bump friendsofphp/php-cs-fixer from 3.22.0 to 3.25.0 in /vendor-bin/php-cs-fixer (#686) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump friendsofphp/php-cs-fixer Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.22.0 to 3.25.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.22.0...v3.25.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Run 'make cs' * Fix: Run 'make baseline' --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- psalm.baseline.xml | 1 + src/Faker/Factory.php | 2 + src/Faker/Provider/Base.php | 1 + src/Faker/Provider/Image.php | 1 + src/Faker/Provider/cs_CZ/Person.php | 1 + src/Faker/Provider/en_ZA/Person.php | 5 +- src/Faker/Provider/fi_FI/Person.php | 3 +- src/Faker/Provider/ja_JP/Text.php | 2 + src/Faker/Provider/kk_KZ/Company.php | 2 - src/Faker/Provider/kk_KZ/Person.php | 3 +- src/Faker/Provider/lt_LT/Person.php | 5 +- src/Faker/Provider/lv_LV/Person.php | 2 - src/Faker/Provider/ms_MY/Person.php | 1 + src/Faker/Provider/nb_NO/Person.php | 3 +- src/Faker/Provider/ro_RO/Person.php | 1 + src/Faker/Provider/sv_SE/Person.php | 3 +- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 402 +++++--------------------- 18 files changed, 94 insertions(+), 346 deletions(-) diff --git a/psalm.baseline.xml b/psalm.baseline.xml index b209427b2c..ee068ecd7d 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -146,6 +146,7 @@ // remove backslashes (that are not followed by another backslash) because they are escape characters $match = preg_replace('/\\\(?!\\\)/', '', $matches[1]); $randomElement = Base::randomElement(str_split($match)); + //[.] should not be a random character, but a literal . return str_replace('.', '\.', $randomElement); } diff --git a/src/Faker/Factory.php b/src/Faker/Factory.php index 7d29de75b2..e9d201432d 100644 --- a/src/Faker/Factory.php +++ b/src/Faker/Factory.php @@ -38,10 +38,12 @@ protected static function getProviderClassname($provider, $locale = '') if ($providerClass = self::findProviderClassname($provider, $locale)) { return $providerClass; } + // fallback to default locale if ($providerClass = self::findProviderClassname($provider, static::DEFAULT_LOCALE)) { return $providerClass; } + // fallback to no locale if ($providerClass = self::findProviderClassname($provider)) { return $providerClass; diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index a590afb478..6b9876bc1d 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -576,6 +576,7 @@ public static function regexify($regex = '') // remove backslashes (that are not followed by another backslash) because they are escape characters $match = preg_replace('/\\\(?!\\\)/', '', $matches[1]); $randomElement = Base::randomElement(str_split($match)); + //[.] should not be a random character, but a literal . return str_replace('.', '\.', $randomElement); }, $regex); diff --git a/src/Faker/Provider/Image.php b/src/Faker/Provider/Image.php index 53f28dfcfa..e787142178 100644 --- a/src/Faker/Provider/Image.php +++ b/src/Faker/Provider/Image.php @@ -123,6 +123,7 @@ public static function image( ); $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible + // Validate directory path if (!is_dir($dir) || !is_writable($dir)) { throw new \InvalidArgumentException(sprintf('Cannot write to directory "%s"', $dir)); diff --git a/src/Faker/Provider/cs_CZ/Person.php b/src/Faker/Provider/cs_CZ/Person.php index 64b4e9e0c8..e962fb6d9e 100644 --- a/src/Faker/Provider/cs_CZ/Person.php +++ b/src/Faker/Provider/cs_CZ/Person.php @@ -451,6 +451,7 @@ public function birthNumber($gender = null, $minAge = 0, $maxAge = 100, $slashPr if ($gender == static::GENDER_FEMALE) { $month += 50; } + // from year 2004 everyone has +20 to month when birth numbers in one day are exhausted if ($year >= 2004 && $this->generator->boolean(10)) { $month += 20; diff --git a/src/Faker/Provider/en_ZA/Person.php b/src/Faker/Provider/en_ZA/Person.php index df018d1514..2d2b525ede 100644 --- a/src/Faker/Provider/en_ZA/Person.php +++ b/src/Faker/Provider/en_ZA/Person.php @@ -135,9 +135,8 @@ class Person extends \Faker\Provider\Person /** * @see https://en.wikipedia.org/wiki/National_identification_number#South_Africa * - * @param \DateTime $birthdate - * @param bool $citizen - * @param string $gender + * @param bool $citizen + * @param string $gender * * @return string */ diff --git a/src/Faker/Provider/fi_FI/Person.php b/src/Faker/Provider/fi_FI/Person.php index 328a44b2c8..bb1c24c06a 100644 --- a/src/Faker/Provider/fi_FI/Person.php +++ b/src/Faker/Provider/fi_FI/Person.php @@ -91,8 +91,7 @@ class Person extends \Faker\Provider\Person * * @see http://www.finlex.fi/fi/laki/ajantasa/2010/20100128 * - * @param \DateTime $birthdate - * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE + * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE * * @return string on format DDMMYYCZZZQ, where DDMMYY is the date of birth, C the century sign, ZZZ the individual number and Q the control character (checksum) */ diff --git a/src/Faker/Provider/ja_JP/Text.php b/src/Faker/Provider/ja_JP/Text.php index 55bcc62972..9cb9a71ba4 100644 --- a/src/Faker/Provider/ja_JP/Text.php +++ b/src/Faker/Provider/ja_JP/Text.php @@ -628,10 +628,12 @@ protected static function appendEnd($text) $chars = static::split($text); $last = end($chars); } + // if the last char is a not-valid-end punctuation, remove it if (in_array($last, static::$notEndPunct, false)) { $text = preg_replace('/.$/u', '', $text); } + // if the last char is not a valid punctuation, append a default one. return in_array($last, static::$endPunct, false) ? $text : $text . '。'; } diff --git a/src/Faker/Provider/kk_KZ/Company.php b/src/Faker/Provider/kk_KZ/Company.php index 4663a748dd..75efebf836 100644 --- a/src/Faker/Provider/kk_KZ/Company.php +++ b/src/Faker/Provider/kk_KZ/Company.php @@ -54,8 +54,6 @@ public static function companyNameSuffix() * * @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fbus_business%2Ffor_businessmen%2Farticle%2Fbusiness_identification_number&lang=en * - * @param \DateTime $registrationDate - * * @return string 12 digits, like 150140000019 */ public static function businessIdentificationNumber(\DateTime $registrationDate = null) diff --git a/src/Faker/Provider/kk_KZ/Person.php b/src/Faker/Provider/kk_KZ/Person.php index 61852a2143..353dfae4b1 100644 --- a/src/Faker/Provider/kk_KZ/Person.php +++ b/src/Faker/Provider/kk_KZ/Person.php @@ -207,8 +207,7 @@ private static function getCenturyByYear($year) * @see http://egov.kz/wps/portal/Content?contentPath=%2Fegovcontent%2Fcitizen_migration%2Fpassport_id_card%2Farticle%2Fiin_info&lang=en * @see https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B4%D0%B8%D0%B2%D0%B8%D0%B4%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80 * - * @param \DateTime $birthDate - * @param int $gender + * @param int $gender * * @return string 12 digits, like 780322300455 */ diff --git a/src/Faker/Provider/lt_LT/Person.php b/src/Faker/Provider/lt_LT/Person.php index c448ab814f..570eecfbeb 100644 --- a/src/Faker/Provider/lt_LT/Person.php +++ b/src/Faker/Provider/lt_LT/Person.php @@ -325,9 +325,8 @@ public function passportNumber() * @see https://en.wikipedia.org/wiki/National_identification_number#Lithuania * @see https://lt.wikipedia.org/wiki/Asmens_kodas * - * @param string $gender [male|female] - * @param \DateTime $birthdate - * @param string $randomNumber three integers + * @param string $gender [male|female] + * @param string $randomNumber three integers * * @return string on format XXXXXXXXXXX */ diff --git a/src/Faker/Provider/lv_LV/Person.php b/src/Faker/Provider/lv_LV/Person.php index 4e9b93b75d..2139671788 100644 --- a/src/Faker/Provider/lv_LV/Person.php +++ b/src/Faker/Provider/lv_LV/Person.php @@ -134,8 +134,6 @@ public function passportNumber() * * @see https://en.wikipedia.org/wiki/National_identification_number#Latvia * - * @param \DateTime $birthdate - * * @return string on format XXXXXX-XXXXX */ public function personalIdentityNumber(\DateTime $birthdate = null) diff --git a/src/Faker/Provider/ms_MY/Person.php b/src/Faker/Provider/ms_MY/Person.php index 1cd011bf9f..d685715d8f 100644 --- a/src/Faker/Provider/ms_MY/Person.php +++ b/src/Faker/Provider/ms_MY/Person.php @@ -792,6 +792,7 @@ public static function myKadNumber($gender = null, $hyphen = false) // gender digit. Odd = MALE, Even = FEMALE $g = self::numberBetween(0, 9); + //Credit: https://gist.github.com/mauris/3629548 if ($gender === static::GENDER_MALE) { $g = $g | 1; diff --git a/src/Faker/Provider/nb_NO/Person.php b/src/Faker/Provider/nb_NO/Person.php index 86ce721ba3..8ee85cac72 100644 --- a/src/Faker/Provider/nb_NO/Person.php +++ b/src/Faker/Provider/nb_NO/Person.php @@ -288,8 +288,7 @@ class Person extends \Faker\Provider\Person * * @see https://no.wikipedia.org/wiki/Personnummer * - * @param \DateTime $birthdate - * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE + * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE * * @return string on format DDMMYY##### */ diff --git a/src/Faker/Provider/ro_RO/Person.php b/src/Faker/Provider/ro_RO/Person.php index d8ef51d005..9077004135 100644 --- a/src/Faker/Provider/ro_RO/Person.php +++ b/src/Faker/Provider/ro_RO/Person.php @@ -182,6 +182,7 @@ protected function getDateOfBirth($dateOfBirth) $dateOfBirthFinal = implode('-', $dateOfBirthParts); $date = \DateTime::createFromFormat('Y-m-d', $dateOfBirthFinal); + //a full (invalid) date might have been supplied, check if it converts if ($date->format('Y-m-d') !== $dateOfBirthFinal) { throw new \InvalidArgumentException("Invalid date of birth - '{$date->format('Y-m-d')}' generated based on '{$dateOfBirth}' received"); diff --git a/src/Faker/Provider/sv_SE/Person.php b/src/Faker/Provider/sv_SE/Person.php index a98f0871bf..1142a1f63f 100644 --- a/src/Faker/Provider/sv_SE/Person.php +++ b/src/Faker/Provider/sv_SE/Person.php @@ -121,8 +121,7 @@ class Person extends \Faker\Provider\Person * * @see http://en.wikipedia.org/wiki/Personal_identity_number_(Sweden) * - * @param \DateTime $birthdate - * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE + * @param string $gender Person::GENDER_MALE || Person::GENDER_FEMALE * * @return string on format XXXXXX-XXXX */ diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index b5e879f6a5..b1249c7172 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.22.0" + "friendsofphp/php-cs-fixer": "^3.25.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index dacdc76c57..5412f4cdde 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "bad07ff1321f61559511a3b5cb4c2d71", + "content-hash": "7a2e6176d3f4126c9b59b213a71ccf35", "packages": [ { "name": "composer/pcre", @@ -79,16 +79,16 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -138,9 +138,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -156,7 +156,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -224,226 +224,23 @@ ], "time": "2022-02-25T21:32:43+00:00" }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" - }, - "time": "2023-02-02T22:02:53+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v1.1.1", - "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": "doctrine/lexer", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-12-14T08:49:07+00:00" - }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.22.0", + "version": "v3.25.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3" + "reference": "9025b7d2b6e1d90a63d0ac0905018ce5d03ec88d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/92b019f6c8d79aa26349d0db7671d37440dc0ff3", - "reference": "92b019f6c8d79aa26349d0db7671d37440dc0ff3", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/9025b7d2b6e1d90a63d0ac0905018ce5d03ec88d", + "reference": "9025b7d2b6e1d90a63d0ac0905018ce5d03ec88d", "shasum": "" }, "require": { "composer/semver": "^3.3", "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^2", - "doctrine/lexer": "^2 || ^3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", @@ -512,7 +309,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.22.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.25.0" }, "funding": [ { @@ -520,56 +317,7 @@ "type": "github" } ], - "time": "2023-07-16T23:08:06+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/master" - }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2023-08-31T21:27:18+00:00" }, { "name": "psr/container", @@ -787,16 +535,16 @@ }, { "name": "symfony/console", - "version": "v5.4.26", + "version": "v5.4.28", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" + "reference": "f4f71842f24c2023b91237c72a365306f3c58827" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", - "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", + "reference": "f4f71842f24c2023b91237c72a365306f3c58827", "shasum": "" }, "require": { @@ -866,7 +614,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.26" + "source": "https://github.com/symfony/console/tree/v5.4.28" }, "funding": [ { @@ -882,7 +630,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:11:33+00:00" + "time": "2023-08-07T06:12:30+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1313,16 +1061,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "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/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -1337,7 +1085,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1375,7 +1123,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -1391,20 +1139,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "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/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -1416,7 +1164,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1456,7 +1204,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.28.0" }, "funding": [ { @@ -1472,20 +1220,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "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/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -1497,7 +1245,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1540,7 +1288,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.28.0" }, "funding": [ { @@ -1556,20 +1304,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "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/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -1584,7 +1332,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1623,7 +1371,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -1639,20 +1387,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", "shasum": "" }, "require": { @@ -1661,7 +1409,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1702,7 +1450,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" }, "funding": [ { @@ -1718,20 +1466,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "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/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -1740,7 +1488,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1785,7 +1533,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -1801,20 +1549,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -1823,7 +1571,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -1864,7 +1612,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -1880,20 +1628,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v5.4.26", + "version": "v5.4.28", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f" + "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/1a44dc377ec86a50fab40d066cd061e28a6b482f", - "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f", + "url": "https://api.github.com/repos/symfony/process/zipball/45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", + "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", "shasum": "" }, "require": { @@ -1926,7 +1674,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.26" + "source": "https://github.com/symfony/process/tree/v5.4.28" }, "funding": [ { @@ -1942,7 +1690,7 @@ "type": "tidelift" } ], - "time": "2023-07-12T15:44:31+00:00" + "time": "2023-08-07T10:36:04+00:00" }, { "name": "symfony/service-contracts", From 3c804daa2111b68e533b2a6f9f2868f6d5b39fa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 3 Sep 2023 14:09:32 +0200 Subject: [PATCH 145/229] Fix: Require to pass name to ContainerBuilder::add() (#702) --- roave-bc-check.yaml | 2 + src/Faker/Container/ContainerBuilder.php | 15 +----- test/Faker/Extension/ContainerBuilderTest.php | 49 ++----------------- test/Faker/GeneratorTest.php | 2 +- 4 files changed, 8 insertions(+), 60 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index d515cae370..8d116c8eeb 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -16,3 +16,5 @@ parameters: - '#\[BC\] REMOVED: Class Faker\\Extension\\Container has been deleted#' - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to a non-contravariant Faker\\Container\\ContainerInterface\|null#' - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to Faker\\Container\\ContainerInterface\|null#' + - '#\[BC\] CHANGED: The number of required arguments for Faker\\Container\\ContainerBuilder\#add\(\) increased from 1 to 2#' + - '#\[BC\] CHANGED: The parameter \$name of Faker\\Container\\ContainerBuilder\#add\(\) changed from string\|null to a non-contravariant string#' diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 3fb335fff5..96f02db19e 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -29,7 +29,7 @@ final class ContainerBuilder * * @throws \InvalidArgumentException */ - public function add($value, string $name = null): self + public function add($value, string $name): self { if (!is_string($value) && !is_callable($value) && !is_object($value)) { throw new \InvalidArgumentException(sprintf( @@ -38,19 +38,6 @@ public function add($value, string $name = null): self )); } - if ($name === null) { - if (is_string($value)) { - $name = $value; - } elseif (is_object($value)) { - $name = get_class($value); - } else { - throw new \InvalidArgumentException(sprintf( - 'Second argument to "%s::add()" is required not passing a string or object as first argument', - self::class, - )); - } - } - $this->definitions[$name] = $value; return $this; diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index 6f4bfc0c3a..02b64a2263 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -7,7 +7,6 @@ use Faker\Container\ContainerBuilder; use Faker\Container\ContainerInterface; use Faker\Core\File; -use Faker\Extension\Extension; use PHPUnit\Framework\TestCase; /** @@ -30,7 +29,7 @@ public function testAddRejectsInvalidValue($value): void ContainerBuilder::class, )); - $containerBuilder->add($value); + $containerBuilder->add($value, 'foo'); } /** @@ -59,46 +58,6 @@ public function provideInvalidValue(): \Generator } } - public function testAddRejectsNameWhenValueIsCallableAndNameIsNull(): void - { - $value = [ - new class() { - public static function create(): Extension - { - return new class() implements Extension { - }; - } - }, - 'create', - ]; - - $containerBuilder = new ContainerBuilder(); - - $this->expectException(\InvalidArgumentException::class); - $this->expectExceptionMessage(sprintf( - 'Second argument to "%s::add()" is required not passing a string or object as first argument', - ContainerBuilder::class, - )); - - $containerBuilder->add($value); - } - - public function testAddAcceptsValueWhenItIsAnObjectAndNameIsNull(): void - { - $value = new class() implements Extension {}; - - $name = get_class($value); - - $containerBuilder = new ContainerBuilder(); - - $containerBuilder->add($value); - - $container = $containerBuilder->build(); - - self::assertTrue($container->has($name)); - self::assertSame($value, $container->get($name)); - } - public function testBuildEmpty(): void { $builder = new ContainerBuilder(); @@ -112,7 +71,7 @@ public function testBuild(): void { $builder = new ContainerBuilder(); - $builder->add(File::class); + $builder->add(File::class, 'foo'); $container = $builder->build(); @@ -123,8 +82,8 @@ public function testBuildWithDuplicates(): void { $builder = new ContainerBuilder(); - $builder->add(File::class); - $builder->add(File::class); + $builder->add(File::class, 'foo'); + $builder->add(File::class, 'foo'); $container = $builder->build(); diff --git a/test/Faker/GeneratorTest.php b/test/Faker/GeneratorTest.php index 644a734819..d8e7b11f7d 100644 --- a/test/Faker/GeneratorTest.php +++ b/test/Faker/GeneratorTest.php @@ -145,7 +145,7 @@ public function testFormatterCallsGenerator(): void public function testFormatterCallsExtension(): void { $builder = new ContainerBuilder(); - $builder->add(Blood::class); + $builder->add(Blood::class, Blood::class); $faker = new Generator($builder->build()); $output = $faker->format('Faker\Core\Blood->bloodType'); From 3199539c2b97272d7cf3196ca5a6dd3a84c995fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 3 Sep 2023 14:09:49 +0200 Subject: [PATCH 146/229] Enhancement: Run tests in random order (#701) --- phpunit.xml.dist | 1 + 1 file changed, 1 insertion(+) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 37222a4ffe..050bdabe4e 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -7,6 +7,7 @@ cacheResultFile=".build/.phpunit.result.cache" colors="true" columns="max" + executionOrder="random" verbose="true" > From fb0d14770f8a00a77cfb79c5f6812d164bbb4d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 3 Sep 2023 14:10:04 +0200 Subject: [PATCH 147/229] Fix: Add property type declarations (#699) --- src/Faker/Container/Container.php | 4 ++-- src/Faker/Container/ContainerBuilder.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Faker/Container/Container.php b/src/Faker/Container/Container.php index 2dd2d974d7..409a7406a0 100644 --- a/src/Faker/Container/Container.php +++ b/src/Faker/Container/Container.php @@ -16,9 +16,9 @@ final class Container implements ContainerInterface /** * @var array */ - private $definitions; + private array $definitions; - private $services = []; + private array $services = []; /** * Create a container object with a set of definitions. The array value MUST diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 96f02db19e..012554713c 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -22,7 +22,7 @@ final class ContainerBuilder /** * @var array */ - private $definitions = []; + private array $definitions = []; /** * @param callable|object|string $value From a337b82c45e705a617e69a7f1ce9dc97726c1838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 3 Sep 2023 14:40:43 +0200 Subject: [PATCH 148/229] Fix: Enable and configure type_declaration_spaces instead of deprecated function_typehint_space fixer (#698) --- .php-cs-fixer.dist.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 90a8d4feb8..968fb4a167 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -74,7 +74,6 @@ 'curly_braces_position' => true, 'declare_equal_normalize' => true, 'declare_parentheses' => true, - 'function_typehint_space' => true, 'general_phpdoc_annotation_remove' => [ 'annotations' => [ 'author', @@ -222,6 +221,11 @@ ], ], 'trim_array_spaces' => true, + 'type_declaration_spaces' => [ + 'elements' => [ + 'function', + ], + ], 'unary_operator_spaces' => true, 'visibility_required' => [ 'elements' => [ From 642833130506bba73fe6ffa33075e651727a84cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 14:26:28 +0200 Subject: [PATCH 149/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#704) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.32 to 1.10.33. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.32...1.10.33) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index e15922f664..c986b84bbf 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.32", + "phpstan/phpstan": "^1.10.33", "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index b7d79a163a..e29b1839e4 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "a9a13b1fedad6fc7cf7e70503054cbe2", + "content-hash": "91943fd0e93bcc879374e34731204c38", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.32", + "version": "1.10.33", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44" + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-08-24T21:54:50+00:00" + "time": "2023-09-04T12:20:53+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 684564826ffe13921482bc5d7a5e3f75725f0477 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 14:26:35 +0200 Subject: [PATCH 150/229] composer(deps): bump friendsofphp/php-cs-fixer (#705) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.25.0 to 3.25.1. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.25.0...v3.25.1) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index b1249c7172..0ce16b6f26 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.25.0" + "friendsofphp/php-cs-fixer": "^3.25.1" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 5412f4cdde..8788bae2c2 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "7a2e6176d3f4126c9b59b213a71ccf35", + "content-hash": "7bbb231ca786bad9508912579f8f5346", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.25.0", + "version": "v3.25.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "9025b7d2b6e1d90a63d0ac0905018ce5d03ec88d" + "reference": "8e21d69801de6b5ecb0dbe0bcdf967b335b1260b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/9025b7d2b6e1d90a63d0ac0905018ce5d03ec88d", - "reference": "9025b7d2b6e1d90a63d0ac0905018ce5d03ec88d", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8e21d69801de6b5ecb0dbe0bcdf967b335b1260b", + "reference": "8e21d69801de6b5ecb0dbe0bcdf967b335b1260b", "shasum": "" }, "require": { @@ -309,7 +309,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.25.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.25.1" }, "funding": [ { @@ -317,7 +317,7 @@ "type": "github" } ], - "time": "2023-08-31T21:27:18+00:00" + "time": "2023-09-04T01:22:52+00:00" }, { "name": "psr/container", From cf1fd79881e9673aba3ecbe652081d4480914529 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 14:26:50 +0200 Subject: [PATCH 151/229] github-actions(deps): bump actions/checkout from 3 to 4 (#706) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/bc-check.yaml | 2 +- .github/workflows/branch-alias.yaml | 2 +- .github/workflows/code-coverage.yaml | 2 +- .github/workflows/coding-standards.yaml | 4 ++-- .github/workflows/rector.yaml | 2 +- .github/workflows/static-analysis.yaml | 4 ++-- .github/workflows/tests.yaml | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/bc-check.yaml b/.github/workflows/bc-check.yaml index 0e01cdafbf..60946927d4 100644 --- a/.github/workflows/bc-check.yaml +++ b/.github/workflows/bc-check.yaml @@ -14,7 +14,7 @@ jobs: steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Roave BC Check" uses: "addnab/docker-run-action@v3" diff --git a/.github/workflows/branch-alias.yaml b/.github/workflows/branch-alias.yaml index 7370c88117..87d0cc0c2d 100644 --- a/.github/workflows/branch-alias.yaml +++ b/.github/workflows/branch-alias.yaml @@ -17,7 +17,7 @@ jobs: coverage: "none" - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" with: ref: "main" diff --git a/.github/workflows/code-coverage.yaml b/.github/workflows/code-coverage.yaml index d5fdf13ba7..a3ff6beeb7 100644 --- a/.github/workflows/code-coverage.yaml +++ b/.github/workflows/code-coverage.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Install PHP with extensions" uses: "shivammathur/setup-php@v2" diff --git a/.github/workflows/coding-standards.yaml b/.github/workflows/coding-standards.yaml index a45413bf46..d1534f606f 100644 --- a/.github/workflows/coding-standards.yaml +++ b/.github/workflows/coding-standards.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Set up PHP" uses: "shivammathur/setup-php@v2" @@ -68,7 +68,7 @@ jobs: steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Lint YAML files" uses: "ibiqlik/action-yamllint@v3.1.1" diff --git a/.github/workflows/rector.yaml b/.github/workflows/rector.yaml index d17e34db07..647eb4a64c 100644 --- a/.github/workflows/rector.yaml +++ b/.github/workflows/rector.yaml @@ -20,7 +20,7 @@ jobs: steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Set up PHP" uses: "shivammathur/setup-php@v2" diff --git a/.github/workflows/static-analysis.yaml b/.github/workflows/static-analysis.yaml index 54c28707a3..27b676cefd 100644 --- a/.github/workflows/static-analysis.yaml +++ b/.github/workflows/static-analysis.yaml @@ -18,7 +18,7 @@ jobs: steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Set up PHP" uses: "shivammathur/setup-php@v2" @@ -59,7 +59,7 @@ jobs: steps: - name: "Checkout" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Install PHP with extensions" uses: "shivammathur/setup-php@v2" diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index bc6fa82dab..64807579bb 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -30,7 +30,7 @@ jobs: steps: - name: "Checkout code" - uses: "actions/checkout@v3" + uses: "actions/checkout@v4" - name: "Install PHP with extensions" uses: "shivammathur/setup-php@v2" From 6c3a043c0dc665a0f4bda4eca7010a2d9940e2ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 15:42:15 +0200 Subject: [PATCH 152/229] Fix: Switch order of parameters (#703) --- roave-bc-check.yaml | 1 + src/Faker/Container/ContainerBuilder.php | 4 ++-- test/Faker/Extension/ContainerBuilderTest.php | 14 +++++++------- test/Faker/GeneratorTest.php | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 8d116c8eeb..ec55cb0747 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -18,3 +18,4 @@ parameters: - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to Faker\\Container\\ContainerInterface\|null#' - '#\[BC\] CHANGED: The number of required arguments for Faker\\Container\\ContainerBuilder\#add\(\) increased from 1 to 2#' - '#\[BC\] CHANGED: The parameter \$name of Faker\\Container\\ContainerBuilder\#add\(\) changed from string\|null to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$value of Faker\\Container\\ContainerBuilder\#add\(\) changed from no type to a non-contravariant string#' diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 012554713c..6a9c4747f0 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -29,7 +29,7 @@ final class ContainerBuilder * * @throws \InvalidArgumentException */ - public function add($value, string $name): self + public function add(string $name, $value): self { if (!is_string($value) && !is_callable($value) && !is_object($value)) { throw new \InvalidArgumentException(sprintf( @@ -71,7 +71,7 @@ public static function getDefault(): ContainerInterface $instance = new self(); foreach (self::defaultExtensions() as $id => $definition) { - $instance->add($definition, $id); + $instance->add($id, $definition); } return $instance->build(); diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index 02b64a2263..a86d81cde7 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -29,7 +29,7 @@ public function testAddRejectsInvalidValue($value): void ContainerBuilder::class, )); - $containerBuilder->add($value, 'foo'); + $containerBuilder->add('foo', $value); } /** @@ -71,7 +71,7 @@ public function testBuild(): void { $builder = new ContainerBuilder(); - $builder->add(File::class, 'foo'); + $builder->add('foo', File::class); $container = $builder->build(); @@ -82,8 +82,8 @@ public function testBuildWithDuplicates(): void { $builder = new ContainerBuilder(); - $builder->add(File::class, 'foo'); - $builder->add(File::class, 'foo'); + $builder->add('foo', File::class); + $builder->add('foo', File::class); $container = $builder->build(); @@ -94,7 +94,7 @@ public function testBuildWithObject(): void { $builder = new ContainerBuilder(); - $builder->add(new File(), 'foo'); + $builder->add('foo', new File()); $container = $builder->build(); @@ -105,9 +105,9 @@ public function testBuildWithCallable(): void { $builder = new ContainerBuilder(); - $builder->add(static function () { + $builder->add('foo', static function () { return new File(); - }, 'foo'); + }); $container = $builder->build(); diff --git a/test/Faker/GeneratorTest.php b/test/Faker/GeneratorTest.php index d8e7b11f7d..3adcf06534 100644 --- a/test/Faker/GeneratorTest.php +++ b/test/Faker/GeneratorTest.php @@ -135,7 +135,7 @@ public function testFormatTransfersArgumentsToFormatter(): void public function testFormatterCallsGenerator(): void { $builder = new ContainerBuilder(); - $builder->add(Blood::class, BloodExtension::class); + $builder->add(BloodExtension::class, Blood::class); $faker = new Generator($builder->build()); $output = $faker->format('bloodType'); From 67208f90b019f242b0a9833965974e0a0fa596de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 17:15:55 +0200 Subject: [PATCH 153/229] Fix: Remove unused method (#711) --- roave-bc-check.yaml | 2 ++ src/Faker/Container/Container.php | 8 -------- src/Faker/Container/ContainerInterface.php | 4 ---- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index ec55cb0747..24ee17f2c8 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -19,3 +19,5 @@ parameters: - '#\[BC\] CHANGED: The number of required arguments for Faker\\Container\\ContainerBuilder\#add\(\) increased from 1 to 2#' - '#\[BC\] CHANGED: The parameter \$name of Faker\\Container\\ContainerBuilder\#add\(\) changed from string\|null to a non-contravariant string#' - '#\[BC\] CHANGED: The parameter \$value of Faker\\Container\\ContainerBuilder\#add\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerInterface\#getDefinitions\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Container\\Container\#getDefinitions\(\) was removed#' diff --git a/src/Faker/Container/Container.php b/src/Faker/Container/Container.php index 409a7406a0..4a79ea2272 100644 --- a/src/Faker/Container/Container.php +++ b/src/Faker/Container/Container.php @@ -134,12 +134,4 @@ public function has($id): bool return array_key_exists($id, $this->definitions); } - - /** - * Get the bindings between Extension interfaces and implementations. - */ - public function getDefinitions(): array - { - return $this->definitions; - } } diff --git a/src/Faker/Container/ContainerInterface.php b/src/Faker/Container/ContainerInterface.php index d34f4a8967..9e5237d341 100644 --- a/src/Faker/Container/ContainerInterface.php +++ b/src/Faker/Container/ContainerInterface.php @@ -6,8 +6,4 @@ interface ContainerInterface extends BaseContainerInterface { - /** - * Get the bindings between Extension interfaces and implementations. - */ - public function getDefinitions(): array; } From aca5898095fb5d3a3358fc91c0f0a1f32f1f6da6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 17:16:16 +0200 Subject: [PATCH 154/229] Fix: Rename parameter (#707) --- src/Faker/Container/ContainerBuilder.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 6a9c4747f0..eab78da402 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -29,7 +29,7 @@ final class ContainerBuilder * * @throws \InvalidArgumentException */ - public function add(string $name, $value): self + public function add(string $id, $value): self { if (!is_string($value) && !is_callable($value) && !is_object($value)) { throw new \InvalidArgumentException(sprintf( @@ -38,7 +38,7 @@ public function add(string $name, $value): self )); } - $this->definitions[$name] = $value; + $this->definitions[$id] = $value; return $this; } From 67190e9f952508428b5a8e7166040218a03a3796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 17:16:54 +0200 Subject: [PATCH 155/229] Fix: Add parameter type declaration (#710) --- src/Faker/Container/Container.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Container/Container.php b/src/Faker/Container/Container.php index 4a79ea2272..5fd62948fc 100644 --- a/src/Faker/Container/Container.php +++ b/src/Faker/Container/Container.php @@ -81,7 +81,7 @@ public function get($id): Extension * * @param callable|object|string $definition */ - private function getService($id, $definition) + private function getService(string $id, $definition) { if (is_callable($definition)) { try { From c77a91ba6b9b814c11c12bd5ac515fc257a5d5eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 17:18:55 +0200 Subject: [PATCH 156/229] Fix: Order (#712) --- roave-bc-check.yaml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 24ee17f2c8..df2e4ff216 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -1,23 +1,23 @@ parameters: ignoreErrors: - - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-z_A-Z]+\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - '#\[BC\] CHANGED: Property Faker\\Factory::\$defaultProviders changed default value#' - - '#\[BC\] CHANGED: Type documentation for property Faker\\Provider\\en_ZA\\Internet::\$tld changed from having no type to array#' - - '#\[BC\] CHANGED: The parameter \$generator of Faker\\ValidGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' - - '#\[BC\] CHANGED: The parameter \$generator of Faker\\UniqueGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' - - '#\[BC\] CHANGED: The return type of Faker\\Extension\\PersonExtension\#name\(\) changed from no type to string#' - - '#\[BC\] CHANGED: The parameter \$max of Faker\\Extension\\NumberExtension\#randomFloat\(\) changed from float to float\|null#' - - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid\(\) was removed#' - - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid3\(\) was removed#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerBuilder has been deleted#' - - '#\[BC\] REMOVED: Class Faker\\Extension\\Container has been deleted#' + - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-z_A-Z]+\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' + - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' + - '#\[BC\] CHANGED: The number of required arguments for Faker\\Container\\ContainerBuilder\#add\(\) increased from 1 to 2#' - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to a non-contravariant Faker\\Container\\ContainerInterface\|null#' - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to Faker\\Container\\ContainerInterface\|null#' - - '#\[BC\] CHANGED: The number of required arguments for Faker\\Container\\ContainerBuilder\#add\(\) increased from 1 to 2#' + - '#\[BC\] CHANGED: The parameter \$generator of Faker\\UniqueGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' + - '#\[BC\] CHANGED: The parameter \$generator of Faker\\ValidGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' + - '#\[BC\] CHANGED: The parameter \$max of Faker\\Extension\\NumberExtension\#randomFloat\(\) changed from float to float\|null#' - '#\[BC\] CHANGED: The parameter \$name of Faker\\Container\\ContainerBuilder\#add\(\) changed from string\|null to a non-contravariant string#' - '#\[BC\] CHANGED: The parameter \$value of Faker\\Container\\ContainerBuilder\#add\(\) changed from no type to a non-contravariant string#' - - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerInterface\#getDefinitions\(\) was removed#' + - '#\[BC\] CHANGED: The return type of Faker\\Extension\\PersonExtension\#name\(\) changed from no type to string#' + - '#\[BC\] CHANGED: Type documentation for property Faker\\Provider\\en_ZA\\Internet::\$tld changed from having no type to array#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\Container has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerBuilder has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' - '#\[BC\] REMOVED: Method Faker\\Container\\Container\#getDefinitions\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerInterface\#getDefinitions\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid3\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid\(\) was removed#' From c48baf513e6661201aa77a293c955290f615b004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:04:27 +0200 Subject: [PATCH 157/229] Enhancement: Reuse NumberExtension (#715) --- src/Faker/Core/Barcode.php | 9 ++++++++- src/Faker/Core/Color.php | 35 ++++++++++++++++------------------ src/Faker/Core/Coordinates.php | 13 ++++++++++--- src/Faker/Core/Number.php | 10 +++++----- src/Faker/Core/Uuid.php | 16 +++++++++++----- src/Faker/Core/Version.php | 32 ++++++++++++++++++------------- 6 files changed, 69 insertions(+), 46 deletions(-) diff --git a/src/Faker/Core/Barcode.php b/src/Faker/Core/Barcode.php index 89f801a5a0..a85420be90 100644 --- a/src/Faker/Core/Barcode.php +++ b/src/Faker/Core/Barcode.php @@ -12,6 +12,13 @@ */ final class Barcode implements Extension\BarcodeExtension { + private Extension\NumberExtension $numberExtension; + + public function __construct(Extension\NumberExtension $numberExtension = null) + { + $this->numberExtension = $numberExtension ?: new Number(); + } + private function ean(int $length = 13): string { $code = Extension\Helper::numerify(str_repeat('#', $length - 1)); @@ -38,7 +45,7 @@ public function isbn10(): string public function isbn13(): string { - $code = '97' . mt_rand(8, 9) . Extension\Helper::numerify(str_repeat('#', 9)); + $code = '97' . $this->numberExtension->numberBetween(8, 9) . Extension\Helper::numerify(str_repeat('#', 9)); return sprintf('%s%s', $code, Calculator\Ean::checksum($code)); } diff --git a/src/Faker/Core/Color.php b/src/Faker/Core/Color.php index 6e4e350e6d..7b1d7fc44d 100644 --- a/src/Faker/Core/Color.php +++ b/src/Faker/Core/Color.php @@ -12,6 +12,8 @@ */ final class Color implements Extension\ColorExtension { + private Extension\NumberExtension $numberExtension; + /** * @var string[] */ @@ -20,7 +22,6 @@ final class Color implements Extension\ColorExtension 'purple', 'teal', 'lime', 'blue', 'silver', 'gray', 'yellow', 'fuchsia', 'aqua', 'white', ]; - /** * @var string[] */ @@ -53,14 +54,17 @@ final class Color implements Extension\ColorExtension 'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen', ]; + public function __construct(Extension\NumberExtension $numberExtension = null) + { + $this->numberExtension = $numberExtension ?: new Number(); + } + /** * @example '#fa3cc2' */ public function hexColor(): string { - $number = new Number(); - - return '#' . str_pad(dechex($number->numberBetween(1, 16777215)), 6, '0', STR_PAD_LEFT); + return '#' . str_pad(dechex($this->numberExtension->numberBetween(1, 16777215)), 6, '0', STR_PAD_LEFT); } /** @@ -68,8 +72,7 @@ public function hexColor(): string */ public function safeHexColor(): string { - $number = new Number(); - $color = str_pad(dechex($number->numberBetween(0, 255)), 3, '0', STR_PAD_LEFT); + $color = str_pad(dechex($this->numberExtension->numberBetween(0, 255)), 3, '0', STR_PAD_LEFT); return sprintf( '#%s%s%s%s%s%s', @@ -122,12 +125,10 @@ public function rgbCssColor(): string */ public function rgbaCssColor(): string { - $number = new Number(); - return sprintf( 'rgba(%s,%s)', $this->rgbColor(), - $number->randomFloat(1, 0, 1), + $this->numberExtension->randomFloat(1, 0, 1), ); } @@ -152,13 +153,11 @@ public function colorName(): string */ public function hslColor(): string { - $number = new Number(); - return sprintf( '%s,%s,%s', - $number->numberBetween(0, 360), - $number->numberBetween(0, 100), - $number->numberBetween(0, 100), + $this->numberExtension->numberBetween(0, 360), + $this->numberExtension->numberBetween(0, 100), + $this->numberExtension->numberBetween(0, 100), ); } @@ -169,12 +168,10 @@ public function hslColor(): string */ public function hslColorAsArray(): array { - $number = new Number(); - return [ - $number->numberBetween(0, 360), - $number->numberBetween(0, 100), - $number->numberBetween(0, 100), + $this->numberExtension->numberBetween(0, 360), + $this->numberExtension->numberBetween(0, 100), + $this->numberExtension->numberBetween(0, 100), ]; } } diff --git a/src/Faker/Core/Coordinates.php b/src/Faker/Core/Coordinates.php index 40a26589f7..6d27b22f3f 100644 --- a/src/Faker/Core/Coordinates.php +++ b/src/Faker/Core/Coordinates.php @@ -4,10 +4,17 @@ namespace Faker\Core; -use Faker\Extension\Extension; +use Faker\Extension; -class Coordinates implements Extension +class Coordinates implements Extension\Extension { + private Extension\NumberExtension $numberExtension; + + public function __construct(Extension\NumberExtension $numberExtension = null) + { + $this->numberExtension = $numberExtension ?: new Number(); + } + /** * @example '77.147489' * @@ -63,6 +70,6 @@ private function randomFloat(int $nbMaxDecimals, float $min, float $max): float throw new \LogicException('Invalid coordinates boundaries'); } - return round($min + mt_rand() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); + return $this->numberExtension->randomFloat($nbMaxDecimals, $min, $max); } } diff --git a/src/Faker/Core/Number.php b/src/Faker/Core/Number.php index f67c042675..866d02fbe5 100644 --- a/src/Faker/Core/Number.php +++ b/src/Faker/Core/Number.php @@ -21,7 +21,7 @@ public function numberBetween(int $min = 0, int $max = 2147483647): int public function randomDigit(): int { - return mt_rand(0, 9); + return $this->numberBetween(0, 9); } public function randomDigitNot(int $except): int @@ -37,7 +37,7 @@ public function randomDigitNot(int $except): int public function randomDigitNotZero(): int { - return mt_rand(1, 9); + return $this->numberBetween(1, 9); } public function randomFloat(?int $nbMaxDecimals = null, float $min = 0, ?float $max = null): float @@ -60,7 +60,7 @@ public function randomFloat(?int $nbMaxDecimals = null, float $min = 0, ?float $ $max = $tmp; } - return round($min + mt_rand() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); + return round($min + $this->numberBetween() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); } public function randomNumber(int $nbDigits = null, bool $strict = false): int @@ -75,9 +75,9 @@ public function randomNumber(int $nbDigits = null, bool $strict = false): int } if ($strict) { - return mt_rand(10 ** ($nbDigits - 1), $max); + return $this->numberBetween(10 ** ($nbDigits - 1), $max); } - return mt_rand(0, $max); + return $this->numberBetween(0, $max); } } diff --git a/src/Faker/Core/Uuid.php b/src/Faker/Core/Uuid.php index 5e3b633a26..f9f595e0cd 100644 --- a/src/Faker/Core/Uuid.php +++ b/src/Faker/Core/Uuid.php @@ -2,17 +2,23 @@ namespace Faker\Core; -use Faker\Extension\UuidExtension; +use Faker\Extension; -final class Uuid implements UuidExtension +final class Uuid implements Extension\UuidExtension { - public function uuid3(): string + private Extension\NumberExtension $numberExtension; + + public function __construct(Extension\NumberExtension $numberExtension = null) { - $number = new Number(); + $this->numberExtension = $numberExtension ?: new Number(); + } + + public function uuid3(): string + { // fix for compatibility with 32bit architecture; each mt_rand call is restricted to 32bit // two such calls will cause 64bits of randomness regardless of architecture - $seed = $number->numberBetween(0, 2147483647) . '#' . $number->numberBetween(0, 2147483647); + $seed = $this->numberExtension->numberBetween(0, 2147483647) . '#' . $this->numberExtension->numberBetween(0, 2147483647); // Hash the seed and convert to a byte array $val = md5($seed, true); diff --git a/src/Faker/Core/Version.php b/src/Faker/Core/Version.php index f5e7cf5a08..db6ee836d1 100644 --- a/src/Faker/Core/Version.php +++ b/src/Faker/Core/Version.php @@ -4,17 +4,23 @@ namespace Faker\Core; -use Faker\Extension\Helper; -use Faker\Extension\VersionExtension; +use Faker\Extension; use Faker\Provider\DateTime; -final class Version implements VersionExtension +final class Version implements Extension\VersionExtension { + private Extension\NumberExtension $numberExtension; /** * @var string[] */ private $semverCommonPreReleaseIdentifiers = ['alpha', 'beta', 'rc']; + public function __construct(Extension\NumberExtension $numberExtension = null) + { + + $this->numberExtension = $numberExtension ?: new Number(); + } + /** * Represents v2.0.0 of the semantic versioning: https://semver.org/spec/v2.0.0.html */ @@ -22,11 +28,11 @@ public function semver(bool $preRelease = false, bool $build = false): string { return sprintf( '%d.%d.%d%s%s', - mt_rand(0, 9), - mt_rand(0, 99), - mt_rand(0, 99), - $preRelease && mt_rand(0, 1) === 1 ? '-' . $this->semverPreReleaseIdentifier() : '', - $build && mt_rand(0, 1) === 1 ? '+' . $this->semverBuildIdentifier() : '', + $this->numberExtension->numberBetween(0, 9), + $this->numberExtension->numberBetween(0, 99), + $this->numberExtension->numberBetween(0, 99), + $preRelease && $this->numberExtension->numberBetween(0, 1) === 1 ? '-' . $this->semverPreReleaseIdentifier() : '', + $build && $this->numberExtension->numberBetween(0, 1) === 1 ? '+' . $this->semverBuildIdentifier() : '', ); } @@ -35,13 +41,13 @@ public function semver(bool $preRelease = false, bool $build = false): string */ private function semverPreReleaseIdentifier(): string { - $ident = Helper::randomElement($this->semverCommonPreReleaseIdentifiers); + $ident = Extension\Helper::randomElement($this->semverCommonPreReleaseIdentifiers); - if (mt_rand(0, 1) !== 1) { + if ($this->numberExtension->numberBetween(0, 1) !== 1) { return $ident; } - return $ident . '.' . mt_rand(1, 99); + return $ident . '.' . $this->numberExtension->numberBetween(1, 99); } /** @@ -49,9 +55,9 @@ private function semverPreReleaseIdentifier(): string */ private function semverBuildIdentifier(): string { - if (mt_rand(0, 1) === 1) { + if ($this->numberExtension->numberBetween(0, 1) === 1) { // short git revision syntax: https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection - return substr(sha1(Helper::lexify('??????')), 0, 7); + return substr(sha1(Extension\Helper::lexify('??????')), 0, 7); } // date syntax From 7f6fb67f74a256e97fa67840e3453f4c9f28ed8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:04:47 +0200 Subject: [PATCH 158/229] Fix: Methods are instance methods (#708) --- src/Faker/Core/Coordinates.php | 4 ++-- src/Faker/Core/Number.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Faker/Core/Coordinates.php b/src/Faker/Core/Coordinates.php index 6d27b22f3f..9b8b9dd354 100644 --- a/src/Faker/Core/Coordinates.php +++ b/src/Faker/Core/Coordinates.php @@ -59,8 +59,8 @@ public function longitude(float $min = -180.0, float $max = 180.0): float public function localCoordinates(): array { return [ - 'latitude' => static::latitude(), - 'longitude' => static::longitude(), + 'latitude' => $this->latitude(), + 'longitude' => $this->longitude(), ]; } diff --git a/src/Faker/Core/Number.php b/src/Faker/Core/Number.php index 866d02fbe5..a16920c936 100644 --- a/src/Faker/Core/Number.php +++ b/src/Faker/Core/Number.php @@ -26,7 +26,7 @@ public function randomDigit(): int public function randomDigitNot(int $except): int { - $result = self::numberBetween(0, 8); + $result = $this->numberBetween(0, 8); if ($result >= $except) { ++$result; From 404d06b0590bb24a84e21e82c8151e83326d8b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:05:17 +0200 Subject: [PATCH 159/229] Fix: Add property type declarations (#713) --- src/Faker/Core/Blood.php | 4 ++-- src/Faker/Core/Color.php | 4 ++-- src/Faker/Core/DateTime.php | 7 ++----- src/Faker/Core/File.php | 2 +- src/Faker/Core/Version.php | 2 +- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Faker/Core/Blood.php b/src/Faker/Core/Blood.php index 50a5806c6b..03e563fc12 100644 --- a/src/Faker/Core/Blood.php +++ b/src/Faker/Core/Blood.php @@ -14,12 +14,12 @@ final class Blood implements Extension\BloodExtension /** * @var string[] */ - private $bloodTypes = ['A', 'AB', 'B', 'O']; + private array $bloodTypes = ['A', 'AB', 'B', 'O']; /** * @var string[] */ - private $bloodRhFactors = ['+', '-']; + private array $bloodRhFactors = ['+', '-']; public function bloodType(): string { diff --git a/src/Faker/Core/Color.php b/src/Faker/Core/Color.php index 7b1d7fc44d..bd94819013 100644 --- a/src/Faker/Core/Color.php +++ b/src/Faker/Core/Color.php @@ -17,7 +17,7 @@ final class Color implements Extension\ColorExtension /** * @var string[] */ - private $safeColorNames = [ + private array $safeColorNames = [ 'black', 'maroon', 'green', 'navy', 'olive', 'purple', 'teal', 'lime', 'blue', 'silver', 'gray', 'yellow', 'fuchsia', 'aqua', 'white', @@ -25,7 +25,7 @@ final class Color implements Extension\ColorExtension /** * @var string[] */ - private $allColorNames = [ + private array $allColorNames = [ 'AliceBlue', 'AntiqueWhite', 'Aqua', 'Aquamarine', 'Azure', 'Beige', 'Bisque', 'Black', 'BlanchedAlmond', 'Blue', 'BlueViolet', 'Brown', 'BurlyWood', 'CadetBlue', diff --git a/src/Faker/Core/DateTime.php b/src/Faker/Core/DateTime.php index f3d7877654..307c9fd44d 100644 --- a/src/Faker/Core/DateTime.php +++ b/src/Faker/Core/DateTime.php @@ -19,12 +19,9 @@ final class DateTime implements DateTimeExtension, GeneratorAwareExtension /** * @var string[] */ - private $centuries = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX', 'XXI']; + private array $centuries = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX', 'XXI']; - /** - * @var string - */ - private $defaultTimezone = null; + private ?string $defaultTimezone = null; /** * Get the POSIX-timestamp of a DateTime, int or string. diff --git a/src/Faker/Core/File.php b/src/Faker/Core/File.php index adddb0cb33..5151e900f3 100644 --- a/src/Faker/Core/File.php +++ b/src/Faker/Core/File.php @@ -18,7 +18,7 @@ final class File implements Extension\FileExtension * * @see http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types */ - private $mimeTypes = [ + private array $mimeTypes = [ 'application/atom+xml' => 'atom', 'application/ecmascript' => 'ecma', 'application/emma+xml' => 'emma', diff --git a/src/Faker/Core/Version.php b/src/Faker/Core/Version.php index db6ee836d1..9618888c9e 100644 --- a/src/Faker/Core/Version.php +++ b/src/Faker/Core/Version.php @@ -13,7 +13,7 @@ final class Version implements Extension\VersionExtension /** * @var string[] */ - private $semverCommonPreReleaseIdentifiers = ['alpha', 'beta', 'rc']; + private array $semverCommonPreReleaseIdentifiers = ['alpha', 'beta', 'rc']; public function __construct(Extension\NumberExtension $numberExtension = null) { From e0623f66bd8468633ed5d4177672e67f203ae304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:05:52 +0200 Subject: [PATCH 160/229] Fix: Reduce visibility (#714) * Fix: Reduce visibility * Fix: Remove unused methods --- roave-bc-check.yaml | 6 ++++++ src/Faker/Core/DateTime.php | 18 ++++-------------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index df2e4ff216..66a2326399 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -19,5 +19,11 @@ parameters: - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' - '#\[BC\] REMOVED: Method Faker\\Container\\Container\#getDefinitions\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerInterface\#getDefinitions\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#getDefaultTimezone\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#getTimestamp\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#getTimestampDateTime\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#resolveTimezone\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#setDefaultTimezone\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#setTimezone\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid3\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Generator\#uuid\(\) was removed#' diff --git a/src/Faker/Core/DateTime.php b/src/Faker/Core/DateTime.php index 307c9fd44d..9f89d022c0 100644 --- a/src/Faker/Core/DateTime.php +++ b/src/Faker/Core/DateTime.php @@ -30,7 +30,7 @@ final class DateTime implements DateTimeExtension, GeneratorAwareExtension * * @return false|int */ - protected function getTimestamp($until = 'now') + private function getTimestamp($until = 'now') { if (is_numeric($until)) { return (int) $until; @@ -48,22 +48,12 @@ protected function getTimestamp($until = 'now') * * @param int $timestamp the UNIX / POSIX-compatible timestamp */ - protected function getTimestampDateTime(int $timestamp): \DateTime + private function getTimestampDateTime(int $timestamp): \DateTime { return new \DateTime('@' . $timestamp); } - protected function setDefaultTimezone(string $timezone = null): void - { - $this->defaultTimezone = $timezone; - } - - protected function getDefaultTimezone(): ?string - { - return $this->defaultTimezone; - } - - protected function resolveTimezone(?string $timezone): string + private function resolveTimezone(?string $timezone): string { if ($timezone !== null) { return $timezone; @@ -75,7 +65,7 @@ protected function resolveTimezone(?string $timezone): string /** * Internal method to set the timezone on a DateTime object. */ - protected function setTimezone(\DateTime $dateTime, ?string $timezone): \DateTime + private function setTimezone(\DateTime $dateTime, ?string $timezone): \DateTime { $timezone = $this->resolveTimezone($timezone); From 1990f9239f2632c285179e9711a62e9419c247a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:06:25 +0200 Subject: [PATCH 161/229] Fix: Do not memoize invalid service (#709) * Enhancement: Assert that Container throws on second attempt to retrieve service * Fix: Do not memoize invalid service --- src/Faker/Container/Container.php | 4 +++- test/Faker/Extension/ContainerTest.php | 27 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/Faker/Container/Container.php b/src/Faker/Container/Container.php index 5fd62948fc..9b361845f2 100644 --- a/src/Faker/Container/Container.php +++ b/src/Faker/Container/Container.php @@ -63,7 +63,7 @@ public function get($id): Extension $definition = $this->definitions[$id]; - $service = $this->services[$id] = $this->getService($id, $definition); + $service = $this->getService($id, $definition); if (!$service instanceof Extension) { throw new \RuntimeException(sprintf( @@ -73,6 +73,8 @@ public function get($id): Extension )); } + $this->services[$id] = $service; + return $service; } diff --git a/test/Faker/Extension/ContainerTest.php b/test/Faker/Extension/ContainerTest.php index f1158d4aef..a4ed7b233f 100644 --- a/test/Faker/Extension/ContainerTest.php +++ b/test/Faker/Extension/ContainerTest.php @@ -64,6 +64,33 @@ public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsN $container->get($id); } + /** + * @dataProvider provideDefinitionThatDoesNotResolveToExtension + */ + public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsNotAnExtensionOnSecondTry($definition): void + { + $id = 'file'; + + $container = new Container([ + $id => $definition, + ]); + + try { + $container->get($id); + } catch (\RuntimeException $e) { + // do nothing + } + + $this->expectException(\RuntimeException::class); + $this->expectExceptionMessage(sprintf( + 'Service resolved for identifier "%s" does not implement the %s" interface.', + $id, + Extension::class, + )); + + $container->get($id); + } + /** * @return \Generator */ From edb6523b53e308e95de340fcab56c4947910d840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:56:09 +0200 Subject: [PATCH 162/229] Fix: Consistently describe experimental status (#717) --- src/Faker/Core/DateTime.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Core/DateTime.php b/src/Faker/Core/DateTime.php index 9f89d022c0..6ef40a9667 100644 --- a/src/Faker/Core/DateTime.php +++ b/src/Faker/Core/DateTime.php @@ -8,7 +8,7 @@ use Faker\Extension\Helper; /** - * @experimental + * @experimental This class is experimental and does not fall under our BC promise * * @since 1.20.0 */ From e0c22feba0db144e345a0a1cdd010d6cba40000f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:56:25 +0200 Subject: [PATCH 163/229] Fix: Mark classes as experimental (#716) --- src/Faker/Core/Coordinates.php | 3 +++ src/Faker/Core/Uuid.php | 3 +++ src/Faker/Core/Version.php | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/Faker/Core/Coordinates.php b/src/Faker/Core/Coordinates.php index 9b8b9dd354..19b58f95a7 100644 --- a/src/Faker/Core/Coordinates.php +++ b/src/Faker/Core/Coordinates.php @@ -6,6 +6,9 @@ use Faker\Extension; +/** + * @experimental This class is experimental and does not fall under our BC promise + */ class Coordinates implements Extension\Extension { private Extension\NumberExtension $numberExtension; diff --git a/src/Faker/Core/Uuid.php b/src/Faker/Core/Uuid.php index f9f595e0cd..d1db1b2292 100644 --- a/src/Faker/Core/Uuid.php +++ b/src/Faker/Core/Uuid.php @@ -4,6 +4,9 @@ use Faker\Extension; +/** + * @experimental This class is experimental and does not fall under our BC promise + */ final class Uuid implements Extension\UuidExtension { private Extension\NumberExtension $numberExtension; diff --git a/src/Faker/Core/Version.php b/src/Faker/Core/Version.php index 9618888c9e..8863c480a2 100644 --- a/src/Faker/Core/Version.php +++ b/src/Faker/Core/Version.php @@ -7,6 +7,9 @@ use Faker\Extension; use Faker\Provider\DateTime; +/** + * @experimental This class is experimental and does not fall under our BC promise + */ final class Version implements Extension\VersionExtension { private Extension\NumberExtension $numberExtension; From 1f83b6801f2ad3da7f41fde87bc2a29d38a198e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 18:58:56 +0200 Subject: [PATCH 164/229] Fix: Mark class as final (#718) --- roave-bc-check.yaml | 1 + src/Faker/Core/Coordinates.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 66a2326399..610c9e4e2f 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -1,5 +1,6 @@ parameters: ignoreErrors: + - '#\[BC\] CHANGED: Class Faker\\Core\\Coordinates became final#' - '#\[BC\] CHANGED: Property Faker\\Factory::\$defaultProviders changed default value#' - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-z_A-Z]+\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' diff --git a/src/Faker/Core/Coordinates.php b/src/Faker/Core/Coordinates.php index 19b58f95a7..15b5492e17 100644 --- a/src/Faker/Core/Coordinates.php +++ b/src/Faker/Core/Coordinates.php @@ -9,7 +9,7 @@ /** * @experimental This class is experimental and does not fall under our BC promise */ -class Coordinates implements Extension\Extension +final class Coordinates implements Extension\Extension { private Extension\NumberExtension $numberExtension; From dd8df33d504ec3069a992d1ea513341a6384ee83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 22:18:20 +0200 Subject: [PATCH 165/229] Fix: Return string (#726) --- phpstan-baseline.neon | 5 ----- psalm.baseline.xml | 8 -------- src/Faker/Calculator/Luhn.php | 2 +- 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index a9b8f8536c..f5e829a001 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -15,11 +15,6 @@ parameters: count: 1 path: src/Faker/Calculator/Luhn.php - - - message: "#^Method Faker\\\\Calculator\\\\Luhn\\:\\:computeCheckDigit\\(\\) should return string but returns int\\.$#" - count: 1 - path: src/Faker/Calculator/Luhn.php - - message: "#^Result of && is always false\\.$#" count: 1 diff --git a/psalm.baseline.xml b/psalm.baseline.xml index ee068ecd7d..7ee4975b70 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,13 +1,5 @@ - - - 0 - - - string - - uniqueGenerator]]> diff --git a/src/Faker/Calculator/Luhn.php b/src/Faker/Calculator/Luhn.php index 3a048fb082..0327668e53 100644 --- a/src/Faker/Calculator/Luhn.php +++ b/src/Faker/Calculator/Luhn.php @@ -44,7 +44,7 @@ public static function computeCheckDigit($partialNumber) $checkDigit = self::checksum($partialNumber . '0'); if ($checkDigit === 0) { - return 0; + return '0'; } return (string) (10 - $checkDigit); From 68336bb152011d5425364e129e5e8c0ec825bafd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 22:24:07 +0200 Subject: [PATCH 166/229] Fix: Order (#722) --- src/Faker/Container/ContainerBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index eab78da402..940ab39638 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -61,8 +61,8 @@ public static function defaultExtensions(): array DateTimeExtension::class => Core\DateTime::class, FileExtension::class => Core\File::class, NumberExtension::class => Core\Number::class, - VersionExtension::class => Core\Version::class, UuidExtension::class => Core\Uuid::class, + VersionExtension::class => Core\Version::class, ]; } From 1ba2598081b1b5a1b585decc327d020235710398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 4 Sep 2023 23:00:16 +0200 Subject: [PATCH 167/229] Fix: Avoid unnecessary imports (#721) --- src/Faker/Container/ContainerBuilder.php | 25 +++++++++--------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 940ab39638..8b2223d522 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -5,14 +5,7 @@ namespace Faker\Container; use Faker\Core; -use Faker\Extension\BarcodeExtension; -use Faker\Extension\BloodExtension; -use Faker\Extension\ColorExtension; -use Faker\Extension\DateTimeExtension; -use Faker\Extension\FileExtension; -use Faker\Extension\NumberExtension; -use Faker\Extension\UuidExtension; -use Faker\Extension\VersionExtension; +use Faker\Extension; /** * @experimental This class is experimental and does not fall under our BC promise @@ -55,14 +48,14 @@ public function build(): ContainerInterface public static function defaultExtensions(): array { return [ - BarcodeExtension::class => Core\Barcode::class, - BloodExtension::class => Core\Blood::class, - ColorExtension::class => Core\Color::class, - DateTimeExtension::class => Core\DateTime::class, - FileExtension::class => Core\File::class, - NumberExtension::class => Core\Number::class, - UuidExtension::class => Core\Uuid::class, - VersionExtension::class => Core\Version::class, + Extension\BarcodeExtension::class => Core\Barcode::class, + Extension\BloodExtension::class => Core\Blood::class, + Extension\ColorExtension::class => Core\Color::class, + Extension\DateTimeExtension::class => Core\DateTime::class, + Extension\FileExtension::class => Core\File::class, + Extension\NumberExtension::class => Core\Number::class, + Extension\UuidExtension::class => Core\Uuid::class, + Extension\VersionExtension::class => Core\Version::class, ]; } From 31c68422143e43238ace8f79efe819442efa4edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 09:53:21 +0200 Subject: [PATCH 168/229] Enhancement: Enable `self_static_accessor` fixer (#728) * Enhancement: Enable self_static_accessor fixer * Fix: Run 'make cs' --- .php-cs-fixer.dist.php | 1 + src/Faker/Extension/Helper.php | 2 +- test/Faker/Provider/ProviderOverrideTest.php | 38 ++++++++++---------- test/Faker/Provider/id_ID/PersonTest.php | 2 +- test/Faker/Provider/ro_RO/PersonTest.php | 2 +- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 968fb4a167..f6ebd33afd 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -187,6 +187,7 @@ 'random_api_migration' => true, 'return_assignment' => true, 'return_type_declaration' => true, + 'self_static_accessor' => true, 'semicolon_after_instruction' => true, 'short_scalar_cast' => true, 'single_line_comment_style' => true, diff --git a/src/Faker/Extension/Helper.php b/src/Faker/Extension/Helper.php index d6245313f9..47200e90c6 100644 --- a/src/Faker/Extension/Helper.php +++ b/src/Faker/Extension/Helper.php @@ -86,7 +86,7 @@ public static function bothify(string $string): string return mt_rand(0, 1) === 1 ? '#' : '?'; }); - return static::lexify(static::numerify($string)); + return self::lexify(self::numerify($string)); } private static function replaceWildcard(string $string, string $wildcard, callable $callback): string diff --git a/test/Faker/Provider/ProviderOverrideTest.php b/test/Faker/Provider/ProviderOverrideTest.php index de07e803b6..32415c8014 100644 --- a/test/Faker/Provider/ProviderOverrideTest.php +++ b/test/Faker/Provider/ProviderOverrideTest.php @@ -35,10 +35,10 @@ public function testAddress($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->city); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->postcode); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->address); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->country); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->city); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->postcode); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->address); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->country); } /** @@ -50,7 +50,7 @@ public function testCompany($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->company); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->company); } /** @@ -62,8 +62,8 @@ public function testDateTime($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->century); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->timezone); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->century); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->timezone); } /** @@ -75,12 +75,12 @@ public function testInternet($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->userName); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->userName); - self::assertMatchesRegularExpression(static::TEST_EMAIL_REGEX, $faker->email); - self::assertMatchesRegularExpression(static::TEST_EMAIL_REGEX, $faker->safeEmail); - self::assertMatchesRegularExpression(static::TEST_EMAIL_REGEX, $faker->freeEmail); - self::assertMatchesRegularExpression(static::TEST_EMAIL_REGEX, $faker->companyEmail); + self::assertMatchesRegularExpression(self::TEST_EMAIL_REGEX, $faker->email); + self::assertMatchesRegularExpression(self::TEST_EMAIL_REGEX, $faker->safeEmail); + self::assertMatchesRegularExpression(self::TEST_EMAIL_REGEX, $faker->freeEmail); + self::assertMatchesRegularExpression(self::TEST_EMAIL_REGEX, $faker->companyEmail); } /** @@ -92,10 +92,10 @@ public function testPerson($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->name); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->title); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->firstName); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->lastName); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->name); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->title); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->firstName); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->lastName); } /** @@ -107,7 +107,7 @@ public function testPhoneNumber($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->phoneNumber); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->phoneNumber); } /** @@ -119,7 +119,7 @@ public function testUserAgent($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->userAgent); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->userAgent); } /** @@ -132,6 +132,6 @@ public function testUuid($locale = null): void { $faker = Faker\Factory::create($locale); - self::assertMatchesRegularExpression(static::TEST_STRING_REGEX, $faker->uuid); + self::assertMatchesRegularExpression(self::TEST_STRING_REGEX, $faker->uuid); } } diff --git a/test/Faker/Provider/id_ID/PersonTest.php b/test/Faker/Provider/id_ID/PersonTest.php index 164c1ad29a..8a9e488c1c 100644 --- a/test/Faker/Provider/id_ID/PersonTest.php +++ b/test/Faker/Provider/id_ID/PersonTest.php @@ -77,7 +77,7 @@ public function testNikContainsBirthPlace(): void { $nik = $this->faker->nik(); - self::assertContains(substr($nik, 0, 4), static::$birthPlaceCode); + self::assertContains(substr($nik, 0, 4), self::$birthPlaceCode); } protected function getProviders(): iterable diff --git a/test/Faker/Provider/ro_RO/PersonTest.php b/test/Faker/Provider/ro_RO/PersonTest.php index 681b93a2d1..81368fc1f8 100644 --- a/test/Faker/Provider/ro_RO/PersonTest.php +++ b/test/Faker/Provider/ro_RO/PersonTest.php @@ -206,7 +206,7 @@ protected function isValidMaleCnp($value) protected function isValidCnp($cnp) { - if (preg_match(static::TEST_CNP_REGEX, $cnp) !== false) { + if (preg_match(self::TEST_CNP_REGEX, $cnp) !== false) { $checkNumber = 279146358279; $checksum = 0; From 1c6d0e0de619d4bda5d8c5c450954b5bff06bcb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 09:54:00 +0200 Subject: [PATCH 169/229] Fix: Cache for friendsofphp/php-cs-fixer (#729) --- .github/workflows/coding-standards.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/coding-standards.yaml b/.github/workflows/coding-standards.yaml index d1534f606f..45055acb01 100644 --- a/.github/workflows/coding-standards.yaml +++ b/.github/workflows/coding-standards.yaml @@ -50,12 +50,11 @@ jobs: - name: "Cache cache file for php-cs-fixer" uses: "actions/cache@v3" with: - path: ".php_cs.cache" - key: "composer-${{ matrix.php-version }}-${{ github.ref_name }}" + path: ".build/php-cs-fixer/" + key: "php-cs-fixer-${{ matrix.php-version }}-${{ github.ref_name }}" restore-keys: | - composer-${{ matrix.php-version }}-main - composer-${{ matrix.php-version }} - composer- + php-cs-fixer-${{ matrix.php-version }}-main + php-cs-fixer-${{ matrix.php-version }}- - name: "Run php-cs-fixer" run: | From 4560966002f0e2c1a98e16b6f0d23f76b90d09ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 09:54:49 +0200 Subject: [PATCH 170/229] Fix: Add parameter type declarations (#724) --- roave-bc-check.yaml | 18 ++++++++++++++++++ src/Faker/Calculator/Ean.php | 6 ++---- src/Faker/Calculator/Iban.php | 14 ++++---------- src/Faker/Calculator/Luhn.php | 16 ++++------------ 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 610c9e4e2f..9eb42b0e5b 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -5,12 +5,30 @@ parameters: - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-z_A-Z]+\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - '#\[BC\] CHANGED: The number of required arguments for Faker\\Container\\ContainerBuilder\#add\(\) increased from 1 to 2#' + - '#\[BC\] CHANGED: The parameter \$char of Faker\\Calculator\\Iban::alphaToNumber\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$char of Faker\\Calculator\\Iban::alphaToNumber\(\) changed from no type to string#' - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to a non-contravariant Faker\\Container\\ContainerInterface\|null#' - '#\[BC\] CHANGED: The parameter \$container of Faker\\Generator\#\_\_construct\(\) changed from Psr\\Container\\ContainerInterface\|null to Faker\\Container\\ContainerInterface\|null#' + - '#\[BC\] CHANGED: The parameter \$digits of Faker\\Calculator\\Ean::checksum\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$digits of Faker\\Calculator\\Ean::checksum\(\) changed from no type to string#' + - '#\[BC\] CHANGED: The parameter \$ean of Faker\\Calculator\\Ean::isValid\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$ean of Faker\\Calculator\\Ean::isValid\(\) changed from no type to string#' - '#\[BC\] CHANGED: The parameter \$generator of Faker\\UniqueGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' - '#\[BC\] CHANGED: The parameter \$generator of Faker\\ValidGenerator\#\_\_construct\(\) changed from Faker\\Generator to no type#' + - '#\[BC\] CHANGED: The parameter \$iban of Faker\\Calculator\\Iban::checksum\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$iban of Faker\\Calculator\\Iban::checksum\(\) changed from no type to string#' + - '#\[BC\] CHANGED: The parameter \$iban of Faker\\Calculator\\Iban::isValid\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$iban of Faker\\Calculator\\Iban::isValid\(\) changed from no type to string#' - '#\[BC\] CHANGED: The parameter \$max of Faker\\Extension\\NumberExtension\#randomFloat\(\) changed from float to float\|null#' - '#\[BC\] CHANGED: The parameter \$name of Faker\\Container\\ContainerBuilder\#add\(\) changed from string\|null to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$number of Faker\\Calculator\\Iban::mod97\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$number of Faker\\Calculator\\Iban::mod97\(\) changed from no type to string#' + - '#\[BC\] CHANGED: The parameter \$number of Faker\\Calculator\\Luhn::isValid\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$number of Faker\\Calculator\\Luhn::isValid\(\) changed from no type to string#' + - '#\[BC\] CHANGED: The parameter \$partialNumber of Faker\\Calculator\\Luhn::computeCheckDigit\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$partialNumber of Faker\\Calculator\\Luhn::computeCheckDigit\(\) changed from no type to string#' + - '#\[BC\] CHANGED: The parameter \$partialValue of Faker\\Calculator\\Luhn::generateLuhnNumber\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The parameter \$partialValue of Faker\\Calculator\\Luhn::generateLuhnNumber\(\) changed from no type to string#' - '#\[BC\] CHANGED: The parameter \$value of Faker\\Container\\ContainerBuilder\#add\(\) changed from no type to a non-contravariant string#' - '#\[BC\] CHANGED: The return type of Faker\\Extension\\PersonExtension\#name\(\) changed from no type to string#' - '#\[BC\] CHANGED: Type documentation for property Faker\\Provider\\en_ZA\\Internet::\$tld changed from having no type to array#' diff --git a/src/Faker/Calculator/Ean.php b/src/Faker/Calculator/Ean.php index 9c3daf1757..fbf11fcdad 100644 --- a/src/Faker/Calculator/Ean.php +++ b/src/Faker/Calculator/Ean.php @@ -17,11 +17,9 @@ class Ean * * @see https://en.wikipedia.org/wiki/International_Article_Number * - * @param string $digits - * * @return int */ - public static function checksum($digits) + public static function checksum(string $digits) { $sequence = (strlen($digits) + 1) === 8 ? [3, 1] : [1, 3]; $sums = 0; @@ -41,7 +39,7 @@ public static function checksum($digits) * * @return bool */ - public static function isValid($ean) + public static function isValid(string $ean) { if (!preg_match(self::PATTERN, $ean)) { return false; diff --git a/src/Faker/Calculator/Iban.php b/src/Faker/Calculator/Iban.php index b00b18f010..19068fd775 100644 --- a/src/Faker/Calculator/Iban.php +++ b/src/Faker/Calculator/Iban.php @@ -7,11 +7,9 @@ class Iban /** * Generates IBAN Checksum * - * @param string $iban - * * @return string Checksum (numeric string) */ - public static function checksum($iban) + public static function checksum(string $iban) { // Move first four digits to end and set checksum to '00' $checkString = substr($iban, 4) . substr($iban, 0, 2) . '00'; @@ -34,11 +32,9 @@ static function (array $matches): string { /** * Converts letter to number * - * @param string $char - * * @return int */ - public static function alphaToNumber($char) + public static function alphaToNumber(string $char) { return ord($char) - 55; } @@ -50,7 +46,7 @@ public static function alphaToNumber($char) * * @return int */ - public static function mod97($number) + public static function mod97(string $number) { $checksum = (int) $number[0]; @@ -64,11 +60,9 @@ public static function mod97($number) /** * Checks whether an IBAN has a valid checksum * - * @param string $iban - * * @return bool */ - public static function isValid($iban) + public static function isValid(string $iban) { return self::checksum($iban) === substr($iban, 2, 2); } diff --git a/src/Faker/Calculator/Luhn.php b/src/Faker/Calculator/Luhn.php index 0327668e53..4c1e6f5054 100644 --- a/src/Faker/Calculator/Luhn.php +++ b/src/Faker/Calculator/Luhn.php @@ -13,11 +13,9 @@ class Luhn { /** - * @param string $number - * * @return int */ - private static function checksum($number) + private static function checksum(string $number) { $number = (string) $number; $length = strlen($number); @@ -35,11 +33,9 @@ private static function checksum($number) } /** - * @param string $partialNumber - * * @return string */ - public static function computeCheckDigit($partialNumber) + public static function computeCheckDigit(string $partialNumber) { $checkDigit = self::checksum($partialNumber . '0'); @@ -53,11 +49,9 @@ public static function computeCheckDigit($partialNumber) /** * Checks whether a number (partial number + check digit) is Luhn compliant * - * @param string $number - * * @return bool */ - public static function isValid($number) + public static function isValid(string $number) { return self::checksum($number) === 0; } @@ -65,11 +59,9 @@ public static function isValid($number) /** * Generate a Luhn compliant number. * - * @param string $partialValue - * * @return string */ - public static function generateLuhnNumber($partialValue) + public static function generateLuhnNumber(string $partialValue) { if (!preg_match('/^\d+$/', $partialValue)) { throw new \InvalidArgumentException('Argument should be an integer.'); From 75318aa85940eda39f5672fe9460115f7ee30d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 09:55:44 +0200 Subject: [PATCH 171/229] Fix: Add tests for Container (#727) --- test/Faker/Extension/ContainerTest.php | 56 +++++++++++++++++++ .../Container/UnconstructableClass.php | 15 +++++ 2 files changed, 71 insertions(+) create mode 100644 test/Fixture/Container/UnconstructableClass.php diff --git a/test/Faker/Extension/ContainerTest.php b/test/Faker/Extension/ContainerTest.php index a4ed7b233f..3a6932905b 100644 --- a/test/Faker/Extension/ContainerTest.php +++ b/test/Faker/Extension/ContainerTest.php @@ -5,8 +5,10 @@ namespace Faker\Test\Extension; use Faker\Container\Container; +use Faker\Container\ContainerException; use Faker\Core\File; use Faker\Extension\Extension; +use Faker\Test; use PHPUnit\Framework\TestCase; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; @@ -16,6 +18,15 @@ */ final class ContainerTest extends TestCase { + public function testHasThrowsInvalidArgumentExceptionWhenIdentifierIsNotAString(): void + { + $container = new Container([]); + + $this->expectException(\InvalidArgumentException::class); + + $container->has(false); + } + public function testHasReturnsFalseWhenContainerDoesNotHaveDefinitionForService(): void { $container = new Container([]); @@ -23,6 +34,15 @@ public function testHasReturnsFalseWhenContainerDoesNotHaveDefinitionForService( self::assertFalse($container->has('foo')); } + public function testGetThrowsInvalidArgumentExceptionWhenIdentifierIsNotAString(): void + { + $container = new Container([]); + + $this->expectException(\InvalidArgumentException::class); + + $container->get(false); + } + public function testGetThrowsNotFoundExceptionWhenContainerDoesNotHaveDefinitionForService(): void { $container = new Container([]); @@ -43,6 +63,42 @@ public function testGetFromString(): void self::assertInstanceOf(File::class, $object); } + public function testGetThrowsRuntimeExceptionWhenServiceCouldNotBeResolvedFromCallable(): void + { + $id = 'foo'; + + $container = new Container([ + $id => static function (): void { + throw new \RuntimeException(); + }, + ]); + + $this->expectException(ContainerException::class); + $this->expectExceptionMessage(sprintf( + 'Error while invoking callable for "%s"', + $id, + )); + + $container->get($id); + } + + public function testGetThrowsRuntimeExceptionWhenServiceCouldNotBeResolvedFromClass(): void + { + $id = 'foo'; + + $container = new Container([ + $id => Test\Fixture\Container\UnconstructableClass::class, + ]); + + $this->expectException(ContainerException::class); + $this->expectExceptionMessage(sprintf( + 'Could not instantiate class "%s"', + $id, + )); + + $container->get($id); + } + /** * @dataProvider provideDefinitionThatDoesNotResolveToExtension */ diff --git a/test/Fixture/Container/UnconstructableClass.php b/test/Fixture/Container/UnconstructableClass.php new file mode 100644 index 0000000000..6fcb403b11 --- /dev/null +++ b/test/Fixture/Container/UnconstructableClass.php @@ -0,0 +1,15 @@ + Date: Tue, 5 Sep 2023 09:58:35 +0200 Subject: [PATCH 172/229] Fix: Simplify (#720) --- src/Faker/Container/ContainerBuilder.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 8b2223d522..bc3b17a06a 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -61,12 +61,6 @@ public static function defaultExtensions(): array public static function getDefault(): ContainerInterface { - $instance = new self(); - - foreach (self::defaultExtensions() as $id => $definition) { - $instance->add($id, $definition); - } - - return $instance->build(); + return new Container(self::defaultExtensions()); } } From 6acdd53b907feef1becace0f8558f68ce2d5862d Mon Sep 17 00:00:00 2001 From: scybulski Date: Tue, 5 Sep 2023 13:57:31 +0200 Subject: [PATCH 173/229] updated polish license plates (#685) --- src/Faker/Provider/pl_PL/LicensePlate.php | 103 +++++++++--------- .../Faker/Provider/pl_PL/LicensePlateTest.php | 8 +- 2 files changed, 57 insertions(+), 54 deletions(-) diff --git a/src/Faker/Provider/pl_PL/LicensePlate.php b/src/Faker/Provider/pl_PL/LicensePlate.php index d59c93dec4..59e100eb4c 100644 --- a/src/Faker/Provider/pl_PL/LicensePlate.php +++ b/src/Faker/Provider/pl_PL/LicensePlate.php @@ -6,7 +6,7 @@ /** * Generator of Polish vehicle registration numbers. - * {@link} http://prawo.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20170002355 + * {@link} https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=WDU20220001847 * {@link} https://pl.wikipedia.org/wiki/Tablice_rejestracyjne_w_Polsce#Tablice_standardowe */ class LicensePlate extends Base @@ -15,37 +15,37 @@ class LicensePlate extends Base * @var array list of Polish voivodeships and respective vehicle registration number prefixes. */ protected static $voivodeships = [ - 'dolnośląskie' => 'D', - 'kujawsko-pomorskie' => 'C', - 'lubelskie' => 'L', - 'lubuskie' => 'F', - 'łódzkie' => 'E', - 'małopolskie' => 'K', - 'mazowieckie' => 'W', - 'opolskie' => 'O', - 'podkarpackie' => 'R', - 'podlaskie' => 'B', - 'pomorskie' => 'G', - 'śląskie' => 'S', - 'świętokrzyskie' => 'T', - 'warmińsko-mazurskie' => 'N', - 'wielkopolskie' => 'P', - 'zachodniopomorskie' => 'Z', + 'dolnośląskie' => ['D', 'V'], + 'kujawsko-pomorskie' => ['C'], + 'lubelskie' => ['L'], + 'lubuskie' => ['F'], + 'łódzkie' => ['E'], + 'małopolskie' => ['K', 'J'], + 'mazowieckie' => ['W', 'A'], + 'opolskie' => ['O'], + 'podkarpackie' => ['R', 'Y'], + 'podlaskie' => ['B'], + 'pomorskie' => ['G', 'X'], + 'śląskie' => ['S', 'I'], + 'świętokrzyskie' => ['T'], + 'warmińsko-mazurskie' => ['N'], + 'wielkopolskie' => ['P', 'M'], + 'zachodniopomorskie' => ['Z'], ]; /** * @var array list of special vehicle registration number prefixes. */ protected static $specials = [ - 'army' => 'U', - 'services' => 'H', + 'army' => ['U'], + 'services' => ['H'], ]; /** * @var array list of Polish counties and respective vehicle registration number prefixes. */ protected static $counties = [ - 'D' => [ + 'dolnośląskie' => [ 'Jelenia Góra' => ['J'], 'Legnica' => ['L'], 'Wałbrzych' => ['B'], @@ -77,7 +77,7 @@ class LicensePlate extends Base 'zgorzelecki' => ['ZG'], 'złotoryjski' => ['ZL'], ], - 'C' => [ + 'kujawsko-pomorskie' => [ 'Bydgoszcz' => ['B'], 'Grudziądz' => ['G'], 'Toruń' => ['T'], @@ -102,7 +102,7 @@ class LicensePlate extends Base 'włocławski' => ['WL'], 'żniński' => ['ZN'], ], - 'L' => [ + 'lubelskie' => [ 'Biała Podlaska' => ['B'], 'Chełm' => ['C'], 'Lublin' => ['U'], @@ -128,7 +128,7 @@ class LicensePlate extends Base 'włodawski' => ['WL'], 'zamojski' => ['ZA'], ], - 'F' => [ + 'lubuskie' => [ 'Gorzów Wielkopolski' => ['G'], 'Zielona Góra' => ['Z'], 'gorzowski' => ['GW'], @@ -144,8 +144,8 @@ class LicensePlate extends Base 'żagański' => ['ZG'], 'żarski' => ['ZA'], ], - 'E' => [ - 'Łódź' => ['L'], + 'łódzkie' => [ + 'Łódź' => ['L', 'D'], 'Piotrków Trybunalski' => ['P'], 'Skierniewice' => ['S'], 'brzeziński' => ['BR'], @@ -170,8 +170,8 @@ class LicensePlate extends Base 'zduńskowolski' => ['ZD'], 'zgierski' => ['ZG'], ], - 'K' => [ - 'Kraków' => ['R'], + 'małopolskie' => [ + 'Kraków' => ['R', 'K'], 'Nowy Sącz' => ['N'], 'Tarnów' => ['T'], 'bocheński' => ['BA', 'BC'], @@ -179,7 +179,7 @@ class LicensePlate extends Base 'chrzanowski' => ['CH'], 'dąbrowski' => ['DA'], 'gorlicki' => ['GR'], - 'krakowski' => ['RA'], + 'krakowski' => ['RA', 'RK'], 'limanowski' => ['LI'], 'miechowski' => ['MI'], 'myślenicki' => ['MY'], @@ -194,7 +194,7 @@ class LicensePlate extends Base 'wadowicki' => ['WA'], 'wielicki' => ['WI'], ], - 'W' => [ + 'mazowieckie' => [ 'Ostrołęka' => ['O'], 'Płock' => ['P'], 'Radom' => ['R'], @@ -216,7 +216,7 @@ class LicensePlate extends Base 'ostrołęcki' => ['OS'], 'ostrowski' => ['OR'], 'otwocki' => ['OT'], - 'piaseczyński' => ['PA', 'PI'], + 'piaseczyński' => ['PA', 'PI', 'PW', 'PX'], 'płocki' => ['PL'], 'płoński' => ['PN'], 'pruszkowski' => ['PP', 'PR', 'PS'], @@ -238,7 +238,7 @@ class LicensePlate extends Base 'żuromiński' => ['ZU'], 'żyrardowski' => ['ZY'], ], - 'O' => [ + 'opolskie' => [ 'Opole' => ['P'], 'brzeski' => ['B'], 'głubczycki' => ['GL'], @@ -252,7 +252,7 @@ class LicensePlate extends Base 'prudnicki' => ['PR'], 'strzelecki' => ['ST'], ], - 'R' => [ + 'podkarpackie' => [ 'Krosno' => ['K'], 'Przemyśl' => ['P'], 'Rzeszów' => ['Z'], @@ -273,18 +273,18 @@ class LicensePlate extends Base 'przemyski' => ['PR'], 'przeworski' => ['PZ'], 'ropczycko-sędziszowski' => ['RS'], - 'rzeszowski' => ['ZE'], + 'rzeszowski' => ['ZE', 'ZR', 'ZZ'], 'sanocki' => ['SA'], 'stalowowolski' => ['ST'], 'strzyżowski' => ['SR'], 'tarnobrzeski' => ['TA'], ], - 'B' => [ + 'podlaskie' => [ 'Białystok' => ['I'], 'Łomża' => ['L'], 'Suwałki' => ['S'], 'augustowski' => ['AU'], - 'białostocki' => ['IA'], + 'białostocki' => ['IA', 'IB'], 'bielski' => ['BI'], 'grajewski' => ['GR'], 'hajnowski' => ['HA'], @@ -298,7 +298,7 @@ class LicensePlate extends Base 'wysokomazowiecki' => ['WM'], 'zambrowski' => ['ZA'], ], - 'G' => [ + 'pomorskie' => [ 'Gdańsk' => ['D'], 'Gdynia' => ['A'], 'Słupsk' => ['S'], @@ -307,7 +307,7 @@ class LicensePlate extends Base 'chojnicki' => ['CH'], 'człuchowski' => ['CZ'], 'gdański' => ['DA'], - 'kartuski' => ['KY', 'KA'], + 'kartuski' => ['KA', 'KY', 'KZ'], 'kościerski' => ['KS'], 'kwidzyński' => ['KW'], 'lęborski' => ['LE'], @@ -320,7 +320,7 @@ class LicensePlate extends Base 'tczewski' => ['TC'], 'wejherowski' => ['WE', 'WO'], ], - 'S' => [ + 'śląskie' => [ 'Bielsko-Biała' => ['B'], 'Bytom' => ['Y'], 'Chorzów' => ['H'], @@ -340,9 +340,9 @@ class LicensePlate extends Base 'Tychy' => ['T'], 'Zabrze' => ['Z'], 'Żory' => ['ZO'], - 'będziński' => ['BE'], + 'będziński' => ['BE', 'BN', 'E'], 'bielski' => ['BI'], - 'cieszyński' => ['CN', 'CI'], + 'cieszyński' => ['CI', 'CN'], 'częstochowski' => ['CZ'], 'gliwicki' => ['GL'], 'kłobucki' => ['KL'], @@ -358,7 +358,7 @@ class LicensePlate extends Base 'zawierciański' => ['ZA'], 'żywiecki' => ['ZY'], ], - 'T' => [ + 'świętokrzyskie' => [ 'Kielce' => ['K'], 'buski' => ['BU'], 'jędrzejowski' => ['JE'], @@ -374,7 +374,7 @@ class LicensePlate extends Base 'staszowski' => ['SZ'], 'włoszczowski' => ['LW'], ], - 'N' => [ + 'warmińsko-mazurskie' => [ 'Elbląg' => ['E'], 'Olsztyn' => ['O'], 'bartoszycki' => ['BA'], @@ -397,7 +397,7 @@ class LicensePlate extends Base 'szczycieński' => ['SZ'], 'węgorzewski' => ['WE'], ], - 'P' => [ + 'wielkopolskie' => [ 'Kalisz' => ['A', 'K'], 'Konin' => ['KO', 'N'], 'Leszno' => ['L'], @@ -434,7 +434,7 @@ class LicensePlate extends Base 'wrzesiński' => ['WR'], 'złotowski' => ['ZL'], ], - 'Z' => [ + 'zachodniopomorskie' => [ 'Koszalin' => ['K'], 'Szczecin' => ['S', 'Z'], 'Świnoujście' => ['SW'], @@ -457,10 +457,10 @@ class LicensePlate extends Base 'świdwiński' => ['SD'], 'wałecki' => ['WA'], ], - 'U' => [ + 'army' => [ 'Siły Zbrojne Rzeczypospolitej Polskiej' => ['A', 'B', 'C', 'D', 'E', 'G', 'I', 'J', 'K', 'L'], ], - 'H' => [ + 'services' => [ 'Centralne Biuro Antykorupcyjne' => ['A'], 'Służba Ochrony Państwa' => ['BA', 'BB', 'BE', 'BF', 'BG'], 'Służba Celno-Skarbowa' => ['CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'CG', 'CH', 'CJ', 'CK', 'CL', 'CM', 'CN', 'CO', 'CP', 'CR'], @@ -514,12 +514,13 @@ public static function licensePlate( ?array $counties = null ): string { $voivodeshipsAvailable = static::$voivodeships + ($special ? static::$specials : []); - $voivodeshipCode = static::selectRandomArea($voivodeshipsAvailable, $voivodeships); + $voivodeshipSelected = static::selectRandomArea($voivodeshipsAvailable, $voivodeships); + $voivodeshipCode = static::randomElement($voivodeshipsAvailable[$voivodeshipSelected]); - $countiesAvailable = static::$counties[$voivodeshipCode]; + $countiesAvailable = static::$counties[$voivodeshipSelected]; $countySelected = self::selectRandomArea($countiesAvailable, $counties); - $countyCode = static::randomElement($countySelected); + $countyCode = static::randomElement(static::$counties[$voivodeshipSelected][$countySelected]); $suffix = static::regexify(static::randomElement(strlen($countyCode) === 1 ? static::$plateSuffixesGroup1 : static::$plateSuffixesGroup2)); @@ -528,6 +529,8 @@ public static function licensePlate( /** * Selects random area from the list of available and requested. + * + * @return string */ protected static function selectRandomArea(array $available, ?array $requested) { @@ -537,6 +540,6 @@ protected static function selectRandomArea(array $available, ?array $requested) $requested = array_keys($available); } - return $available[static::randomElement($requested)]; + return static::randomElement($requested); } } diff --git a/test/Faker/Provider/pl_PL/LicensePlateTest.php b/test/Faker/Provider/pl_PL/LicensePlateTest.php index 8abe4d4c7a..cecbfc16fa 100644 --- a/test/Faker/Provider/pl_PL/LicensePlateTest.php +++ b/test/Faker/Provider/pl_PL/LicensePlateTest.php @@ -64,7 +64,7 @@ public function testPodkarpackieLicensePlate(): void ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); - self::assertMatchesRegularExpression('/^(?:R[A-PR-Z] [A-PR-Z\d]{5}|R[A-PR-Z]{2} [A-PR-Z\d]{4,5})$/', $licensePlate); + self::assertMatchesRegularExpression('/^(?:[RY][A-PR-Z] [A-PR-Z\d]{5}|[RY][A-PR-Z]{2} [A-PR-Z\d]{4,5})$/', $licensePlate); } } @@ -162,7 +162,7 @@ public function testVoivodeshipCountyLicensePlate(): void ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); - self::assertMatchesRegularExpression('/^(?:WZ [A-PR-Z\d]{5}|(?:WRA|HWA|HWK) [A-PR-Z\d]{4,5})$/', $licensePlate); + self::assertMatchesRegularExpression('/^(?:[AW]Z [A-PR-Z\d]{5}|(?:[AW]RA|HWA|HWK) [A-PR-Z\d]{4,5})$/', $licensePlate); } } @@ -179,7 +179,7 @@ public function testVoivodeshipFakeCountyLicensePlate(): void ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); - self::assertMatchesRegularExpression('/^(?:[WH][A-PR-Z] [A-PR-Z\d]{5}|[WH][A-PR-Z]{2} [A-PR-Z\d]{4,5})$/', $licensePlate); + self::assertMatchesRegularExpression('/^(?:[AWH][A-PR-Z] [A-PR-Z\d]{5}|[AWH][A-PR-Z]{2} [A-PR-Z\d]{4,5})$/', $licensePlate); } } @@ -247,7 +247,7 @@ public function testVoivodeship1stArgumentFalse(): void ); self::assertNotEmpty($licensePlate); self::assertIsString($licensePlate); - self::assertMatchesRegularExpression('/^(?:W[A-PR-Z] [A-PR-Z\d]{5}|W[A-PR-Z]{2} [A-PR-Z\d]{4,5})$/', $licensePlate); + self::assertMatchesRegularExpression('/^(?:[AW][A-PR-Z] [A-PR-Z\d]{5}|[AW][A-PR-Z]{2} [A-PR-Z\d]{4,5})$/', $licensePlate); } } From 8836f79b80550e04ddabd9a452a789396b3cc88e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 15:53:11 +0200 Subject: [PATCH 174/229] Fix: Update CHANGELOG.md (#734) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0900d4798e..8735e63d36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.23.0...main) +- Fixed polish license plates (#685) + ## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) - Update `randomElements` to return random number of elements when no count is provided (#658) From 976c9df676ac50a3cc4f3930d34094770292b099 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 15:55:17 +0200 Subject: [PATCH 175/229] Fix: Avoid useless tests for ContainerBuilder (#730) --- test/Faker/Extension/ContainerBuilderTest.php | 64 +++++++++++++------ 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index a86d81cde7..c5694aa69c 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -5,8 +5,9 @@ namespace Faker\Test\Extension; use Faker\Container\ContainerBuilder; -use Faker\Container\ContainerInterface; use Faker\Core\File; +use Faker\Core\Number; +use Faker\Extension; use PHPUnit\Framework\TestCase; /** @@ -58,66 +59,89 @@ public function provideInvalidValue(): \Generator } } - public function testBuildEmpty(): void + public function testBuildReturnsContainerWhenContainerBuilderDoesNotHaveDefinitions(): void { $builder = new ContainerBuilder(); $container = $builder->build(); - self::assertInstanceOf(ContainerInterface::class, $container); + self::assertFalse($container->has('foo')); } - public function testBuild(): void + public function testBuildReturnsContainerWhenContainerBuilderHasDefinitions(): void { + $id = 'foo'; + $definition = File::class; + $builder = new ContainerBuilder(); - $builder->add('foo', File::class); + $builder->add($id, $definition); $container = $builder->build(); - self::assertInstanceOf(ContainerInterface::class, $container); + self::assertTrue($container->has($id)); + self::assertInstanceOf($definition, $container->get($id)); } - public function testBuildWithDuplicates(): void + public function testBuildReturnsContainerWhenContainerBuilderHasOverriddenDefinitions(): void { + $id = 'foo'; + $definition = Number::class; + $builder = new ContainerBuilder(); - $builder->add('foo', File::class); - $builder->add('foo', File::class); + $builder->add($id, File::class); + $builder->add($id, $definition); $container = $builder->build(); - self::assertInstanceOf(ContainerInterface::class, $container); + self::assertTrue($container->has($id)); + self::assertInstanceOf($definition, $container->get($id)); } - public function testBuildWithObject(): void + public function testBuildReturnsContainerWhenContainerBuilderHasObjectAsDefinition(): void { + $id = 'foo'; + $definition = new File(); + $builder = new ContainerBuilder(); - $builder->add('foo', new File()); + $builder->add($id, $definition); $container = $builder->build(); - self::assertInstanceOf(ContainerInterface::class, $container); + self::assertTrue($container->has($id)); + self::assertSame($definition, $container->get($id)); } - public function testBuildWithCallable(): void + public function testBuildReturnsContainerWhenContainerBuilderHasCallableAsDefinition(): void { + $id = 'foo'; + $definition = static function (): File { + return new File(); + }; + $builder = new ContainerBuilder(); - $builder->add('foo', static function () { - return new File(); - }); + $builder->add($id, $definition); $container = $builder->build(); - self::assertInstanceOf(ContainerInterface::class, $container); + self::assertTrue($container->has($id)); + self::assertEquals($definition(), $container->get($id)); } - public function testBuildDefault(): void + public function testGetDefaultReturnsContainerWithDefaultExtensions(): void { $container = ContainerBuilder::getDefault(); - self::assertInstanceOf(ContainerInterface::class, $container); + self::assertTrue($container->has(Extension\BarcodeExtension::class)); + self::assertTrue($container->has(Extension\BloodExtension::class)); + self::assertTrue($container->has(Extension\ColorExtension::class)); + self::assertTrue($container->has(Extension\DateTimeExtension::class)); + self::assertTrue($container->has(Extension\FileExtension::class)); + self::assertTrue($container->has(Extension\NumberExtension::class)); + self::assertTrue($container->has(Extension\UuidExtension::class)); + self::assertTrue($container->has(Extension\VersionExtension::class)); } } From 81dcd6fffb0872a1e92f47d063f446da47b791c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 15:55:46 +0200 Subject: [PATCH 176/229] Fix: Rename parameter (#731) --- src/Faker/Container/ContainerBuilder.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index bc3b17a06a..b500f323f9 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -18,20 +18,20 @@ final class ContainerBuilder private array $definitions = []; /** - * @param callable|object|string $value + * @param callable|object|string $definition * * @throws \InvalidArgumentException */ - public function add(string $id, $value): self + public function add(string $id, $definition): self { - if (!is_string($value) && !is_callable($value) && !is_object($value)) { + if (!is_string($definition) && !is_callable($definition) && !is_object($definition)) { throw new \InvalidArgumentException(sprintf( 'First argument to "%s::add()" must be a string, callable or object.', self::class, )); } - $this->definitions[$id] = $value; + $this->definitions[$id] = $definition; return $this; } From 5e64137248b986874a35b8838e7cf8ed0d9fd532 Mon Sep 17 00:00:00 2001 From: Bram Date: Tue, 5 Sep 2023 15:42:09 +0100 Subject: [PATCH 177/229] Add changelog mention in review checklist (#735) --- .github/PULL_REQUEST_TEMPLATE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c2297d8890..a87db47af4 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -17,4 +17,5 @@ ### Review checklist - [ ] All checks have passed +- [ ] Changes are added to the `CHANGELOG.md` - [ ] Changes are approved by maintainer From bf42220e7605e740f3ccc49e1805319c5c59cee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 16:42:30 +0200 Subject: [PATCH 178/229] Enhancement: Allow creating ContainerBuilder with definitions for default extensions (#732) --- src/Faker/Container/ContainerBuilder.php | 13 ++++++++++++- src/Faker/Generator.php | 2 +- test/Faker/Extension/ContainerBuilderTest.php | 6 ++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index b500f323f9..447af2e99e 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -59,8 +59,19 @@ public static function defaultExtensions(): array ]; } + public static function withDefaultExtensions(): self + { + $instance = new self(); + + foreach (self::defaultExtensions() as $id => $definition) { + $instance->add($id, $definition); + } + + return $instance; + } + public static function getDefault(): ContainerInterface { - return new Container(self::defaultExtensions()); + return self::withDefaultExtensions()->build(); } } diff --git a/src/Faker/Generator.php b/src/Faker/Generator.php index 225e8e5313..ee58be35f4 100644 --- a/src/Faker/Generator.php +++ b/src/Faker/Generator.php @@ -567,7 +567,7 @@ class Generator public function __construct(ContainerInterface $container = null) { - $this->container = $container ?: Container\ContainerBuilder::getDefault(); + $this->container = $container ?: Container\ContainerBuilder::withDefaultExtensions()->build(); } /** diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Faker/Extension/ContainerBuilderTest.php index c5694aa69c..b6b9a22600 100644 --- a/test/Faker/Extension/ContainerBuilderTest.php +++ b/test/Faker/Extension/ContainerBuilderTest.php @@ -131,9 +131,11 @@ public function testBuildReturnsContainerWhenContainerBuilderHasCallableAsDefini self::assertEquals($definition(), $container->get($id)); } - public function testGetDefaultReturnsContainerWithDefaultExtensions(): void + public function testWithDefaultExtensionsReturnsContainerBuilderWithDefaultExtensions(): void { - $container = ContainerBuilder::getDefault(); + $builder = ContainerBuilder::withDefaultExtensions(); + + $container = $builder->build(); self::assertTrue($container->has(Extension\BarcodeExtension::class)); self::assertTrue($container->has(Extension\BloodExtension::class)); From 0f704c84792b1c57243dad7b0e5feaaf31600ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 19:46:02 +0200 Subject: [PATCH 179/229] Fix: Reduce visibility (#719) --- roave-bc-check.yaml | 2 ++ src/Faker/Container/ContainerBuilder.php | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 9eb42b0e5b..f7e2d1409d 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -1,6 +1,7 @@ parameters: ignoreErrors: - '#\[BC\] CHANGED: Class Faker\\Core\\Coordinates became final#' + - '#\[BC\] CHANGED: Method defaultExtensions\(\) of class Faker\\Container\\ContainerBuilder visibility reduced from public to private#' - '#\[BC\] CHANGED: Property Faker\\Factory::\$defaultProviders changed default value#' - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-z_A-Z]+\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' - '#\[BC\] CHANGED: Property Faker\\Provider\\[a-zA-Z]+::\$[1-9a-zA-Z]+ changed default value#' @@ -37,6 +38,7 @@ parameters: - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' - '#\[BC\] REMOVED: Method Faker\\Container\\Container\#getDefinitions\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerBuilder\::defaultExtensions\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerInterface\#getDefinitions\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#getDefaultTimezone\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#getTimestamp\(\) was removed#' diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index 447af2e99e..d6f210799a 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -41,11 +41,7 @@ public function build(): ContainerInterface return new Container($this->definitions); } - /** - * Get an array with extension that represent the default English - * functionality. - */ - public static function defaultExtensions(): array + private static function defaultExtensions(): array { return [ Extension\BarcodeExtension::class => Core\Barcode::class, From 342bad9f1314084920b685ca4679f2104a853e34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 5 Sep 2023 20:13:44 +0200 Subject: [PATCH 180/229] Fix: Remove unused method (#736) --- roave-bc-check.yaml | 1 + src/Faker/Container/ContainerBuilder.php | 5 ----- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index f7e2d1409d..b3ff163801 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -38,6 +38,7 @@ parameters: - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' - '#\[BC\] REMOVED: Method Faker\\Container\\Container\#getDefinitions\(\) was removed#' + - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerBuilder::getDefault\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerBuilder\::defaultExtensions\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerInterface\#getDefinitions\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Core\\DateTime\#getDefaultTimezone\(\) was removed#' diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index d6f210799a..f2545e944b 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -65,9 +65,4 @@ public static function withDefaultExtensions(): self return $instance; } - - public static function getDefault(): ContainerInterface - { - return self::withDefaultExtensions()->build(); - } } From 2040bda6540c29e8989bce4729d05bdaffb4c729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 7 Sep 2023 14:17:07 +0200 Subject: [PATCH 181/229] Enhancement: Add SECURITY.md (#739) --- .github/SECURITY.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/SECURITY.md diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000000..9ef1120955 --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,17 @@ +# Security Policy + +## Supported Versions + +The following versions of `fakerphp/faker` have active support: + +- `^1.23.0` + +## Unsupported Versions + +The following versions of `fakerphp/faker` have reached their end of life: + +- `<1.23.0` + +## Reporting a Vulnerability + +If you believe that you have found a security vulnerability, please send an email to security@fakerphp.org. Ensure to include all details required to understand the severity of the issue. From e9e5bd8ba1b06488976060f01c5f0a5bb337eefd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 09:25:10 +0200 Subject: [PATCH 182/229] composer(deps): bump friendsofphp/php-cs-fixer (#749) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.25.1 to 3.26.1. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.25.1...v3.26.1) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 0ce16b6f26..38a90e02b3 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.25.1" + "friendsofphp/php-cs-fixer": "^3.26.1" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 8788bae2c2..e27e9744b3 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "7bbb231ca786bad9508912579f8f5346", + "content-hash": "8dbb00b6a8713ee8443f70c5d0e7560f", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.25.1", + "version": "v3.26.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "8e21d69801de6b5ecb0dbe0bcdf967b335b1260b" + "reference": "d023ba6684055f6ea1da1352d8a02baca0426983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8e21d69801de6b5ecb0dbe0bcdf967b335b1260b", - "reference": "8e21d69801de6b5ecb0dbe0bcdf967b335b1260b", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d023ba6684055f6ea1da1352d8a02baca0426983", + "reference": "d023ba6684055f6ea1da1352d8a02baca0426983", "shasum": "" }, "require": { @@ -309,7 +309,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.25.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.26.1" }, "funding": [ { @@ -317,7 +317,7 @@ "type": "github" } ], - "time": "2023-09-04T01:22:52+00:00" + "time": "2023-09-08T19:09:07+00:00" }, { "name": "psr/container", From 2c2882162a46bedefbe1577dd9b22d638edb1e81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 9 Sep 2023 09:25:35 +0200 Subject: [PATCH 183/229] composer(deps): bump rector/rector in /vendor-bin/rector (#750) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.18.1 to 0.18.2. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.18.1...0.18.2) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 18424d46ab..6b9436d914 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.18.1" + "rector/rector": "^0.18.2" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index acc90bec5c..7fdbcd3d4c 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "dd4072cf57d54447f34914509c1999ed", + "content-hash": "518d72be782388d63a443b7ac1199303", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.32", + "version": "1.10.33", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44" + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c47e47d3ab03137c0e121e77c4d2cb58672f6d44", - "reference": "c47e47d3ab03137c0e121e77c4d2cb58672f6d44", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", + "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", "shasum": "" }, "require": { @@ -66,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-08-24T21:54:50+00:00" + "time": "2023-09-04T12:20:53+00:00" }, { "name": "rector/rector", - "version": "0.18.1", + "version": "0.18.2", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "ee72ef542680a7f47ed8c6784f78b032c0d2f381" + "reference": "8606564b50ce70f99839d35c67f4536dc2ea090d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/ee72ef542680a7f47ed8c6784f78b032c0d2f381", - "reference": "ee72ef542680a7f47ed8c6784f78b032c0d2f381", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/8606564b50ce70f99839d35c67f4536dc2ea090d", + "reference": "8606564b50ce70f99839d35c67f4536dc2ea090d", "shasum": "" }, "require": { @@ -114,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.1" + "source": "https://github.com/rectorphp/rector/tree/0.18.2" }, "funding": [ { @@ -122,7 +122,7 @@ "type": "github" } ], - "time": "2023-08-28T18:01:58+00:00" + "time": "2023-09-06T08:50:38+00:00" } ], "packages-dev": [], From 51794a1064a8ae98d785c020d4ceed339fa95dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 14 Sep 2023 07:40:28 +0200 Subject: [PATCH 184/229] Enhancement: Use Helper to select random element instead of array_rand() (#754) --- src/Faker/Core/File.php | 6 +++--- src/Faker/ORM/CakePHP/EntityPopulator.php | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Faker/Core/File.php b/src/Faker/Core/File.php index 5151e900f3..766bcf0d63 100644 --- a/src/Faker/Core/File.php +++ b/src/Faker/Core/File.php @@ -547,14 +547,14 @@ final class File implements Extension\FileExtension public function mimeType(): string { - return array_rand($this->mimeTypes, 1); + return Extension\Helper::randomElement(array_keys($this->mimeTypes)); } public function extension(): string { - $extension = $this->mimeTypes[array_rand($this->mimeTypes, 1)]; + $extension = Extension\Helper::randomElement($this->mimeTypes); - return is_array($extension) ? $extension[array_rand($extension, 1)] : $extension; + return is_array($extension) ? Extension\Helper::randomElement($extension) : $extension; } public function filePath(): string diff --git a/src/Faker/ORM/CakePHP/EntityPopulator.php b/src/Faker/ORM/CakePHP/EntityPopulator.php index cd9890bd4d..196ca1529c 100644 --- a/src/Faker/ORM/CakePHP/EntityPopulator.php +++ b/src/Faker/ORM/CakePHP/EntityPopulator.php @@ -3,6 +3,7 @@ namespace Faker\ORM\CakePHP; use Cake\ORM\TableRegistry; +use Faker\Extension; class EntityPopulator { @@ -112,7 +113,7 @@ public function guessModifiers() throw new \Exception(sprintf('%s belongsTo %s, which seems empty at this point.', $this->getTable($this->class)->table(), $assoc->table())); } - $foreignKey = $foreignKeys[array_rand($foreignKeys)]; + $foreignKey = Extension\Helper::randomElement($foreignKeys); $data[$assoc->foreignKey()] = $foreignKey; return $data; From b399ff3b3fcae0a1a8d55941984004fd51b77853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 14 Sep 2023 10:24:00 +0200 Subject: [PATCH 185/229] Enhancement: Use Helper to determine largest random number (#756) --- src/Faker/Core/Number.php | 4 ++-- src/Faker/Extension/Helper.php | 7 ++++++- src/Faker/Provider/Base.php | 9 +++++---- src/Faker/Provider/Biased.php | 6 ++++-- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/Faker/Core/Number.php b/src/Faker/Core/Number.php index a16920c936..946e97d677 100644 --- a/src/Faker/Core/Number.php +++ b/src/Faker/Core/Number.php @@ -60,7 +60,7 @@ public function randomFloat(?int $nbMaxDecimals = null, float $min = 0, ?float $ $max = $tmp; } - return round($min + $this->numberBetween() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); + return round($min + $this->numberBetween() / Extension\Helper::largestRandomNumber() * ($max - $min), $nbMaxDecimals); } public function randomNumber(int $nbDigits = null, bool $strict = false): int @@ -70,7 +70,7 @@ public function randomNumber(int $nbDigits = null, bool $strict = false): int } $max = 10 ** $nbDigits - 1; - if ($max > mt_getrandmax()) { + if ($max > Extension\Helper::largestRandomNumber()) { throw new \InvalidArgumentException('randomNumber() can only generate numbers up to mt_getrandmax()'); } diff --git a/src/Faker/Extension/Helper.php b/src/Faker/Extension/Helper.php index 47200e90c6..ab17e545ee 100644 --- a/src/Faker/Extension/Helper.php +++ b/src/Faker/Extension/Helper.php @@ -21,6 +21,11 @@ public static function randomElement(array $array) return $array[array_rand($array, 1)]; } + public static function largestRandomNumber(): int + { + return mt_getrandmax(); + } + /** * Replaces all hash sign ('#') occurrences with a random number * Replaces all percentage sign ('%') occurrences with a non-zero number. @@ -42,7 +47,7 @@ public static function numerify(string $string): string } if ($nbReplacements = count($toReplace)) { - $maxAtOnce = strlen((string) mt_getrandmax()) - 1; + $maxAtOnce = strlen((string) self::largestRandomNumber()) - 1; $numbers = ''; $i = 0; diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index 6b9876bc1d..ae518ad40c 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -3,6 +3,7 @@ namespace Faker\Provider; use Faker\DefaultGenerator; +use Faker\Extension; use Faker\Generator; use Faker\UniqueGenerator; use Faker\ValidGenerator; @@ -85,7 +86,7 @@ public static function randomNumber($nbDigits = null, $strict = false) } $max = 10 ** $nbDigits - 1; - if ($max > mt_getrandmax()) { + if ($max > Extension\Helper::largestRandomNumber()) { throw new \InvalidArgumentException('randomNumber() can only generate numbers up to mt_getrandmax()'); } @@ -127,7 +128,7 @@ public static function randomFloat($nbMaxDecimals = null, $min = 0, $max = null) $max = $tmp; } - return round($min + mt_rand() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); + return round($min + mt_rand() / Extension\Helper::largestRandomNumber() * ($max - $min), $nbMaxDecimals); } /** @@ -449,7 +450,7 @@ public static function numerify($string = '###') } if ($nbReplacements = count($toReplace)) { - $maxAtOnce = strlen((string) mt_getrandmax()) - 1; + $maxAtOnce = strlen((string) Extension\Helper::largestRandomNumber()) - 1; $numbers = ''; $i = 0; @@ -642,7 +643,7 @@ public function optional($weight = 0.5, $default = null) { // old system based on 0.1 <= $weight <= 0.9 // TODO: remove in v2 - if ($weight > 0 && $weight < 1 && mt_rand() / mt_getrandmax() <= $weight) { + if ($weight > 0 && $weight < 1 && mt_rand() / Extension\Helper::largestRandomNumber() <= $weight) { return $this->generator; } diff --git a/src/Faker/Provider/Biased.php b/src/Faker/Provider/Biased.php index 42c70bcc9a..296bc4f661 100644 --- a/src/Faker/Provider/Biased.php +++ b/src/Faker/Provider/Biased.php @@ -2,6 +2,8 @@ namespace Faker\Provider; +use Faker\Extension; + class Biased extends Base { /** @@ -23,8 +25,8 @@ class Biased extends Base public function biasedNumberBetween($min = 0, $max = 100, $function = 'sqrt') { do { - $x = mt_rand() / mt_getrandmax(); - $y = mt_rand() / (mt_getrandmax() + 1); + $x = mt_rand() / Extension\Helper::largestRandomNumber(); + $y = mt_rand() / (Extension\Helper::largestRandomNumber() + 1); } while (call_user_func($function, $x) < $y); return (int) floor($x * ($max - $min + 1) + $min); From 6a17f464fbcd3a932e3ebba2cdb5587c2d8ab817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 14 Sep 2023 10:28:29 +0200 Subject: [PATCH 186/229] Enhancement: Use Helper to generate random number without arguments (#755) --- src/Faker/Extension/Helper.php | 5 +++++ src/Faker/ORM/Doctrine/EntityPopulator.php | 3 ++- src/Faker/Provider/Base.php | 4 ++-- src/Faker/Provider/Biased.php | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Faker/Extension/Helper.php b/src/Faker/Extension/Helper.php index ab17e545ee..08efe64eb6 100644 --- a/src/Faker/Extension/Helper.php +++ b/src/Faker/Extension/Helper.php @@ -21,6 +21,11 @@ public static function randomElement(array $array) return $array[array_rand($array, 1)]; } + public static function randomNumber(): int + { + return mt_rand(); + } + public static function largestRandomNumber(): int { return mt_getrandmax(); diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php index 4792399959..af8970e93b 100644 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ b/src/Faker/ORM/Doctrine/EntityPopulator.php @@ -4,6 +4,7 @@ use Doctrine\Common\Persistence\Mapping\ClassMetadata; use Doctrine\Common\Persistence\ObjectManager; +use Faker\Extension; require_once 'backward-compatibility.php'; @@ -240,7 +241,7 @@ private function generateId($obj, $column, ObjectManager $manager) $ids = array_map('current', $result->toArray()); do { - $id = mt_rand(); + $id = Extension\Helper::randomNumber(); } while (in_array($id, $ids, false)); return $id; diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index ae518ad40c..661205f67d 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -128,7 +128,7 @@ public static function randomFloat($nbMaxDecimals = null, $min = 0, $max = null) $max = $tmp; } - return round($min + mt_rand() / Extension\Helper::largestRandomNumber() * ($max - $min), $nbMaxDecimals); + return round($min + Extension\Helper::randomNumber() / Extension\Helper::largestRandomNumber() * ($max - $min), $nbMaxDecimals); } /** @@ -643,7 +643,7 @@ public function optional($weight = 0.5, $default = null) { // old system based on 0.1 <= $weight <= 0.9 // TODO: remove in v2 - if ($weight > 0 && $weight < 1 && mt_rand() / Extension\Helper::largestRandomNumber() <= $weight) { + if ($weight > 0 && $weight < 1 && Extension\Helper::randomNumber() / Extension\Helper::largestRandomNumber() <= $weight) { return $this->generator; } diff --git a/src/Faker/Provider/Biased.php b/src/Faker/Provider/Biased.php index 296bc4f661..b6f0f2fd10 100644 --- a/src/Faker/Provider/Biased.php +++ b/src/Faker/Provider/Biased.php @@ -25,8 +25,8 @@ class Biased extends Base public function biasedNumberBetween($min = 0, $max = 100, $function = 'sqrt') { do { - $x = mt_rand() / Extension\Helper::largestRandomNumber(); - $y = mt_rand() / (Extension\Helper::largestRandomNumber() + 1); + $x = Extension\Helper::randomNumber() / Extension\Helper::largestRandomNumber(); + $y = Extension\Helper::randomNumber() / (Extension\Helper::largestRandomNumber() + 1); } while (call_user_func($function, $x) < $y); return (int) floor($x * ($max - $min + 1) + $min); From 57e1f991fbd4add75384b24c1511b91efdc9e1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 14 Sep 2023 11:28:58 +0200 Subject: [PATCH 187/229] Enhancement: Use Helper to select random number between minimum and maximum (#757) --- src/Faker/ChanceGenerator.php | 6 ++---- src/Faker/Core/Number.php | 2 +- src/Faker/Extension/Helper.php | 13 +++++++++---- src/Faker/Provider/Base.php | 26 +++++++++++++------------- src/Faker/Provider/ar_EG/Person.php | 8 +++++--- 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/Faker/ChanceGenerator.php b/src/Faker/ChanceGenerator.php index 25aaa4c6e6..de4b004dd9 100644 --- a/src/Faker/ChanceGenerator.php +++ b/src/Faker/ChanceGenerator.php @@ -2,8 +2,6 @@ namespace Faker; -use Faker\Extension\Extension; - /** * This generator returns a default value for all called properties * and methods. It works with Faker\Generator::optional(). @@ -17,7 +15,7 @@ class ChanceGenerator protected $default; /** - * @param Extension|Generator $generator + * @param Extension\Extension|Generator $generator */ public function __construct($generator, float $weight, $default = null) { @@ -51,7 +49,7 @@ public function __get($attribute) */ public function __call($name, $arguments) { - if (mt_rand(1, 100) <= (100 * $this->weight)) { + if (Extension\Helper::randomNumberBetween(1, 100) <= (100 * $this->weight)) { return call_user_func_array([$this->generator, $name], $arguments); } diff --git a/src/Faker/Core/Number.php b/src/Faker/Core/Number.php index 946e97d677..ee7c96708b 100644 --- a/src/Faker/Core/Number.php +++ b/src/Faker/Core/Number.php @@ -16,7 +16,7 @@ public function numberBetween(int $min = 0, int $max = 2147483647): int $int1 = min($min, $max); $int2 = max($min, $max); - return mt_rand($int1, $int2); + return Extension\Helper::randomNumberBetween($int1, $int2); } public function randomDigit(): int diff --git a/src/Faker/Extension/Helper.php b/src/Faker/Extension/Helper.php index 08efe64eb6..d6da5c1835 100644 --- a/src/Faker/Extension/Helper.php +++ b/src/Faker/Extension/Helper.php @@ -26,6 +26,11 @@ public static function randomNumber(): int return mt_rand(); } + public static function randomNumberBetween(int $min, int $max): int + { + return mt_rand($min, $max); + } + public static function largestRandomNumber(): int { return mt_getrandmax(); @@ -58,7 +63,7 @@ public static function numerify(string $string): string while ($i < $nbReplacements) { $size = min($nbReplacements - $i, $maxAtOnce); - $numbers .= str_pad((string) mt_rand(0, 10 ** $size - 1), $size, '0', STR_PAD_LEFT); + $numbers .= str_pad((string) self::randomNumberBetween(0, 10 ** $size - 1), $size, '0', STR_PAD_LEFT); $i += $size; } @@ -68,7 +73,7 @@ public static function numerify(string $string): string } return self::replaceWildcard($string, '%', static function () { - return mt_rand(1, 9); + return self::randomNumberBetween(1, 9); }); } @@ -80,7 +85,7 @@ public static function numerify(string $string): string public static function lexify(string $string): string { return self::replaceWildcard($string, '?', static function () { - return chr(mt_rand(97, 122)); + return chr(self::randomNumberBetween(97, 122)); }); } @@ -93,7 +98,7 @@ public static function lexify(string $string): string public static function bothify(string $string): string { $string = self::replaceWildcard($string, '*', static function () { - return mt_rand(0, 1) === 1 ? '#' : '?'; + return self::randomNumberBetween(0, 1) === 1 ? '#' : '?'; }); return self::lexify(self::numerify($string)); diff --git a/src/Faker/Provider/Base.php b/src/Faker/Provider/Base.php index 661205f67d..19c396b291 100644 --- a/src/Faker/Provider/Base.php +++ b/src/Faker/Provider/Base.php @@ -32,7 +32,7 @@ public function __construct(Generator $generator) */ public static function randomDigit() { - return mt_rand(0, 9); + return Extension\Helper::randomNumberBetween(0, 9); } /** @@ -42,7 +42,7 @@ public static function randomDigit() */ public static function randomDigitNotNull() { - return mt_rand(1, 9); + return Extension\Helper::randomNumberBetween(1, 9); } /** @@ -91,10 +91,10 @@ public static function randomNumber($nbDigits = null, $strict = false) } if ($strict) { - return mt_rand(10 ** ($nbDigits - 1), $max); + return Extension\Helper::randomNumberBetween(10 ** ($nbDigits - 1), $max); } - return mt_rand(0, $max); + return Extension\Helper::randomNumberBetween(0, $max); } /** @@ -146,7 +146,7 @@ public static function numberBetween($int1 = 0, $int2 = 2147483647) $min = $int1 < $int2 ? $int1 : $int2; $max = $int1 < $int2 ? $int2 : $int1; - return mt_rand($min, $max); + return Extension\Helper::randomNumberBetween($min, $max); } /** @@ -164,7 +164,7 @@ public static function passthrough($value) */ public static function randomLetter() { - return chr(mt_rand(97, 122)); + return chr(Extension\Helper::randomNumberBetween(97, 122)); } /** @@ -174,7 +174,7 @@ public static function randomLetter() */ public static function randomAscii() { - return chr(mt_rand(33, 126)); + return chr(Extension\Helper::randomNumberBetween(33, 126)); } /** @@ -223,7 +223,7 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all } if (null === $count) { - $count = mt_rand(1, $numberOfElements); + $count = Extension\Helper::randomNumberBetween(1, $numberOfElements); } $randomElements = []; @@ -234,7 +234,7 @@ public static function randomElements($array = ['a', 'b', 'c'], $count = 1, $all $numberOfRandomElements = 0; while ($numberOfRandomElements < $count) { - $index = mt_rand(0, $maxIndex); + $index = Extension\Helper::randomNumberBetween(0, $maxIndex); if (!$allowDuplicates) { if (isset($elementHasBeenSelectedAlready[$index])) { @@ -305,7 +305,7 @@ public static function randomKey($array = []) } $keys = array_keys($array); - return $keys[mt_rand(0, count($keys) - 1)]; + return $keys[Extension\Helper::randomNumberBetween(0, count($keys) - 1)]; } /** @@ -362,7 +362,7 @@ public static function shuffleArray($array = []) if ($i == 0) { $j = 0; } else { - $j = mt_rand(0, $i); + $j = Extension\Helper::randomNumberBetween(0, $i); } if ($j == $i) { @@ -492,7 +492,7 @@ public static function lexify($string = '????') public static function bothify($string = '## ??') { $string = self::replaceWildcard($string, '*', static function () { - return mt_rand(0, 1) === 1 ? '#' : '?'; + return Extension\Helper::randomNumberBetween(0, 1) === 1 ? '#' : '?'; }); return static::lexify(static::numerify($string)); @@ -648,7 +648,7 @@ public function optional($weight = 0.5, $default = null) } // new system with percentage - if (is_int($weight) && mt_rand(1, 100) <= $weight) { + if (is_int($weight) && Extension\Helper::randomNumberBetween(1, 100) <= $weight) { return $this->generator; } diff --git a/src/Faker/Provider/ar_EG/Person.php b/src/Faker/Provider/ar_EG/Person.php index f6e0b15c14..f77113a275 100644 --- a/src/Faker/Provider/ar_EG/Person.php +++ b/src/Faker/Provider/ar_EG/Person.php @@ -2,6 +2,8 @@ namespace Faker\Provider\ar_EG; +use Faker\Extension; + class Person extends \Faker\Provider\Person { protected static $maleNameFormats = [ @@ -86,12 +88,12 @@ public static function prefix() */ public static function nationalIdNumber($gender = null) { - $randomBirthDateTimestamp = mt_rand(strtotime('1950-Jan-10'), strtotime('2005-Dec-25')); + $randomBirthDateTimestamp = Extension\Helper::randomNumberBetween(strtotime('1950-Jan-10'), strtotime('2005-Dec-25')); $centuryId = ((int) date('Y', $randomBirthDateTimestamp)) >= 2000 ? 3 : 2; $fullBirthDate = date('ymd', $randomBirthDateTimestamp); $governorateId = Address::governorateId(); - $birthRegistrationSequence = mt_rand(1, 500); + $birthRegistrationSequence = Extension\Helper::randomNumberBetween(1, 500); if ($gender === static::GENDER_MALE) { $birthRegistrationSequence = $birthRegistrationSequence | 1; // Convert to the nearest odd number @@ -100,7 +102,7 @@ public static function nationalIdNumber($gender = null) } $birthRegistrationSequence = str_pad((string) $birthRegistrationSequence, 4, '0', STR_PAD_LEFT); - $randomCheckDigit = mt_rand(1, 9); + $randomCheckDigit = Extension\Helper::randomNumberBetween(1, 9); return $centuryId . $fullBirthDate . $governorateId . $birthRegistrationSequence . $randomCheckDigit; } From e104d1b203c44485890570b18c4d7cbd0c5c714d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 22:31:17 +0200 Subject: [PATCH 188/229] composer(deps): bump friendsofphp/php-cs-fixer (#765) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.26.1 to 3.27.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.26.1...v3.27.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 38a90e02b3..d16d4c30cb 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.26.1" + "friendsofphp/php-cs-fixer": "^3.27.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index e27e9744b3..694dd9705c 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "8dbb00b6a8713ee8443f70c5d0e7560f", + "content-hash": "6e0313d2fb5468ec60eecd216d602fec", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.26.1", + "version": "v3.27.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983" + "reference": "e73ccaae1208f017bb7860986eebb3da48bd25d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d023ba6684055f6ea1da1352d8a02baca0426983", - "reference": "d023ba6684055f6ea1da1352d8a02baca0426983", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/e73ccaae1208f017bb7860986eebb3da48bd25d6", + "reference": "e73ccaae1208f017bb7860986eebb3da48bd25d6", "shasum": "" }, "require": { @@ -309,7 +309,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.26.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.27.0" }, "funding": [ { @@ -317,7 +317,7 @@ "type": "github" } ], - "time": "2023-09-08T19:09:07+00:00" + "time": "2023-09-17T14:37:54+00:00" }, { "name": "psr/container", From 111cdfdc80dc3e0346cf9369917c531dd7d097f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 17 Sep 2023 22:31:31 +0200 Subject: [PATCH 189/229] composer(deps): bump rector/rector in /vendor-bin/rector (#766) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.18.2 to 0.18.3. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.18.2...0.18.3) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 6b9436d914..61c2a0ec4b 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.18.2" + "rector/rector": "^0.18.3" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 7fdbcd3d4c..17a3723052 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "518d72be782388d63a443b7ac1199303", + "content-hash": "b0698e9822f0374d79d37bd009ca25d7", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.33", + "version": "1.10.34", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1" + "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", - "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7f806b6f1403e6914c778140e2ba07c293cb4901", + "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901", "shasum": "" }, "require": { @@ -66,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-09-04T12:20:53+00:00" + "time": "2023-09-13T09:49:47+00:00" }, { "name": "rector/rector", - "version": "0.18.2", + "version": "0.18.3", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "8606564b50ce70f99839d35c67f4536dc2ea090d" + "reference": "ba7988e3e028e68e07191d75b0d5473ac320c5e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/8606564b50ce70f99839d35c67f4536dc2ea090d", - "reference": "8606564b50ce70f99839d35c67f4536dc2ea090d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/ba7988e3e028e68e07191d75b0d5473ac320c5e7", + "reference": "ba7988e3e028e68e07191d75b0d5473ac320c5e7", "shasum": "" }, "require": { @@ -114,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.2" + "source": "https://github.com/rectorphp/rector/tree/0.18.3" }, "funding": [ { @@ -122,7 +122,7 @@ "type": "github" } ], - "time": "2023-09-06T08:50:38+00:00" + "time": "2023-09-12T20:18:14+00:00" } ], "packages-dev": [], From e3ccef748e47811eca7ce7cf3350482088e659a9 Mon Sep 17 00:00:00 2001 From: Pim Jansen Date: Sun, 17 Sep 2023 22:31:46 +0200 Subject: [PATCH 190/229] Removed legacy autoloader (#762) --- CHANGELOG.md | 1 + phpstan-baseline.neon | 6 ------ src/autoload.php | 29 ----------------------------- 3 files changed, 1 insertion(+), 35 deletions(-) delete mode 100644 src/autoload.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 8735e63d36..1b723a02e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## [Unreleased](https://github.com/FakerPHP/Faker/compare/v1.23.0...main) - Fixed polish license plates (#685) +- Removed legacy autoloader (#762) ## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index f5e829a001..a6b30bdcc4 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -937,9 +937,3 @@ parameters: message: "#^Parameter \\#3 \\$pad_string of function str_pad expects string, int given\\.$#" count: 1 path: src/Faker/Provider/zh_CN/Address.php - - - - message: "#^Parameter \\#1 \\$autoload_function of function spl_autoload_register expects callable\\(string\\)\\: void, Closure\\(mixed\\)\\: bool given\\.$#" - count: 1 - path: src/autoload.php - diff --git a/src/autoload.php b/src/autoload.php deleted file mode 100644 index a4dfa9ecf2..0000000000 --- a/src/autoload.php +++ /dev/null @@ -1,29 +0,0 @@ - Date: Sun, 17 Sep 2023 22:34:17 +0200 Subject: [PATCH 191/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#767) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.33 to 1.10.34. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.33...1.10.34) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index c986b84bbf..f5cd512290 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.33", + "phpstan/phpstan": "^1.10.34", "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index e29b1839e4..085a4e0406 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "91943fd0e93bcc879374e34731204c38", + "content-hash": "b0fb02f9d2117da81e255625a923633e", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.33", + "version": "1.10.34", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1" + "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", - "reference": "03b1cf9f814ba0863c4e9affea49a4d1ed9a2ed1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7f806b6f1403e6914c778140e2ba07c293cb4901", + "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-09-04T12:20:53+00:00" + "time": "2023-09-13T09:49:47+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 6eda5c179e79d95eb2547a20024e7180956ac079 Mon Sep 17 00:00:00 2001 From: Pim Jansen Date: Sun, 17 Sep 2023 22:53:13 +0200 Subject: [PATCH 192/229] Removed the ORM integration (#764) --- CHANGELOG.md | 1 + composer.json | 4 +- phpstan-baseline.neon | 570 ------------------ phpstan.neon.dist | 2 - psalm.baseline.xml | 119 ---- roave-bc-check.yaml | 19 + src/Faker/Guesser/Name.php | 180 ------ src/Faker/ORM/CakePHP/ColumnTypeGuesser.php | 79 --- src/Faker/ORM/CakePHP/EntityPopulator.php | 174 ------ src/Faker/ORM/CakePHP/Populator.php | 113 ---- src/Faker/ORM/Doctrine/ColumnTypeGuesser.php | 91 --- src/Faker/ORM/Doctrine/EntityPopulator.php | 249 -------- src/Faker/ORM/Doctrine/Populator.php | 126 ---- .../ORM/Doctrine/backward-compatibility.php | 11 - src/Faker/ORM/Mandango/ColumnTypeGuesser.php | 57 -- src/Faker/ORM/Mandango/EntityPopulator.php | 123 ---- src/Faker/ORM/Mandango/Populator.php | 63 -- src/Faker/ORM/Propel/ColumnTypeGuesser.php | 109 ---- src/Faker/ORM/Propel/EntityPopulator.php | 204 ------- src/Faker/ORM/Propel/Populator.php | 90 --- src/Faker/ORM/Propel2/ColumnTypeGuesser.php | 112 ---- src/Faker/ORM/Propel2/EntityPopulator.php | 207 ------- src/Faker/ORM/Propel2/Populator.php | 93 --- src/Faker/ORM/Spot/ColumnTypeGuesser.php | 84 --- src/Faker/ORM/Spot/EntityPopulator.php | 199 ------ src/Faker/ORM/Spot/Populator.php | 89 --- .../ORM/Doctrine/ColumnTypeGuesserTest.php | 25 - .../ORM/Doctrine/EntityPopulatorTest.php | 26 - test/Faker/ORM/Doctrine/PopulatorTest.php | 23 - 29 files changed, 21 insertions(+), 3221 deletions(-) delete mode 100644 src/Faker/Guesser/Name.php delete mode 100644 src/Faker/ORM/CakePHP/ColumnTypeGuesser.php delete mode 100644 src/Faker/ORM/CakePHP/EntityPopulator.php delete mode 100644 src/Faker/ORM/CakePHP/Populator.php delete mode 100644 src/Faker/ORM/Doctrine/ColumnTypeGuesser.php delete mode 100644 src/Faker/ORM/Doctrine/EntityPopulator.php delete mode 100644 src/Faker/ORM/Doctrine/Populator.php delete mode 100644 src/Faker/ORM/Doctrine/backward-compatibility.php delete mode 100644 src/Faker/ORM/Mandango/ColumnTypeGuesser.php delete mode 100644 src/Faker/ORM/Mandango/EntityPopulator.php delete mode 100644 src/Faker/ORM/Mandango/Populator.php delete mode 100644 src/Faker/ORM/Propel/ColumnTypeGuesser.php delete mode 100644 src/Faker/ORM/Propel/EntityPopulator.php delete mode 100644 src/Faker/ORM/Propel/Populator.php delete mode 100644 src/Faker/ORM/Propel2/ColumnTypeGuesser.php delete mode 100644 src/Faker/ORM/Propel2/EntityPopulator.php delete mode 100644 src/Faker/ORM/Propel2/Populator.php delete mode 100644 src/Faker/ORM/Spot/ColumnTypeGuesser.php delete mode 100644 src/Faker/ORM/Spot/EntityPopulator.php delete mode 100644 src/Faker/ORM/Spot/Populator.php delete mode 100644 test/Faker/ORM/Doctrine/ColumnTypeGuesserTest.php delete mode 100644 test/Faker/ORM/Doctrine/EntityPopulatorTest.php delete mode 100644 test/Faker/ORM/Doctrine/PopulatorTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b723a02e6..c96d6fd347 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ - Fixed polish license plates (#685) - Removed legacy autoloader (#762) +- Removed functionality for populating ORM entities and models (#764) ## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) diff --git a/composer.json b/composer.json index 9b85ce9d43..9fc1068679 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,6 @@ "require-dev": { "ext-intl": "*", "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", "phpunit/phpunit": "^9.5.26", "symfony/phpunit-bridge": "^5.4.16" }, @@ -43,8 +42,7 @@ "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality.", - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine" + "ext-mbstring": "Required for multibyte Unicode string functionality." }, "config": { "allow-plugins": { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index a6b30bdcc4..f0b53b17bf 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -35,576 +35,6 @@ parameters: count: 1 path: src/Faker/Generator.php - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: src/Faker/Guesser/Name.php - - - - message: "#^Call to static method get\\(\\) on an unknown class Cake\\\\ORM\\\\TableRegistry\\.$#" - count: 1 - path: src/Faker/ORM/CakePHP/EntityPopulator.php - - - - message: "#^Access to protected property Faker\\\\ORM\\\\CakePHP\\\\EntityPopulator\\:\\:\\$class\\.$#" - count: 1 - path: src/Faker/ORM/CakePHP/Populator.php - - - - message: "#^Access to protected property Faker\\\\ORM\\\\CakePHP\\\\EntityPopulator\\:\\:\\$columnFormatters\\.$#" - count: 1 - path: src/Faker/ORM/CakePHP/Populator.php - - - - message: "#^Access to protected property Faker\\\\ORM\\\\CakePHP\\\\EntityPopulator\\:\\:\\$modifiers\\.$#" - count: 1 - path: src/Faker/ORM/CakePHP/Populator.php - - - - message: "#^Method Faker\\\\ORM\\\\CakePHP\\\\EntityPopulator\\:\\:guessModifiers\\(\\) invoked with 1 parameter, 0 required\\.$#" - count: 1 - path: src/Faker/ORM/CakePHP/Populator.php - - - - message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:\\$reflFields\\.$#" - count: 2 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Access to constant ONE on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Access to constant ONE_TO_ONE on an unknown class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Access to constant REFERENCE_ONE on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Access to property \\$associationMappings on an unknown class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\:\\:newInstance\\(\\)\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to an undefined method Doctrine\\\\Persistence\\\\ObjectRepository\\\\:\\:createQueryBuilder\\(\\)\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method getAssociationMappings\\(\\) on an unknown class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Class Doctrine\\\\ODM\\\\MongoDB\\\\Mapping\\\\ClassMetadata not found\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Class Doctrine\\\\ORM\\\\Mapping\\\\ClassMetadata not found\\.$#" - count: 1 - path: src/Faker/ORM/Doctrine/EntityPopulator.php - - - - message: "#^Call to method create\\(\\) on an unknown class Mandango\\\\Mandango\\.$#" - count: 1 - path: src/Faker/ORM/Mandango/EntityPopulator.php - - - - message: "#^Call to method getMetadata\\(\\) on an unknown class Mandango\\\\Mandango\\.$#" - count: 2 - path: src/Faker/ORM/Mandango/EntityPopulator.php - - - - message: "#^Call to method persist\\(\\) on an unknown class Mandango\\\\Mandango\\.$#" - count: 1 - path: src/Faker/ORM/Mandango/EntityPopulator.php - - - - message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\EntityPopulator\\:\\:execute\\(\\) has invalid type Mandango\\\\Mandango\\.$#" - count: 1 - path: src/Faker/ORM/Mandango/EntityPopulator.php - - - - message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\EntityPopulator\\:\\:guessColumnFormatters\\(\\) has invalid type Mandango\\\\Mandango\\.$#" - count: 1 - path: src/Faker/ORM/Mandango/EntityPopulator.php - - - - message: "#^Parameter \\$mandango of method Faker\\\\ORM\\\\Mandango\\\\Populator\\:\\:__construct\\(\\) has invalid type Mandango\\\\Mandango\\.$#" - count: 1 - path: src/Faker/ORM/Mandango/Populator.php - - - - message: "#^Access to constant BIGINT on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant BINARY on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant BLOB on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant BOOLEAN on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant BOOLEAN_EMU on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant CHAR on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant CLOB on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant CLOB_EMU on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant DECIMAL on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant DOUBLE on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant ENUM on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant FLOAT on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant INTEGER on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant LONGVARBINARY on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant LONGVARCHAR on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant NUMERIC on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant OBJECT on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant PHP_ARRAY on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant REAL on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant SMALLINT on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant TINYINT on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant VARBINARY on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Access to constant VARCHAR on an unknown class PropelColumnTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Call to method getSize\\(\\) on an unknown class ColumnMap\\.$#" - count: 2 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Call to method getType\\(\\) on an unknown class ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Call to method getValueSet\\(\\) on an unknown class ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Call to method isEpochTemporal\\(\\) on an unknown class ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Call to method isTemporal\\(\\) on an unknown class ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Parameter \\$column of method Faker\\\\ORM\\\\Propel\\\\ColumnTypeGuesser\\:\\:guessFormat\\(\\) has invalid type ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/ColumnTypeGuesser.php - - - - message: "#^Call to method getName\\(\\) on an unknown class ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/EntityPopulator.php - - - - message: "#^Call to method getTable\\(\\) on an unknown class ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/EntityPopulator.php - - - - message: "#^Parameter \\$columnMap of method Faker\\\\ORM\\\\Propel\\\\EntityPopulator\\:\\:isColumnBehavior\\(\\) has invalid type ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel/EntityPopulator.php - - - - message: "#^Access to constant CONNECTION_WRITE on an unknown class Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel/Populator.php - - - - message: "#^Call to static method disableInstancePooling\\(\\) on an unknown class Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel/Populator.php - - - - message: "#^Call to static method enableInstancePooling\\(\\) on an unknown class Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel/Populator.php - - - - message: "#^Call to static method getConnection\\(\\) on an unknown class Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel/Populator.php - - - - message: "#^Call to static method isInstancePoolingEnabled\\(\\) on an unknown class Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel/Populator.php - - - - message: "#^Parameter \\$con of method Faker\\\\ORM\\\\Propel\\\\Populator\\:\\:execute\\(\\) has invalid type Faker\\\\ORM\\\\Propel\\\\PropelPDO\\.$#" - count: 1 - path: src/Faker/ORM/Propel/Populator.php - - - - message: "#^Access to constant BIGINT on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant BINARY on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant BLOB on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant BOOLEAN on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant BOOLEAN_EMU on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant BU_DATE on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant BU_TIMESTAMP on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant CHAR on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant CLOB on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant CLOB_EMU on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant DECIMAL on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant DOUBLE on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant ENUM on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant FLOAT on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant INTEGER on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant LONGVARBINARY on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant LONGVARCHAR on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant NUMERIC on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant OBJECT on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant PHP_ARRAY on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant REAL on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant SMALLINT on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant TINYINT on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant VARBINARY on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Access to constant VARCHAR on an unknown class Propel\\\\Generator\\\\Model\\\\PropelTypes\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Call to method getSize\\(\\) on an unknown class Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 2 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Call to method getType\\(\\) on an unknown class Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 3 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Call to method getValueSet\\(\\) on an unknown class Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Call to method isTemporal\\(\\) on an unknown class Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Parameter \\$column of method Faker\\\\ORM\\\\Propel2\\\\ColumnTypeGuesser\\:\\:guessFormat\\(\\) has invalid type Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/ColumnTypeGuesser.php - - - - message: "#^Call to method getName\\(\\) on an unknown class Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/EntityPopulator.php - - - - message: "#^Call to method getTable\\(\\) on an unknown class Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/EntityPopulator.php - - - - message: "#^Parameter \\$columnMap of method Faker\\\\ORM\\\\Propel2\\\\EntityPopulator\\:\\:isColumnBehavior\\(\\) has invalid type Propel\\\\Runtime\\\\Map\\\\ColumnMap\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/EntityPopulator.php - - - - message: "#^Access to constant CONNECTION_WRITE on an unknown class Propel\\\\Runtime\\\\ServiceContainer\\\\ServiceContainerInterface\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/Populator.php - - - - message: "#^Call to static method disableInstancePooling\\(\\) on an unknown class Propel\\\\Runtime\\\\Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/Populator.php - - - - message: "#^Call to static method enableInstancePooling\\(\\) on an unknown class Propel\\\\Runtime\\\\Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/Populator.php - - - - message: "#^Call to static method getConnection\\(\\) on an unknown class Propel\\\\Runtime\\\\Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/Populator.php - - - - message: "#^Call to static method isInstancePoolingEnabled\\(\\) on an unknown class Propel\\\\Runtime\\\\Propel\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/Populator.php - - - - message: "#^Parameter \\$con of method Faker\\\\ORM\\\\Propel2\\\\Populator\\:\\:execute\\(\\) has invalid type Faker\\\\ORM\\\\Propel2\\\\PropelPDO\\.$#" - count: 1 - path: src/Faker/ORM/Propel2/Populator.php - - - - message: "#^Call to method build\\(\\) on an unknown class Spot\\\\Mapper\\.$#" - count: 2 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Call to method entity\\(\\) on an unknown class Spot\\\\Mapper\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Call to method entityName\\(\\) on an unknown class Spot\\\\Relation\\\\BelongsTo\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Call to method fields\\(\\) on an unknown class Spot\\\\Mapper\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Call to method insert\\(\\) on an unknown class Spot\\\\Mapper\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Call to method localKey\\(\\) on an unknown class Spot\\\\Relation\\\\BelongsTo\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Call to method mapper\\(\\) on an unknown class Spot\\\\Locator\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Class Spot\\\\Relation\\\\BelongsTo not found\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Method Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:getMapper\\(\\) should return string but returns Spot\\\\Mapper\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:__construct\\(\\) has invalid type Spot\\\\Locator\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Parameter \\$mapper of method Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:__construct\\(\\) has invalid type Spot\\\\Mapper\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Property Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:\\$locator has unknown class Spot\\\\Locator as its type\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Property Faker\\\\ORM\\\\Spot\\\\EntityPopulator\\:\\:\\$mapper has unknown class Spot\\\\Mapper as its type\\.$#" - count: 1 - path: src/Faker/ORM/Spot/EntityPopulator.php - - - - message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\Populator\\:\\:__construct\\(\\) has invalid type Spot\\\\Locator\\.$#" - count: 1 - path: src/Faker/ORM/Spot/Populator.php - - - - message: "#^Parameter \\$locator of method Faker\\\\ORM\\\\Spot\\\\Populator\\:\\:execute\\(\\) has invalid type Spot\\\\Locator\\.$#" - count: 1 - path: src/Faker/ORM/Spot/Populator.php - - message: "#^Class UnitEnum not found\\.$#" count: 2 diff --git a/phpstan.neon.dist b/phpstan.neon.dist index d23694b6cb..d302ac8fcd 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -3,8 +3,6 @@ includes: parameters: level: 5 - bootstrapFiles: - - src/Faker/ORM/Doctrine/backward-compatibility.php paths: - src tmpDir: .build/phpstan/ diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 7ee4975b70..6edf90ec62 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -12,125 +12,6 @@ self - - - TableRegistry - - - - - class]]> - class->associationMappings]]> - \Doctrine\ODM\MongoDB\Mapping\ClassMetadata - \Doctrine\ODM\MongoDB\Mapping\ClassMetadata - \Doctrine\ODM\MongoDB\Mapping\ClassMetadata - \Doctrine\ORM\Mapping\ClassMetadata - \Doctrine\ORM\Mapping\ClassMetadata - - - createQueryBuilder - getAssociationMappings - newInstance - - - - - Mandango - Mandango - - - - - mandango]]> - Mandango - - - - - \ColumnMap - - - - - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - \ColumnMap - - - - - \Propel - - - PropelPDO - - - - - ColumnMap - - - - - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - $columnMap - ColumnMap - - - - - Propel - - - PropelPDO - - - - - mapper]]> - - - string - - - $relation - $relation - BelongsTo - Locator - Mapper - - - $locator - mapper]]> - mapper]]> - mapper]]> - mapper]]> - mapper]]> - Locator - Mapper - - - - - locator]]> - Locator - - - Locator - - [static::class, 'randomDigit'] diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index b3ff163801..76e34786e8 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -37,6 +37,25 @@ parameters: - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerBuilder has been deleted#' - '#\[BC\] REMOVED: Class Faker\\Extension\\ContainerException has been deleted#' - '#\[BC\] REMOVED: Class Faker\\Extension\\NotInContainerException has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\Guesser\\Name has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\CakePHP\\ColumnTypeGuesser has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\CakePHP\\EntityPopulator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\CakePHP\\Populator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Doctrine\\ColumnTypeGuesser has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Doctrine\\EntityPopulator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Doctrine\\Populator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Mandango\\ColumnTypeGuesser has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Mandango\\EntityPopulator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Mandango\\Populator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Propel2\\ColumnTypeGuesser has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Propel2\\EntityPopulator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Propel2\\Populator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Propel\\ColumnTypeGuesser has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Propel\\EntityPopulator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Propel\\Populator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Spot\\ColumnTypeGuesser has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Spot\\EntityPopulator has been deleted#' + - '#\[BC\] REMOVED: Class Faker\\ORM\\Spot\\Populator has been deleted#' - '#\[BC\] REMOVED: Method Faker\\Container\\Container\#getDefinitions\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerBuilder::getDefault\(\) was removed#' - '#\[BC\] REMOVED: Method Faker\\Container\\ContainerBuilder\::defaultExtensions\(\) was removed#' diff --git a/src/Faker/Guesser/Name.php b/src/Faker/Guesser/Name.php deleted file mode 100644 index ddb048bcf5..0000000000 --- a/src/Faker/Guesser/Name.php +++ /dev/null @@ -1,180 +0,0 @@ -generator = $generator; - } - - /** - * @param string $name - * @param int|null $size Length of field, if known - * - * @return callable|null - */ - public function guessFormat($name, $size = null) - { - $name = Base::toLower($name); - $generator = $this->generator; - - if (preg_match('/^is[_A-Z]/', $name)) { - return static function () use ($generator) { - return $generator->boolean; - }; - } - - if (preg_match('/(_a|A)t$/', $name)) { - return static function () use ($generator) { - return $generator->dateTime; - }; - } - - switch (str_replace('_', '', $name)) { - case 'firstname': - return static function () use ($generator) { - return $generator->firstName; - }; - - case 'lastname': - return static function () use ($generator) { - return $generator->lastName; - }; - - case 'username': - case 'login': - return static function () use ($generator) { - return $generator->userName; - }; - - case 'email': - case 'emailaddress': - return static function () use ($generator) { - return $generator->email; - }; - - case 'phonenumber': - case 'phone': - case 'telephone': - case 'telnumber': - return static function () use ($generator) { - return $generator->phoneNumber; - }; - - case 'address': - return static function () use ($generator) { - return $generator->address; - }; - - case 'city': - case 'town': - return static function () use ($generator) { - return $generator->city; - }; - - case 'streetaddress': - return static function () use ($generator) { - return $generator->streetAddress; - }; - - case 'postcode': - case 'zipcode': - return static function () use ($generator) { - return $generator->postcode; - }; - - case 'state': - return static function () use ($generator) { - return $generator->state; - }; - - case 'county': - if ($this->generator->locale == 'en_US') { - return static function () use ($generator) { - return sprintf('%s County', $generator->city); - }; - } - - return static function () use ($generator) { - return $generator->state; - }; - - case 'country': - switch ($size) { - case 2: - return static function () use ($generator) { - return $generator->countryCode; - }; - - case 3: - return static function () use ($generator) { - return $generator->countryISOAlpha3; - }; - - case 5: - case 6: - return static function () use ($generator) { - return $generator->locale; - }; - - default: - return static function () use ($generator) { - return $generator->country; - }; - } - - break; - - case 'locale': - return static function () use ($generator) { - return $generator->locale; - }; - - case 'currency': - case 'currencycode': - return static function () use ($generator) { - return $generator->currencyCode; - }; - - case 'url': - case 'website': - return static function () use ($generator) { - return $generator->url; - }; - - case 'company': - case 'companyname': - case 'employer': - return static function () use ($generator) { - return $generator->company; - }; - - case 'title': - if ($size !== null && $size <= 10) { - return static function () use ($generator) { - return $generator->title; - }; - } - - return static function () use ($generator) { - return $generator->sentence; - }; - - case 'body': - case 'summary': - case 'article': - case 'description': - return static function () use ($generator) { - return $generator->text; - }; - } - - return null; - } -} diff --git a/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php b/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php deleted file mode 100644 index c2a30e67d2..0000000000 --- a/src/Faker/ORM/CakePHP/ColumnTypeGuesser.php +++ /dev/null @@ -1,79 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat($column, $table) - { - $generator = $this->generator; - $schema = $table->schema(); - - switch ($schema->columnType($column)) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean; - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case 'biginteger': - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case 'decimal': - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case 'uuid': - return static function () use ($generator) { - return $generator->uuid(); - }; - - case 'string': - if (method_exists($schema, 'getColumn')) { - $columnData = $schema->getColumn($column); - } else { - $columnData = $schema->column($column); - } - $length = $columnData['length']; - - return static function () use ($generator, $length) { - return $generator->text($length); - }; - - case 'text': - return static function () use ($generator) { - return $generator->text(); - }; - - case 'date': - case 'datetime': - case 'timestamp': - case 'time': - return static function () use ($generator) { - return $generator->datetime(); - }; - - case 'binary': - default: - return null; - } - } -} diff --git a/src/Faker/ORM/CakePHP/EntityPopulator.php b/src/Faker/ORM/CakePHP/EntityPopulator.php deleted file mode 100644 index 196ca1529c..0000000000 --- a/src/Faker/ORM/CakePHP/EntityPopulator.php +++ /dev/null @@ -1,174 +0,0 @@ -class = $class; - } - - /** - * @param string $name - */ - public function __get($name) - { - return $this->{$name}; - } - - /** - * @param string $name - */ - public function __set($name, $value) - { - $this->{$name} = $value; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - public function mergeModifiersWith($modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessColumnFormatters($populator) - { - $formatters = []; - $class = $this->class; - $table = $this->getTable($class); - $schema = $table->schema(); - $pk = $schema->primaryKey(); - $guessers = $populator->getGuessers() + ['ColumnTypeGuesser' => new ColumnTypeGuesser($populator->getGenerator())]; - $isForeignKey = static function ($column) use ($table) { - foreach ($table->associations()->type('BelongsTo') as $assoc) { - if ($column == $assoc->foreignKey()) { - return true; - } - } - - return false; - }; - - foreach ($schema->columns() as $column) { - if ($column == $pk[0] || $isForeignKey($column)) { - continue; - } - - foreach ($guessers as $guesser) { - if ($formatter = $guesser->guessFormat($column, $table)) { - $formatters[$column] = $formatter; - - break; - } - } - } - - return $formatters; - } - - /** - * @return array - */ - public function guessModifiers() - { - $modifiers = []; - $table = $this->getTable($this->class); - - $belongsTo = $table->associations()->type('BelongsTo'); - - foreach ($belongsTo as $assoc) { - $modifiers['belongsTo' . $assoc->name()] = function ($data, $insertedEntities) use ($assoc) { - $table = $assoc->target(); - $foreignModel = $table->alias(); - - $foreignKeys = []; - - if (!empty($insertedEntities[$foreignModel])) { - $foreignKeys = $insertedEntities[$foreignModel]; - } else { - $foreignKeys = $table->find('all') - ->select(['id']) - ->map(static function ($row) { - return $row->id; - }) - ->toArray(); - } - - if (empty($foreignKeys)) { - throw new \Exception(sprintf('%s belongsTo %s, which seems empty at this point.', $this->getTable($this->class)->table(), $assoc->table())); - } - - $foreignKey = Extension\Helper::randomElement($foreignKeys); - $data[$assoc->foreignKey()] = $foreignKey; - - return $data; - }; - } - - // TODO check if TreeBehavior attached to modify lft/rgt cols - - return $modifiers; - } - - /** - * @param array $options - */ - public function execute($class, $insertedEntities, $options = []) - { - $table = $this->getTable($class); - $entity = $table->newEntity(); - - foreach ($this->columnFormatters as $column => $format) { - if (null !== $format) { - $entity->{$column} = is_callable($format) ? $format($insertedEntities, $table) : $format; - } - } - - foreach ($this->modifiers as $modifier) { - $entity = $modifier($entity, $insertedEntities); - } - - if (!$entity = $table->save($entity, $options)) { - throw new \RuntimeException("Failed saving $class record"); - } - - $pk = $table->primaryKey(); - - if (is_string($pk)) { - return $entity->{$pk}; - } - - return $entity->{$pk[0]}; - } - - public function setConnection($name) - { - $this->connectionName = $name; - } - - protected function getTable($class) - { - $options = []; - - if (!empty($this->connectionName)) { - $options['connection'] = $this->connectionName; - } - - return TableRegistry::get($class, $options); - } -} diff --git a/src/Faker/ORM/CakePHP/Populator.php b/src/Faker/ORM/CakePHP/Populator.php deleted file mode 100644 index ac195fbdd4..0000000000 --- a/src/Faker/ORM/CakePHP/Populator.php +++ /dev/null @@ -1,113 +0,0 @@ -generator = $generator; - } - - /** - * @return \Faker\Generator - */ - public function getGenerator() - { - return $this->generator; - } - - /** - * @return array - */ - public function getGuessers() - { - return $this->guessers; - } - - /** - * @return $this - */ - public function removeGuesser($name) - { - if ($this->guessers[$name]) { - unset($this->guessers[$name]); - } - - return $this; - } - - /** - * @throws \Exception - * - * @return $this - */ - public function addGuesser($class) - { - if (!is_object($class)) { - $class = new $class($this->generator); - } - - if (!method_exists($class, 'guessFormat')) { - throw new \Exception('Missing required custom guesser method: ' . get_class($class) . '::guessFormat()'); - } - - $this->guessers[get_class($class)] = $class; - - return $this; - } - - /** - * @param array $customColumnFormatters - * @param array $customModifiers - * - * @return $this - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) - { - if (!$entity instanceof EntityPopulator) { - $entity = new EntityPopulator($entity); - } - - $entity->columnFormatters = $entity->guessColumnFormatters($this); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - - $entity->modifiers = $entity->guessModifiers($this); - - if ($customModifiers) { - $entity->mergeModifiersWith($customModifiers); - } - - $class = $entity->class; - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - - return $this; - } - - /** - * @param array $options - * - * @return array - */ - public function execute($options = []) - { - $insertedEntities = []; - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($class, $insertedEntities, $options); - } - } - - return $insertedEntities; - } -} diff --git a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php b/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php deleted file mode 100644 index 3267fe469b..0000000000 --- a/src/Faker/ORM/Doctrine/ColumnTypeGuesser.php +++ /dev/null @@ -1,91 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat($fieldName, ClassMetadata $class) - { - $generator = $this->generator; - $type = $class->getTypeOfField($fieldName); - - switch ($type) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean; - }; - - case 'decimal': - $size = $class->fieldMappings[$fieldName]['precision'] ?? 2; - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case 'smallint': - return static function () use ($generator) { - return $generator->numberBetween(0, 65535); - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case 'bigint': - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case 'string': - $size = $class->fieldMappings[$fieldName]['length'] ?? 255; - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case 'text': - return static function () use ($generator) { - return $generator->text; - }; - - case 'datetime': - case 'date': - case 'time': - return static function () use ($generator) { - return $generator->datetime; - }; - - case 'datetime_immutable': - case 'date_immutable': - case 'time_immutable': - return static function () use ($generator) { - return \DateTimeImmutable::createFromMutable($generator->datetime); - }; - - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/src/Faker/ORM/Doctrine/EntityPopulator.php b/src/Faker/ORM/Doctrine/EntityPopulator.php deleted file mode 100644 index af8970e93b..0000000000 --- a/src/Faker/ORM/Doctrine/EntityPopulator.php +++ /dev/null @@ -1,249 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class->getName(); - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - public function setModifiers(array $modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith(array $modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator) - { - $formatters = []; - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new ColumnTypeGuesser($generator); - - foreach ($this->class->getFieldNames() as $fieldName) { - if ($this->class->isIdentifier($fieldName) || !$this->class->hasField($fieldName)) { - continue; - } - - $size = $this->class->fieldMappings[$fieldName]['length'] ?? null; - - if ($formatter = $nameGuesser->guessFormat($fieldName, $size)) { - $formatters[$fieldName] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($fieldName, $this->class)) { - $formatters[$fieldName] = $formatter; - - continue; - } - } - - foreach ($this->class->getAssociationNames() as $assocName) { - if ($this->class->isCollectionValuedAssociation($assocName)) { - continue; - } - - $relatedClass = $this->class->getAssociationTargetClass($assocName); - - $unique = $optional = false; - - if ($this->class instanceof \Doctrine\ORM\Mapping\ClassMetadata) { - $mappings = $this->class->getAssociationMappings(); - - foreach ($mappings as $mapping) { - if ($mapping['targetEntity'] == $relatedClass) { - if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadata::ONE_TO_ONE) { - $unique = true; - $optional = $mapping['joinColumns'][0]['nullable'] ?? false; - - break; - } - } - } - } elseif ($this->class instanceof \Doctrine\ODM\MongoDB\Mapping\ClassMetadata) { - $mappings = $this->class->associationMappings; - - foreach ($mappings as $mapping) { - if ($mapping['targetDocument'] == $relatedClass) { - if ($mapping['type'] == \Doctrine\ODM\MongoDB\Mapping\ClassMetadata::ONE && $mapping['association'] == \Doctrine\ODM\MongoDB\Mapping\ClassMetadata::REFERENCE_ONE) { - $unique = true; - $optional = $mapping['nullable'] ?? false; - - break; - } - } - } - } - - $index = 0; - $formatters[$assocName] = static function ($inserted) use ($relatedClass, &$index, $unique, $optional, $generator) { - if (isset($inserted[$relatedClass])) { - if ($unique) { - $related = null; - - if (isset($inserted[$relatedClass][$index]) || !$optional) { - $related = $inserted[$relatedClass][$index]; - } - - ++$index; - - return $related; - } - - return $generator->randomElement($inserted[$relatedClass]); - } - - return null; - }; - } - - return $formatters; - } - - /** - * Insert one new record using the Entity class. - * - * @param bool $generateId - * - * @return EntityPopulator - */ - public function execute(ObjectManager $manager, $insertedEntities, $generateId = false) - { - $obj = $this->class->newInstance(); - - $this->fillColumns($obj, $insertedEntities); - $this->callMethods($obj, $insertedEntities); - - if ($generateId) { - $idsName = $this->class->getIdentifier(); - - foreach ($idsName as $idName) { - $id = $this->generateId($obj, $idName, $manager); - $this->class->reflFields[$idName]->setValue($obj, $id); - } - } - - $manager->persist($obj); - - return $obj; - } - - private function fillColumns($obj, $insertedEntities): void - { - foreach ($this->columnFormatters as $field => $format) { - if (null !== $format) { - // Add some extended debugging information to any errors thrown by the formatter - try { - $value = is_callable($format) ? $format($insertedEntities, $obj) : $format; - } catch (\InvalidArgumentException $ex) { - throw new \InvalidArgumentException(sprintf( - 'Failed to generate a value for %s::%s: %s', - get_class($obj), - $field, - $ex->getMessage(), - )); - } - // Try a standard setter if it's available, otherwise fall back on reflection - $setter = sprintf('set%s', ucfirst($field)); - - if (is_callable([$obj, $setter])) { - $obj->$setter($value); - } else { - $this->class->reflFields[$field]->setValue($obj, $value); - } - } - } - } - - private function callMethods($obj, $insertedEntities): void - { - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - } - - /** - * @return int - */ - private function generateId($obj, $column, ObjectManager $manager) - { - $repository = $manager->getRepository(get_class($obj)); - $result = $repository->createQueryBuilder('e') - ->select(sprintf('e.%s', $column)) - ->getQuery() - ->execute(); - $ids = array_map('current', $result->toArray()); - - do { - $id = Extension\Helper::randomNumber(); - } while (in_array($id, $ids, false)); - - return $id; - } -} diff --git a/src/Faker/ORM/Doctrine/Populator.php b/src/Faker/ORM/Doctrine/Populator.php deleted file mode 100644 index 1bce6ab47c..0000000000 --- a/src/Faker/ORM/Doctrine/Populator.php +++ /dev/null @@ -1,126 +0,0 @@ -generator = $generator; - $this->manager = $manager; - $this->batchSize = $batchSize; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Doctrine classname, or a \Faker\ORM\Doctrine\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = [], $generateId = false) - { - if (!$entity instanceof \Faker\ORM\Doctrine\EntityPopulator) { - if (null === $this->manager) { - throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.'); - } - $entity = new \Faker\ORM\Doctrine\EntityPopulator($this->manager->getClassMetadata($entity)); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->mergeModifiersWith($customModifiers); - $this->generateId[$entity->getClass()] = $generateId; - - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * Please note that large amounts of data will result in more memory usage since the the Populator will return - * all newly created primary keys after executing. - * - * @param ObjectManager|null $entityManager A Doctrine connection object - * - * @return array A list of the inserted PKs - */ - public function execute($entityManager = null) - { - if (null === $entityManager) { - $entityManager = $this->manager; - } - - if (null === $entityManager) { - throw new \InvalidArgumentException('No entity manager passed to Doctrine Populator.'); - } - - $insertedEntities = []; - - foreach ($this->quantities as $class => $number) { - $generateId = $this->generateId[$class]; - - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute( - $entityManager, - $insertedEntities, - $generateId, - ); - - if (count($insertedEntities) % $this->batchSize === 0) { - $entityManager->flush(); - } - } - $entityManager->flush(); - } - - return $insertedEntities; - } -} diff --git a/src/Faker/ORM/Doctrine/backward-compatibility.php b/src/Faker/ORM/Doctrine/backward-compatibility.php deleted file mode 100644 index 6f545f87b8..0000000000 --- a/src/Faker/ORM/Doctrine/backward-compatibility.php +++ /dev/null @@ -1,11 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat($field) - { - $generator = $this->generator; - - switch ($field['type']) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean; - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 4294967295); - }; - - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case 'string': - return static function () use ($generator) { - return $generator->text(255); - }; - - case 'date': - return static function () use ($generator) { - return $generator->dateTime; - }; - - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/src/Faker/ORM/Mandango/EntityPopulator.php b/src/Faker/ORM/Mandango/EntityPopulator.php deleted file mode 100644 index 515ab7b659..0000000000 --- a/src/Faker/ORM/Mandango/EntityPopulator.php +++ /dev/null @@ -1,123 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator, Mandango $mandango) - { - $formatters = []; - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new \Faker\ORM\Mandango\ColumnTypeGuesser($generator); - - $metadata = $mandango->getMetadata($this->class); - - // fields - foreach ($metadata['fields'] as $fieldName => $field) { - if ($formatter = $nameGuesser->guessFormat($fieldName)) { - $formatters[$fieldName] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($field)) { - $formatters[$fieldName] = $formatter; - - continue; - } - } - - // references - foreach (array_merge($metadata['referencesOne'], $metadata['referencesMany']) as $referenceName => $reference) { - if (!isset($reference['class'])) { - continue; - } - $referenceClass = $reference['class']; - - $formatters[$referenceName] = static function ($insertedEntities) use ($referenceClass) { - if (isset($insertedEntities[$referenceClass])) { - return Base::randomElement($insertedEntities[$referenceClass]); - } - - return null; - }; - } - - return $formatters; - } - - /** - * Insert one new record using the Entity class. - */ - public function execute(Mandango $mandango, $insertedEntities) - { - $metadata = $mandango->getMetadata($this->class); - - $obj = $mandango->create($this->class); - - foreach ($this->columnFormatters as $column => $format) { - if (null !== $format) { - $value = is_callable($format) ? $format($insertedEntities, $obj) : $format; - - if (isset($metadata['fields'][$column]) - || isset($metadata['referencesOne'][$column])) { - $obj->set($column, $value); - } - - if (isset($metadata['referencesMany'][$column])) { - $adder = 'add' . ucfirst($column); - $obj->$adder($value); - } - } - } - $mandango->persist($obj); - - return $obj; - } -} diff --git a/src/Faker/ORM/Mandango/Populator.php b/src/Faker/ORM/Mandango/Populator.php deleted file mode 100644 index de6c3b81ce..0000000000 --- a/src/Faker/ORM/Mandango/Populator.php +++ /dev/null @@ -1,63 +0,0 @@ -generator = $generator; - $this->mandango = $mandango; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = []) - { - if (!$entity instanceof \Faker\ORM\Mandango\EntityPopulator) { - $entity = new \Faker\ORM\Mandango\EntityPopulator($entity); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator, $this->mandango)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @return array A list of the inserted entities. - */ - public function execute() - { - $insertedEntities = []; - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($this->mandango, $insertedEntities); - } - } - $this->mandango->flush(); - - return $insertedEntities; - } -} diff --git a/src/Faker/ORM/Propel/ColumnTypeGuesser.php b/src/Faker/ORM/Propel/ColumnTypeGuesser.php deleted file mode 100644 index 3d8a9a11e3..0000000000 --- a/src/Faker/ORM/Propel/ColumnTypeGuesser.php +++ /dev/null @@ -1,109 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat(\ColumnMap $column) - { - $generator = $this->generator; - - if ($column->isTemporal()) { - if ($column->isEpochTemporal()) { - return static function () use ($generator) { - return $generator->dateTime; - }; - } - - return static function () use ($generator) { - return $generator->dateTimeAD; - }; - } - $type = $column->getType(); - - switch ($type) { - case \PropelColumnTypes::BOOLEAN: - case \PropelColumnTypes::BOOLEAN_EMU: - return static function () use ($generator) { - return $generator->boolean; - }; - - case \PropelColumnTypes::NUMERIC: - case \PropelColumnTypes::DECIMAL: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case \PropelColumnTypes::TINYINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 127); - }; - - case \PropelColumnTypes::SMALLINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 32767); - }; - - case \PropelColumnTypes::INTEGER: - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case \PropelColumnTypes::BIGINT: - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case \PropelColumnTypes::FLOAT: - case \PropelColumnTypes::DOUBLE: - case \PropelColumnTypes::REAL: - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case \PropelColumnTypes::CHAR: - case \PropelColumnTypes::VARCHAR: - case \PropelColumnTypes::BINARY: - case \PropelColumnTypes::VARBINARY: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case \PropelColumnTypes::LONGVARCHAR: - case \PropelColumnTypes::LONGVARBINARY: - case \PropelColumnTypes::CLOB: - case \PropelColumnTypes::CLOB_EMU: - case \PropelColumnTypes::BLOB: - return static function () use ($generator) { - return $generator->text; - }; - - case \PropelColumnTypes::ENUM: - $valueSet = $column->getValueSet(); - - return static function () use ($generator, $valueSet) { - return $generator->randomElement($valueSet); - }; - - case \PropelColumnTypes::OBJECT: - case \PropelColumnTypes::PHP_ARRAY: - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/src/Faker/ORM/Propel/EntityPopulator.php b/src/Faker/ORM/Propel/EntityPopulator.php deleted file mode 100644 index f5af75c968..0000000000 --- a/src/Faker/ORM/Propel/EntityPopulator.php +++ /dev/null @@ -1,204 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator) - { - $formatters = []; - $class = $this->class; - $peerClass = $class::PEER; - $tableMap = $peerClass::getTableMap(); - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new \Faker\ORM\Propel\ColumnTypeGuesser($generator); - - foreach ($tableMap->getColumns() as $columnMap) { - // skip behavior columns, handled by modifiers - if ($this->isColumnBehavior($columnMap)) { - continue; - } - - if ($columnMap->isForeignKey()) { - $relatedClass = $columnMap->getRelation()->getForeignTable()->getClassname(); - $formatters[$columnMap->getPhpName()] = static function ($inserted) use ($relatedClass, $generator) { - return isset($inserted[$relatedClass]) ? $generator->randomElement($inserted[$relatedClass]) : null; - }; - - continue; - } - - if ($columnMap->isPrimaryKey()) { - continue; - } - - if ($formatter = $nameGuesser->guessFormat($columnMap->getPhpName(), $columnMap->getSize())) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($columnMap)) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - } - - return $formatters; - } - - /** - * @return bool - */ - protected function isColumnBehavior(\ColumnMap $columnMap) - { - foreach ($columnMap->getTable()->getBehaviors() as $name => $params) { - $columnName = Base::toLower($columnMap->getName()); - - switch ($name) { - case 'nested_set': - $columnNames = [$params['left_column'], $params['right_column'], $params['level_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - - case 'timestampable': - $columnNames = [$params['create_column'], $params['update_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - } - } - - return false; - } - - public function setModifiers($modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith($modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessModifiers(\Faker\Generator $generator) - { - $modifiers = []; - $class = $this->class; - $peerClass = $class::PEER; - $tableMap = $peerClass::getTableMap(); - - foreach ($tableMap->getBehaviors() as $name => $params) { - switch ($name) { - case 'nested_set': - $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator): void { - if (isset($inserted[$class])) { - $queryClass = $class . 'Query'; - $parent = $queryClass::create()->findPk($generator->randomElement($inserted[$class])); - $obj->insertAsLastChildOf($parent); - } else { - $obj->makeRoot(); - } - }; - - break; - - case 'sortable': - $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator): void { - $obj->insertAtRank($generator->numberBetween(1, count($inserted[$class] ?? []) + 1)); - }; - - break; - } - } - - return $modifiers; - } - - /** - * Insert one new record using the Entity class. - */ - public function execute($con, $insertedEntities) - { - $obj = new $this->class(); - - foreach ($this->getColumnFormatters() as $column => $format) { - if (null !== $format) { - $obj->setByName($column, is_callable($format) ? $format($insertedEntities, $obj) : $format); - } - } - - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - $obj->save($con); - - return $obj->getPrimaryKey(); - } -} diff --git a/src/Faker/ORM/Propel/Populator.php b/src/Faker/ORM/Propel/Populator.php deleted file mode 100644 index e3d4298107..0000000000 --- a/src/Faker/ORM/Propel/Populator.php +++ /dev/null @@ -1,90 +0,0 @@ -generator = $generator; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) - { - if (!$entity instanceof \Faker\ORM\Propel\EntityPopulator) { - $entity = new \Faker\ORM\Propel\EntityPopulator($entity); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->setModifiers($entity->guessModifiers($this->generator)); - - if ($customModifiers) { - $entity->mergeModifiersWith($customModifiers); - } - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @param PropelPDO $con A Propel connection object - * - * @return array A list of the inserted PKs - */ - public function execute($con = null) - { - if (null === $con) { - $con = $this->getConnection(); - } - $isInstancePoolingEnabled = \Propel::isInstancePoolingEnabled(); - \Propel::disableInstancePooling(); - $insertedEntities = []; - $con->beginTransaction(); - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($con, $insertedEntities); - } - } - $con->commit(); - - if ($isInstancePoolingEnabled) { - \Propel::enableInstancePooling(); - } - - return $insertedEntities; - } - - protected function getConnection() - { - // use the first connection available - $class = key($this->entities); - - if (!$class) { - throw new \RuntimeException('No class found from entities. Did you add entities to the Populator ?'); - } - - $peer = $class::PEER; - - return \Propel::getConnection($peer::DATABASE_NAME, \Propel::CONNECTION_WRITE); - } -} diff --git a/src/Faker/ORM/Propel2/ColumnTypeGuesser.php b/src/Faker/ORM/Propel2/ColumnTypeGuesser.php deleted file mode 100644 index 4c08e0ad3a..0000000000 --- a/src/Faker/ORM/Propel2/ColumnTypeGuesser.php +++ /dev/null @@ -1,112 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat(ColumnMap $column) - { - $generator = $this->generator; - - if ($column->isTemporal()) { - if ($column->getType() == PropelTypes::BU_DATE || $column->getType() == PropelTypes::BU_TIMESTAMP) { - return static function () use ($generator) { - return $generator->dateTime; - }; - } - - return static function () use ($generator) { - return $generator->dateTimeAD; - }; - } - $type = $column->getType(); - - switch ($type) { - case PropelTypes::BOOLEAN: - case PropelTypes::BOOLEAN_EMU: - return static function () use ($generator) { - return $generator->boolean; - }; - - case PropelTypes::NUMERIC: - case PropelTypes::DECIMAL: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case PropelTypes::TINYINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 127); - }; - - case PropelTypes::SMALLINT: - return static function () use ($generator) { - return $generator->numberBetween(0, 32767); - }; - - case PropelTypes::INTEGER: - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case PropelTypes::BIGINT: - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case PropelTypes::FLOAT: - case PropelTypes::DOUBLE: - case PropelTypes::REAL: - return static function () use ($generator) { - return $generator->randomFloat(); - }; - - case PropelTypes::CHAR: - case PropelTypes::VARCHAR: - case PropelTypes::BINARY: - case PropelTypes::VARBINARY: - $size = $column->getSize(); - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case PropelTypes::LONGVARCHAR: - case PropelTypes::LONGVARBINARY: - case PropelTypes::CLOB: - case PropelTypes::CLOB_EMU: - case PropelTypes::BLOB: - return static function () use ($generator) { - return $generator->text; - }; - - case PropelTypes::ENUM: - $valueSet = $column->getValueSet(); - - return static function () use ($generator, $valueSet) { - return $generator->randomElement($valueSet); - }; - - case PropelTypes::OBJECT: - case PropelTypes::PHP_ARRAY: - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/src/Faker/ORM/Propel2/EntityPopulator.php b/src/Faker/ORM/Propel2/EntityPopulator.php deleted file mode 100644 index 44804e37cf..0000000000 --- a/src/Faker/ORM/Propel2/EntityPopulator.php +++ /dev/null @@ -1,207 +0,0 @@ -class = $class; - } - - /** - * @return string - */ - public function getClass() - { - return $this->class; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - /** - * @return array - */ - public function guessColumnFormatters(\Faker\Generator $generator) - { - $formatters = []; - $class = $this->class; - $peerClass = $class::TABLE_MAP; - $tableMap = $peerClass::getTableMap(); - $nameGuesser = new \Faker\Guesser\Name($generator); - $columnTypeGuesser = new \Faker\ORM\Propel2\ColumnTypeGuesser($generator); - - foreach ($tableMap->getColumns() as $columnMap) { - // skip behavior columns, handled by modifiers - if ($this->isColumnBehavior($columnMap)) { - continue; - } - - if ($columnMap->isForeignKey()) { - $relatedClass = $columnMap->getRelation()->getForeignTable()->getClassname(); - $formatters[$columnMap->getPhpName()] = static function ($inserted) use ($relatedClass, $generator) { - $relatedClass = trim($relatedClass, '\\'); - - return isset($inserted[$relatedClass]) ? $generator->randomElement($inserted[$relatedClass]) : null; - }; - - continue; - } - - if ($columnMap->isPrimaryKey()) { - continue; - } - - if ($formatter = $nameGuesser->guessFormat($columnMap->getPhpName(), $columnMap->getSize())) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($columnMap)) { - $formatters[$columnMap->getPhpName()] = $formatter; - - continue; - } - } - - return $formatters; - } - - /** - * @return bool - */ - protected function isColumnBehavior(ColumnMap $columnMap) - { - foreach ($columnMap->getTable()->getBehaviors() as $name => $params) { - $columnName = Base::toLower($columnMap->getName()); - - switch ($name) { - case 'nested_set': - $columnNames = [$params['left_column'], $params['right_column'], $params['level_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - - case 'timestampable': - $columnNames = [$params['create_column'], $params['update_column']]; - - if (in_array($columnName, $columnNames, false)) { - return true; - } - - break; - } - } - - return false; - } - - public function setModifiers($modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith($modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessModifiers(\Faker\Generator $generator) - { - $modifiers = []; - $class = $this->class; - $peerClass = $class::TABLE_MAP; - $tableMap = $peerClass::getTableMap(); - - foreach ($tableMap->getBehaviors() as $name => $params) { - switch ($name) { - case 'nested_set': - $modifiers['nested_set'] = static function ($obj, $inserted) use ($class, $generator): void { - if (isset($inserted[$class])) { - $queryClass = $class . 'Query'; - $parent = $queryClass::create()->findPk($generator->randomElement($inserted[$class])); - $obj->insertAsLastChildOf($parent); - } else { - $obj->makeRoot(); - } - }; - - break; - - case 'sortable': - $modifiers['sortable'] = static function ($obj, $inserted) use ($class, $generator): void { - $obj->insertAtRank($generator->numberBetween(1, count($inserted[$class] ?? []) + 1)); - }; - - break; - } - } - - return $modifiers; - } - - /** - * Insert one new record using the Entity class. - */ - public function execute($con, $insertedEntities) - { - $obj = new $this->class(); - - foreach ($this->getColumnFormatters() as $column => $format) { - if (null !== $format) { - $obj->setByName($column, is_callable($format) ? $format($insertedEntities, $obj) : $format); - } - } - - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - $obj->save($con); - - return $obj->getPrimaryKey(); - } -} diff --git a/src/Faker/ORM/Propel2/Populator.php b/src/Faker/ORM/Propel2/Populator.php deleted file mode 100644 index 7698f80e9a..0000000000 --- a/src/Faker/ORM/Propel2/Populator.php +++ /dev/null @@ -1,93 +0,0 @@ -generator = $generator; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param mixed $entity A Propel ActiveRecord classname, or a \Faker\ORM\Propel2\EntityPopulator instance - * @param int $number The number of entities to populate - */ - public function addEntity($entity, $number, $customColumnFormatters = [], $customModifiers = []) - { - if (!$entity instanceof \Faker\ORM\Propel2\EntityPopulator) { - $entity = new \Faker\ORM\Propel2\EntityPopulator($entity); - } - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->setModifiers($entity->guessModifiers($this->generator)); - - if ($customModifiers) { - $entity->mergeModifiersWith($customModifiers); - } - $class = $entity->getClass(); - $this->entities[$class] = $entity; - $this->quantities[$class] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @param PropelPDO $con A Propel connection object - * - * @return array A list of the inserted PKs - */ - public function execute($con = null) - { - if (null === $con) { - $con = $this->getConnection(); - } - $isInstancePoolingEnabled = Propel::isInstancePoolingEnabled(); - Propel::disableInstancePooling(); - $insertedEntities = []; - $con->beginTransaction(); - - foreach ($this->quantities as $class => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$class][] = $this->entities[$class]->execute($con, $insertedEntities); - } - } - $con->commit(); - - if ($isInstancePoolingEnabled) { - Propel::enableInstancePooling(); - } - - return $insertedEntities; - } - - protected function getConnection() - { - // use the first connection available - $class = key($this->entities); - - if (!$class) { - throw new \RuntimeException('No class found from entities. Did you add entities to the Populator ?'); - } - - $peer = $class::TABLE_MAP; - - return Propel::getConnection($peer::DATABASE_NAME, ServiceContainerInterface::CONNECTION_WRITE); - } -} diff --git a/src/Faker/ORM/Spot/ColumnTypeGuesser.php b/src/Faker/ORM/Spot/ColumnTypeGuesser.php deleted file mode 100644 index f06ba048f3..0000000000 --- a/src/Faker/ORM/Spot/ColumnTypeGuesser.php +++ /dev/null @@ -1,84 +0,0 @@ -generator = $generator; - } - - /** - * @return \Closure|null - */ - public function guessFormat(array $field) - { - $generator = $this->generator; - $type = $field['type']; - - switch ($type) { - case 'boolean': - return static function () use ($generator) { - return $generator->boolean; - }; - - case 'decimal': - $size = $field['precision'] ?? 2; - - return static function () use ($generator, $size) { - return $generator->randomNumber($size + 2) / 100; - }; - - case 'smallint': - return static function () use ($generator) { - return $generator->numberBetween(0, 65535); - }; - - case 'integer': - return static function () use ($generator) { - return $generator->numberBetween(0, 2147483647); - }; - - case 'bigint': - return static function () use ($generator) { - return $generator->numberBetween(0, PHP_INT_MAX); - }; - - case 'float': - return static function () use ($generator) { - return $generator->randomFloat(null, 0, 4294967295); - }; - - case 'string': - $size = $field['length'] ?? 255; - - return static function () use ($generator, $size) { - return $generator->text($size); - }; - - case 'text': - return static function () use ($generator) { - return $generator->text; - }; - - case 'datetime': - case 'date': - case 'time': - return static function () use ($generator) { - return $generator->datetime; - }; - - default: - // no smart way to guess what the user expects here - return null; - } - } -} diff --git a/src/Faker/ORM/Spot/EntityPopulator.php b/src/Faker/ORM/Spot/EntityPopulator.php deleted file mode 100644 index b67ae25307..0000000000 --- a/src/Faker/ORM/Spot/EntityPopulator.php +++ /dev/null @@ -1,199 +0,0 @@ -mapper = $mapper; - $this->locator = $locator; - $this->useExistingData = $useExistingData; - } - - /** - * @return string - */ - public function getMapper() - { - return $this->mapper; - } - - public function setColumnFormatters($columnFormatters) - { - $this->columnFormatters = $columnFormatters; - } - - /** - * @return array - */ - public function getColumnFormatters() - { - return $this->columnFormatters; - } - - public function mergeColumnFormattersWith($columnFormatters) - { - $this->columnFormatters = array_merge($this->columnFormatters, $columnFormatters); - } - - public function setModifiers(array $modifiers) - { - $this->modifiers = $modifiers; - } - - /** - * @return array - */ - public function getModifiers() - { - return $this->modifiers; - } - - public function mergeModifiersWith(array $modifiers) - { - $this->modifiers = array_merge($this->modifiers, $modifiers); - } - - /** - * @return array - */ - public function guessColumnFormatters(Generator $generator) - { - $formatters = []; - $nameGuesser = new Name($generator); - $columnTypeGuesser = new ColumnTypeGuesser($generator); - $fields = $this->mapper->fields(); - - foreach ($fields as $fieldName => $field) { - if ($field['primary'] === true) { - continue; - } - - if ($formatter = $nameGuesser->guessFormat($fieldName)) { - $formatters[$fieldName] = $formatter; - - continue; - } - - if ($formatter = $columnTypeGuesser->guessFormat($field)) { - $formatters[$fieldName] = $formatter; - - continue; - } - } - $entityName = $this->mapper->entity(); - $entity = $this->mapper->build([]); - $relations = $entityName::relations($this->mapper, $entity); - - foreach ($relations as $relation) { - // We don't need any other relation here. - if ($relation instanceof BelongsTo) { - $fieldName = $relation->localKey(); - $entityName = $relation->entityName(); - $field = $fields[$fieldName]; - $required = $field['required']; - - $locator = $this->locator; - - $formatters[$fieldName] = function ($inserted) use ($required, $entityName, $locator, $generator) { - if (!empty($inserted[$entityName])) { - return $generator->randomElement($inserted[$entityName])->get('id'); - } - - if ($required && $this->useExistingData) { - // We did not add anything like this, but it's required, - // So let's find something existing in DB. - $mapper = $locator->mapper($entityName); - $records = $mapper->all()->limit(self::RELATED_FETCH_COUNT)->toArray(); - - if (empty($records)) { - return null; - } - - return $generator->randomElement($records)['id']; - } - - return null; - }; - } - } - - return $formatters; - } - - /** - * Insert one new record using the Entity class. - * - * @return string - */ - public function execute($insertedEntities) - { - $obj = $this->mapper->build([]); - - $this->fillColumns($obj, $insertedEntities); - $this->callMethods($obj, $insertedEntities); - - $this->mapper->insert($obj); - - return $obj; - } - - private function fillColumns($obj, $insertedEntities): void - { - foreach ($this->columnFormatters as $field => $format) { - if (null !== $format) { - $value = is_callable($format) ? $format($insertedEntities, $obj) : $format; - $obj->set($field, $value); - } - } - } - - private function callMethods($obj, $insertedEntities): void - { - foreach ($this->getModifiers() as $modifier) { - $modifier($obj, $insertedEntities); - } - } -} diff --git a/src/Faker/ORM/Spot/Populator.php b/src/Faker/ORM/Spot/Populator.php deleted file mode 100644 index b321f5c5a4..0000000000 --- a/src/Faker/ORM/Spot/Populator.php +++ /dev/null @@ -1,89 +0,0 @@ -generator = $generator; - $this->locator = $locator; - } - - /** - * Add an order for the generation of $number records for $entity. - * - * @param string $entityName Name of Entity object to generate - * @param int $number The number of entities to populate - * @param array $customColumnFormatters - * @param array $customModifiers - * @param bool $useExistingData Should we use existing rows (e.g. roles) to populate relations? - */ - public function addEntity( - $entityName, - $number, - $customColumnFormatters = [], - $customModifiers = [], - $useExistingData = false - ) { - $mapper = $this->locator->mapper($entityName); - - if (null === $mapper) { - throw new \InvalidArgumentException('No mapper can be found for entity ' . $entityName); - } - $entity = new EntityPopulator($mapper, $this->locator, $useExistingData); - - $entity->setColumnFormatters($entity->guessColumnFormatters($this->generator)); - - if ($customColumnFormatters) { - $entity->mergeColumnFormattersWith($customColumnFormatters); - } - $entity->mergeModifiersWith($customModifiers); - - $this->entities[$entityName] = $entity; - $this->quantities[$entityName] = $number; - } - - /** - * Populate the database using all the Entity classes previously added. - * - * @param Locator $locator A Spot locator - * - * @return array A list of the inserted PKs - */ - public function execute($locator = null) - { - if (null === $locator) { - $locator = $this->locator; - } - - if (null === $locator) { - throw new \InvalidArgumentException('No entity manager passed to Spot Populator.'); - } - - $insertedEntities = []; - - foreach ($this->quantities as $entityName => $number) { - for ($i = 0; $i < $number; ++$i) { - $insertedEntities[$entityName][] = $this->entities[$entityName]->execute( - $insertedEntities, - ); - } - } - - return $insertedEntities; - } -} diff --git a/test/Faker/ORM/Doctrine/ColumnTypeGuesserTest.php b/test/Faker/ORM/Doctrine/ColumnTypeGuesserTest.php deleted file mode 100644 index 5b105793b2..0000000000 --- a/test/Faker/ORM/Doctrine/ColumnTypeGuesserTest.php +++ /dev/null @@ -1,25 +0,0 @@ -faker); - // Mock ClassMetadata after autoload to test class alias - $classMetaData = $this->createMock('Doctrine\Common\Persistence\Mapping\ClassMetadata'); - $classMetaData->method('getTypeOfField')->with(self::anything())->willReturn('integer'); - - $fakerClosure = $columnTypeGuesser->guessFormat('test', $classMetaData); - self::assertIsNumeric($fakerClosure()); - } -} diff --git a/test/Faker/ORM/Doctrine/EntityPopulatorTest.php b/test/Faker/ORM/Doctrine/EntityPopulatorTest.php deleted file mode 100644 index a538785f59..0000000000 --- a/test/Faker/ORM/Doctrine/EntityPopulatorTest.php +++ /dev/null @@ -1,26 +0,0 @@ -createMock('Doctrine\Common\Persistence\Mapping\ClassMetadata'); - $classMetaData->method('getName')->willReturn('test'); - $entityPopulator = new EntityPopulator($classMetaData); - - self::assertSame('test', $entityPopulator->getClass()); - } -} diff --git a/test/Faker/ORM/Doctrine/PopulatorTest.php b/test/Faker/ORM/Doctrine/PopulatorTest.php deleted file mode 100644 index 34bfb4d8fa..0000000000 --- a/test/Faker/ORM/Doctrine/PopulatorTest.php +++ /dev/null @@ -1,23 +0,0 @@ -faker); - // Mock ObjectManager after autoload to test class alias - $objectManager = $this->createMock('Doctrine\Common\Persistence\ObjectManager'); - - self::assertEmpty($populator->execute($objectManager)); - } -} From 54aff8c7567345bffd8c3d00dc385eb1ae357941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 20 Sep 2023 12:38:24 +0200 Subject: [PATCH 193/229] Fix: Configure bamarni/composer-bin-plugin (#768) --- composer.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/composer.json b/composer.json index 9fc1068679..fce79b02e6 100644 --- a/composer.json +++ b/composer.json @@ -52,6 +52,10 @@ "sort-packages": true }, "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { "dev-main": "v1.21-dev" } From 44dc38cc8ed06a754eff33f932010bd483d95c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 20 Sep 2023 13:37:15 +0200 Subject: [PATCH 194/229] Enhancement: Inject services (#753) --- src/Faker/Container/Container.php | 2 +- src/Faker/Container/ContainerBuilder.php | 16 ++++++++++++---- src/Faker/Core/Barcode.php | 4 ++-- src/Faker/Core/Color.php | 4 ++-- src/Faker/Core/Coordinates.php | 4 ++-- src/Faker/Core/Uuid.php | 4 ++-- src/Faker/Core/Version.php | 4 ++-- test/Faker/Core/ColorTest.php | 21 +++++++++++---------- test/Faker/Core/UuidTest.php | 5 +++-- 9 files changed, 37 insertions(+), 27 deletions(-) diff --git a/src/Faker/Container/Container.php b/src/Faker/Container/Container.php index 9b361845f2..9460b17a4f 100644 --- a/src/Faker/Container/Container.php +++ b/src/Faker/Container/Container.php @@ -87,7 +87,7 @@ private function getService(string $id, $definition) { if (is_callable($definition)) { try { - return $definition(); + return $definition($this); } catch (\Throwable $e) { throw new ContainerException( sprintf('Error while invoking callable for "%s"', $id), diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Faker/Container/ContainerBuilder.php index f2545e944b..b345389df1 100644 --- a/src/Faker/Container/ContainerBuilder.php +++ b/src/Faker/Container/ContainerBuilder.php @@ -44,14 +44,22 @@ public function build(): ContainerInterface private static function defaultExtensions(): array { return [ - Extension\BarcodeExtension::class => Core\Barcode::class, + Extension\BarcodeExtension::class => static function (ContainerInterface $container): Extension\BarcodeExtension { + return new Core\Barcode($container->get(Extension\NumberExtension::class)); + }, Extension\BloodExtension::class => Core\Blood::class, - Extension\ColorExtension::class => Core\Color::class, + Extension\ColorExtension::class => static function (ContainerInterface $container): Extension\ColorExtension { + return new Core\Color($container->get(Extension\NumberExtension::class)); + }, Extension\DateTimeExtension::class => Core\DateTime::class, Extension\FileExtension::class => Core\File::class, Extension\NumberExtension::class => Core\Number::class, - Extension\UuidExtension::class => Core\Uuid::class, - Extension\VersionExtension::class => Core\Version::class, + Extension\VersionExtension::class => static function (ContainerInterface $container): Extension\VersionExtension { + return new Core\Version($container->get(Extension\NumberExtension::class)); + }, + Extension\UuidExtension::class => static function (ContainerInterface $container): Extension\UuidExtension { + return new Core\Uuid($container->get(Extension\NumberExtension::class)); + }, ]; } diff --git a/src/Faker/Core/Barcode.php b/src/Faker/Core/Barcode.php index a85420be90..4dc0d7d1ca 100644 --- a/src/Faker/Core/Barcode.php +++ b/src/Faker/Core/Barcode.php @@ -14,9 +14,9 @@ final class Barcode implements Extension\BarcodeExtension { private Extension\NumberExtension $numberExtension; - public function __construct(Extension\NumberExtension $numberExtension = null) + public function __construct(Extension\NumberExtension $numberExtension) { - $this->numberExtension = $numberExtension ?: new Number(); + $this->numberExtension = $numberExtension; } private function ean(int $length = 13): string diff --git a/src/Faker/Core/Color.php b/src/Faker/Core/Color.php index bd94819013..87a1b33af9 100644 --- a/src/Faker/Core/Color.php +++ b/src/Faker/Core/Color.php @@ -54,9 +54,9 @@ final class Color implements Extension\ColorExtension 'Turquoise', 'Violet', 'Wheat', 'White', 'WhiteSmoke', 'Yellow', 'YellowGreen', ]; - public function __construct(Extension\NumberExtension $numberExtension = null) + public function __construct(Extension\NumberExtension $numberExtension) { - $this->numberExtension = $numberExtension ?: new Number(); + $this->numberExtension = $numberExtension; } /** diff --git a/src/Faker/Core/Coordinates.php b/src/Faker/Core/Coordinates.php index 15b5492e17..267525985c 100644 --- a/src/Faker/Core/Coordinates.php +++ b/src/Faker/Core/Coordinates.php @@ -13,9 +13,9 @@ final class Coordinates implements Extension\Extension { private Extension\NumberExtension $numberExtension; - public function __construct(Extension\NumberExtension $numberExtension = null) + public function __construct(Extension\NumberExtension $numberExtension) { - $this->numberExtension = $numberExtension ?: new Number(); + $this->numberExtension = $numberExtension; } /** diff --git a/src/Faker/Core/Uuid.php b/src/Faker/Core/Uuid.php index d1db1b2292..47ebb4a4bf 100644 --- a/src/Faker/Core/Uuid.php +++ b/src/Faker/Core/Uuid.php @@ -11,10 +11,10 @@ final class Uuid implements Extension\UuidExtension { private Extension\NumberExtension $numberExtension; - public function __construct(Extension\NumberExtension $numberExtension = null) + public function __construct(Extension\NumberExtension $numberExtension) { - $this->numberExtension = $numberExtension ?: new Number(); + $this->numberExtension = $numberExtension; } public function uuid3(): string diff --git a/src/Faker/Core/Version.php b/src/Faker/Core/Version.php index 8863c480a2..e2de9c5eb7 100644 --- a/src/Faker/Core/Version.php +++ b/src/Faker/Core/Version.php @@ -18,10 +18,10 @@ final class Version implements Extension\VersionExtension */ private array $semverCommonPreReleaseIdentifiers = ['alpha', 'beta', 'rc']; - public function __construct(Extension\NumberExtension $numberExtension = null) + public function __construct(Extension\NumberExtension $numberExtension) { - $this->numberExtension = $numberExtension ?: new Number(); + $this->numberExtension = $numberExtension; } /** diff --git a/test/Faker/Core/ColorTest.php b/test/Faker/Core/ColorTest.php index 13183c89ec..b06bf255b5 100644 --- a/test/Faker/Core/ColorTest.php +++ b/test/Faker/Core/ColorTest.php @@ -5,45 +5,46 @@ namespace Faker\Test\Core; use Faker\Core\Color; +use Faker\Core\Number; use Faker\Test\TestCase; final class ColorTest extends TestCase { public function testHexColor(): void { - $color = new Color(); + $color = new Color(new Number()); self::assertMatchesRegularExpression('/^#[a-f0-9]{6}$/i', $color->hexColor()); } public function testSafeHexColor(): void { - $color = new Color(); + $color = new Color(new Number()); self::assertMatchesRegularExpression('/^#[a-f0-9]{6}$/i', $color->safeHexColor()); } public function testRgbColorAsArray(): void { - $color = new Color(); + $color = new Color(new Number()); self::assertCount(3, $color->rgbColorAsArray()); } public function testRgbColor(): void { - $color = new Color(); + $color = new Color(new Number()); $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; self::assertMatchesRegularExpression('/^' . $regexp . ',' . $regexp . ',' . $regexp . '$/i', $color->rgbColor()); } public function testRgbCssColor(): void { - $color = new Color(); + $color = new Color(new Number()); $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; self::assertMatchesRegularExpression('/^rgb\(' . $regexp . ',' . $regexp . ',' . $regexp . '\)$/i', $color->rgbCssColor()); } public function testRgbaCssColor(): void { - $color = new Color(); + $color = new Color(new Number()); $regexp = '([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])'; $regexpAlpha = '([01]?(\.\d+)?)'; self::assertMatchesRegularExpression('/^rgba\(' . $regexp . ',' . $regexp . ',' . $regexp . ',' . $regexpAlpha . '\)$/i', $color->rgbaCssColor()); @@ -51,19 +52,19 @@ public function testRgbaCssColor(): void public function testSafeColorName(): void { - $color = new Color(); + $color = new Color(new Number()); self::assertMatchesRegularExpression('/^[\w]+$/', $color->safeColorName()); } public function testColorName(): void { - $color = new Color(); + $color = new Color(new Number()); self::assertMatchesRegularExpression('/^[\w]+$/', $color->colorName()); } public function testHslColor(): void { - $color = new Color(); + $color = new Color(new Number()); $regexp360 = '(?:36[0]|3[0-5][0-9]|[12][0-9][0-9]|[1-9]?[0-9])'; $regexp100 = '(?:100|[1-9]?[0-9])'; self::assertMatchesRegularExpression('/^' . $regexp360 . ',' . $regexp100 . ',' . $regexp100 . '$/', $color->hslColor()); @@ -71,7 +72,7 @@ public function testHslColor(): void public function testHslColorArray(): void { - $color = new Color(); + $color = new Color(new Number()); self::assertCount(3, $color->hslColorAsArray()); } } diff --git a/test/Faker/Core/UuidTest.php b/test/Faker/Core/UuidTest.php index a0bedce026..03cae0b798 100644 --- a/test/Faker/Core/UuidTest.php +++ b/test/Faker/Core/UuidTest.php @@ -2,6 +2,7 @@ namespace Faker\Test\Core; +use Faker\Core\Number; use Faker\Core\Uuid; use Faker\Test\TestCase; @@ -9,14 +10,14 @@ final class UuidTest extends TestCase { public function testUuidReturnsUuid(): void { - $instance = new Uuid(); + $instance = new Uuid(new Number()); $uuid = $instance->uuid3(); self::assertTrue($this->isUuid($uuid)); } public function testUuidExpectedSeed(): void { - $instance = new Uuid(); + $instance = new Uuid(new Number()); if (pack('L', 0x6162797A) == pack('N', 0x6162797A)) { self::markTestSkipped('Big Endian'); From da6658f1c8ca344bee3ba94882a62c59b94df202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 20 Sep 2023 17:08:10 +0200 Subject: [PATCH 195/229] Enhancement: Add PHP version support policy (#752) --- CHANGELOG.md | 1 + README.md | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c96d6fd347..98fc9f9695 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Fixed polish license plates (#685) - Removed legacy autoloader (#762) - Removed functionality for populating ORM entities and models (#764) +- Added a PHP version support policy (#752) ## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) diff --git a/README.md b/README.md index 2c6a26843e..d09712ae15 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,10 @@ return static function (Config\RectorConfig $rectorConfig): void { Faker is released under the MIT License. See [`LICENSE`](LICENSE) for details. +## PHP Version Support Policy + +The maintainers of this package add support for a PHP version following its initial release and drop support for a PHP version one year after it has reached its end of security support. + ## Backward compatibility promise Faker is using [Semver](https://semver.org/). This means that versions are tagged From 67825a191b23c9170c9bedb0c4fe91c6266ba4bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Wed, 20 Sep 2023 17:32:14 +0200 Subject: [PATCH 196/229] Fix: Flatten directory structure (#773) --- composer.json | 5 +- phpstan-baseline.neon | 146 +++++++++--------- phpunit.xml.dist | 4 +- psalm.baseline.xml | 26 ++-- src/{Faker => }/Calculator/Ean.php | 0 src/{Faker => }/Calculator/Iban.php | 0 src/{Faker => }/Calculator/Inn.php | 0 src/{Faker => }/Calculator/Isbn.php | 0 src/{Faker => }/Calculator/Luhn.php | 0 src/{Faker => }/Calculator/TCNo.php | 0 src/{Faker => }/ChanceGenerator.php | 0 src/{Faker => }/Container/Container.php | 0 .../Container/ContainerBuilder.php | 0 .../Container/ContainerException.php | 0 .../Container/ContainerInterface.php | 0 .../Container/NotInContainerException.php | 0 src/{Faker => }/Core/Barcode.php | 0 src/{Faker => }/Core/Blood.php | 0 src/{Faker => }/Core/Color.php | 0 src/{Faker => }/Core/Coordinates.php | 0 src/{Faker => }/Core/DateTime.php | 0 src/{Faker => }/Core/File.php | 0 src/{Faker => }/Core/Number.php | 0 src/{Faker => }/Core/Uuid.php | 0 src/{Faker => }/Core/Version.php | 0 src/{Faker => }/DefaultGenerator.php | 0 src/{Faker => }/Documentor.php | 0 .../Extension/AddressExtension.php | 0 .../Extension/BarcodeExtension.php | 0 src/{Faker => }/Extension/BloodExtension.php | 0 src/{Faker => }/Extension/ColorExtension.php | 0 .../Extension/CompanyExtension.php | 0 .../Extension/CountryExtension.php | 0 .../Extension/DateTimeExtension.php | 0 src/{Faker => }/Extension/Extension.php | 0 .../Extension/ExtensionNotFound.php | 0 src/{Faker => }/Extension/FileExtension.php | 0 .../Extension/GeneratorAwareExtension.php | 0 .../GeneratorAwareExtensionTrait.php | 0 src/{Faker => }/Extension/Helper.php | 0 src/{Faker => }/Extension/NumberExtension.php | 0 src/{Faker => }/Extension/PersonExtension.php | 0 .../Extension/PhoneNumberExtension.php | 0 src/{Faker => }/Extension/UuidExtension.php | 0 .../Extension/VersionExtension.php | 0 src/{Faker => }/Factory.php | 0 src/{Faker => }/Generator.php | 0 src/{Faker => }/Provider/Address.php | 0 src/{Faker => }/Provider/Barcode.php | 0 src/{Faker => }/Provider/Base.php | 0 src/{Faker => }/Provider/Biased.php | 0 src/{Faker => }/Provider/Color.php | 0 src/{Faker => }/Provider/Company.php | 0 src/{Faker => }/Provider/DateTime.php | 0 src/{Faker => }/Provider/File.php | 0 src/{Faker => }/Provider/HtmlLorem.php | 0 src/{Faker => }/Provider/Image.php | 0 src/{Faker => }/Provider/Internet.php | 0 src/{Faker => }/Provider/Lorem.php | 0 src/{Faker => }/Provider/Medical.php | 0 src/{Faker => }/Provider/Miscellaneous.php | 0 src/{Faker => }/Provider/Payment.php | 0 src/{Faker => }/Provider/Person.php | 0 src/{Faker => }/Provider/PhoneNumber.php | 0 src/{Faker => }/Provider/Text.php | 0 src/{Faker => }/Provider/UserAgent.php | 0 src/{Faker => }/Provider/Uuid.php | 0 src/{Faker => }/Provider/ar_EG/Address.php | 0 src/{Faker => }/Provider/ar_EG/Color.php | 0 src/{Faker => }/Provider/ar_EG/Company.php | 0 src/{Faker => }/Provider/ar_EG/Internet.php | 0 src/{Faker => }/Provider/ar_EG/Payment.php | 0 src/{Faker => }/Provider/ar_EG/Person.php | 0 src/{Faker => }/Provider/ar_EG/Text.php | 0 src/{Faker => }/Provider/ar_JO/Address.php | 0 src/{Faker => }/Provider/ar_JO/Company.php | 0 src/{Faker => }/Provider/ar_JO/Internet.php | 0 src/{Faker => }/Provider/ar_JO/Person.php | 0 src/{Faker => }/Provider/ar_JO/Text.php | 0 src/{Faker => }/Provider/ar_SA/Address.php | 0 src/{Faker => }/Provider/ar_SA/Color.php | 0 src/{Faker => }/Provider/ar_SA/Company.php | 0 src/{Faker => }/Provider/ar_SA/Internet.php | 0 src/{Faker => }/Provider/ar_SA/Payment.php | 0 src/{Faker => }/Provider/ar_SA/Person.php | 0 src/{Faker => }/Provider/ar_SA/Text.php | 0 src/{Faker => }/Provider/at_AT/Payment.php | 0 src/{Faker => }/Provider/bg_BG/Internet.php | 0 src/{Faker => }/Provider/bg_BG/Payment.php | 0 src/{Faker => }/Provider/bg_BG/Person.php | 0 .../Provider/bg_BG/PhoneNumber.php | 0 src/{Faker => }/Provider/bn_BD/Address.php | 0 src/{Faker => }/Provider/bn_BD/Company.php | 0 src/{Faker => }/Provider/bn_BD/Person.php | 0 .../Provider/bn_BD/PhoneNumber.php | 0 src/{Faker => }/Provider/bn_BD/Utils.php | 0 src/{Faker => }/Provider/cs_CZ/Address.php | 0 src/{Faker => }/Provider/cs_CZ/Company.php | 0 src/{Faker => }/Provider/cs_CZ/DateTime.php | 0 src/{Faker => }/Provider/cs_CZ/Internet.php | 0 src/{Faker => }/Provider/cs_CZ/Payment.php | 0 src/{Faker => }/Provider/cs_CZ/Person.php | 0 .../Provider/cs_CZ/PhoneNumber.php | 0 src/{Faker => }/Provider/cs_CZ/Text.php | 0 src/{Faker => }/Provider/da_DK/Address.php | 0 src/{Faker => }/Provider/da_DK/Company.php | 0 src/{Faker => }/Provider/da_DK/Internet.php | 0 src/{Faker => }/Provider/da_DK/Payment.php | 0 src/{Faker => }/Provider/da_DK/Person.php | 0 .../Provider/da_DK/PhoneNumber.php | 0 src/{Faker => }/Provider/de_AT/Address.php | 0 src/{Faker => }/Provider/de_AT/Company.php | 0 src/{Faker => }/Provider/de_AT/Internet.php | 0 src/{Faker => }/Provider/de_AT/Payment.php | 0 src/{Faker => }/Provider/de_AT/Person.php | 0 .../Provider/de_AT/PhoneNumber.php | 0 src/{Faker => }/Provider/de_AT/Text.php | 0 src/{Faker => }/Provider/de_CH/Address.php | 0 src/{Faker => }/Provider/de_CH/Company.php | 0 src/{Faker => }/Provider/de_CH/Internet.php | 0 src/{Faker => }/Provider/de_CH/Payment.php | 0 src/{Faker => }/Provider/de_CH/Person.php | 0 .../Provider/de_CH/PhoneNumber.php | 0 src/{Faker => }/Provider/de_CH/Text.php | 0 src/{Faker => }/Provider/de_DE/Address.php | 0 src/{Faker => }/Provider/de_DE/Company.php | 0 src/{Faker => }/Provider/de_DE/Internet.php | 0 src/{Faker => }/Provider/de_DE/Payment.php | 0 src/{Faker => }/Provider/de_DE/Person.php | 0 .../Provider/de_DE/PhoneNumber.php | 0 src/{Faker => }/Provider/de_DE/Text.php | 0 src/{Faker => }/Provider/el_CY/Address.php | 0 src/{Faker => }/Provider/el_CY/Company.php | 0 src/{Faker => }/Provider/el_CY/Internet.php | 0 src/{Faker => }/Provider/el_CY/Payment.php | 0 src/{Faker => }/Provider/el_CY/Person.php | 0 .../Provider/el_CY/PhoneNumber.php | 0 src/{Faker => }/Provider/el_GR/Address.php | 0 src/{Faker => }/Provider/el_GR/Company.php | 0 src/{Faker => }/Provider/el_GR/Payment.php | 0 src/{Faker => }/Provider/el_GR/Person.php | 0 .../Provider/el_GR/PhoneNumber.php | 0 src/{Faker => }/Provider/el_GR/Text.php | 0 src/{Faker => }/Provider/en_AU/Address.php | 0 src/{Faker => }/Provider/en_AU/Internet.php | 0 .../Provider/en_AU/PhoneNumber.php | 0 src/{Faker => }/Provider/en_CA/Address.php | 0 .../Provider/en_CA/PhoneNumber.php | 0 src/{Faker => }/Provider/en_GB/Address.php | 0 src/{Faker => }/Provider/en_GB/Company.php | 0 src/{Faker => }/Provider/en_GB/Internet.php | 0 src/{Faker => }/Provider/en_GB/Payment.php | 0 src/{Faker => }/Provider/en_GB/Person.php | 0 .../Provider/en_GB/PhoneNumber.php | 0 src/{Faker => }/Provider/en_HK/Address.php | 0 src/{Faker => }/Provider/en_HK/Internet.php | 0 .../Provider/en_HK/PhoneNumber.php | 0 src/{Faker => }/Provider/en_IN/Address.php | 0 src/{Faker => }/Provider/en_IN/Internet.php | 0 src/{Faker => }/Provider/en_IN/Person.php | 0 .../Provider/en_IN/PhoneNumber.php | 0 src/{Faker => }/Provider/en_NG/Address.php | 0 src/{Faker => }/Provider/en_NG/Internet.php | 0 src/{Faker => }/Provider/en_NG/Person.php | 0 .../Provider/en_NG/PhoneNumber.php | 0 src/{Faker => }/Provider/en_NZ/Address.php | 0 src/{Faker => }/Provider/en_NZ/Internet.php | 0 .../Provider/en_NZ/PhoneNumber.php | 0 src/{Faker => }/Provider/en_PH/Address.php | 0 .../Provider/en_PH/PhoneNumber.php | 0 src/{Faker => }/Provider/en_SG/Address.php | 0 src/{Faker => }/Provider/en_SG/Person.php | 0 .../Provider/en_SG/PhoneNumber.php | 0 src/{Faker => }/Provider/en_UG/Address.php | 0 src/{Faker => }/Provider/en_UG/Internet.php | 0 src/{Faker => }/Provider/en_UG/Person.php | 0 .../Provider/en_UG/PhoneNumber.php | 0 src/{Faker => }/Provider/en_US/Address.php | 0 src/{Faker => }/Provider/en_US/Company.php | 0 src/{Faker => }/Provider/en_US/Payment.php | 0 src/{Faker => }/Provider/en_US/Person.php | 0 .../Provider/en_US/PhoneNumber.php | 0 src/{Faker => }/Provider/en_US/Text.php | 0 src/{Faker => }/Provider/en_ZA/Address.php | 0 src/{Faker => }/Provider/en_ZA/Company.php | 0 src/{Faker => }/Provider/en_ZA/Internet.php | 0 src/{Faker => }/Provider/en_ZA/Person.php | 0 .../Provider/en_ZA/PhoneNumber.php | 0 src/{Faker => }/Provider/es_AR/Address.php | 0 src/{Faker => }/Provider/es_AR/Company.php | 0 src/{Faker => }/Provider/es_AR/Person.php | 0 .../Provider/es_AR/PhoneNumber.php | 0 src/{Faker => }/Provider/es_ES/Address.php | 0 src/{Faker => }/Provider/es_ES/Color.php | 0 src/{Faker => }/Provider/es_ES/Company.php | 0 src/{Faker => }/Provider/es_ES/Internet.php | 0 src/{Faker => }/Provider/es_ES/Payment.php | 0 src/{Faker => }/Provider/es_ES/Person.php | 0 .../Provider/es_ES/PhoneNumber.php | 0 src/{Faker => }/Provider/es_ES/Text.php | 0 src/{Faker => }/Provider/es_PE/Address.php | 0 src/{Faker => }/Provider/es_PE/Company.php | 0 src/{Faker => }/Provider/es_PE/Person.php | 0 .../Provider/es_PE/PhoneNumber.php | 0 src/{Faker => }/Provider/es_VE/Address.php | 0 src/{Faker => }/Provider/es_VE/Company.php | 0 src/{Faker => }/Provider/es_VE/Internet.php | 0 src/{Faker => }/Provider/es_VE/Person.php | 0 .../Provider/es_VE/PhoneNumber.php | 0 src/{Faker => }/Provider/et_EE/Person.php | 0 src/{Faker => }/Provider/fa_IR/Address.php | 0 src/{Faker => }/Provider/fa_IR/Company.php | 0 src/{Faker => }/Provider/fa_IR/Internet.php | 0 src/{Faker => }/Provider/fa_IR/Person.php | 0 .../Provider/fa_IR/PhoneNumber.php | 0 src/{Faker => }/Provider/fa_IR/Text.php | 0 src/{Faker => }/Provider/fi_FI/Address.php | 0 src/{Faker => }/Provider/fi_FI/Company.php | 0 src/{Faker => }/Provider/fi_FI/Internet.php | 0 src/{Faker => }/Provider/fi_FI/Payment.php | 0 src/{Faker => }/Provider/fi_FI/Person.php | 0 .../Provider/fi_FI/PhoneNumber.php | 0 src/{Faker => }/Provider/fr_BE/Address.php | 0 src/{Faker => }/Provider/fr_BE/Color.php | 0 src/{Faker => }/Provider/fr_BE/Company.php | 0 src/{Faker => }/Provider/fr_BE/Internet.php | 0 src/{Faker => }/Provider/fr_BE/Payment.php | 0 src/{Faker => }/Provider/fr_BE/Person.php | 0 .../Provider/fr_BE/PhoneNumber.php | 0 src/{Faker => }/Provider/fr_CA/Address.php | 0 src/{Faker => }/Provider/fr_CA/Color.php | 0 src/{Faker => }/Provider/fr_CA/Company.php | 0 src/{Faker => }/Provider/fr_CA/Person.php | 0 src/{Faker => }/Provider/fr_CA/Text.php | 0 src/{Faker => }/Provider/fr_CH/Address.php | 0 src/{Faker => }/Provider/fr_CH/Color.php | 0 src/{Faker => }/Provider/fr_CH/Company.php | 0 src/{Faker => }/Provider/fr_CH/Internet.php | 0 src/{Faker => }/Provider/fr_CH/Payment.php | 0 src/{Faker => }/Provider/fr_CH/Person.php | 0 .../Provider/fr_CH/PhoneNumber.php | 0 src/{Faker => }/Provider/fr_CH/Text.php | 0 src/{Faker => }/Provider/fr_FR/Address.php | 0 src/{Faker => }/Provider/fr_FR/Color.php | 0 src/{Faker => }/Provider/fr_FR/Company.php | 0 src/{Faker => }/Provider/fr_FR/Internet.php | 0 src/{Faker => }/Provider/fr_FR/Payment.php | 0 src/{Faker => }/Provider/fr_FR/Person.php | 0 .../Provider/fr_FR/PhoneNumber.php | 0 src/{Faker => }/Provider/fr_FR/Text.php | 0 src/{Faker => }/Provider/he_IL/Address.php | 0 src/{Faker => }/Provider/he_IL/Company.php | 0 src/{Faker => }/Provider/he_IL/Payment.php | 0 src/{Faker => }/Provider/he_IL/Person.php | 0 .../Provider/he_IL/PhoneNumber.php | 0 src/{Faker => }/Provider/hr_HR/Address.php | 0 src/{Faker => }/Provider/hr_HR/Company.php | 0 src/{Faker => }/Provider/hr_HR/Payment.php | 0 src/{Faker => }/Provider/hr_HR/Person.php | 0 .../Provider/hr_HR/PhoneNumber.php | 0 src/{Faker => }/Provider/hu_HU/Address.php | 0 src/{Faker => }/Provider/hu_HU/Company.php | 0 src/{Faker => }/Provider/hu_HU/Payment.php | 0 src/{Faker => }/Provider/hu_HU/Person.php | 0 .../Provider/hu_HU/PhoneNumber.php | 0 src/{Faker => }/Provider/hu_HU/Text.php | 0 src/{Faker => }/Provider/hy_AM/Address.php | 0 src/{Faker => }/Provider/hy_AM/Color.php | 0 src/{Faker => }/Provider/hy_AM/Company.php | 0 src/{Faker => }/Provider/hy_AM/Internet.php | 0 src/{Faker => }/Provider/hy_AM/Person.php | 0 .../Provider/hy_AM/PhoneNumber.php | 0 src/{Faker => }/Provider/id_ID/Address.php | 0 src/{Faker => }/Provider/id_ID/Color.php | 0 src/{Faker => }/Provider/id_ID/Company.php | 0 src/{Faker => }/Provider/id_ID/Internet.php | 0 src/{Faker => }/Provider/id_ID/Person.php | 0 .../Provider/id_ID/PhoneNumber.php | 0 src/{Faker => }/Provider/is_IS/Address.php | 0 src/{Faker => }/Provider/is_IS/Company.php | 0 src/{Faker => }/Provider/is_IS/Internet.php | 0 src/{Faker => }/Provider/is_IS/Payment.php | 0 src/{Faker => }/Provider/is_IS/Person.php | 0 .../Provider/is_IS/PhoneNumber.php | 0 src/{Faker => }/Provider/it_CH/Address.php | 0 src/{Faker => }/Provider/it_CH/Company.php | 0 src/{Faker => }/Provider/it_CH/Internet.php | 0 src/{Faker => }/Provider/it_CH/Payment.php | 0 src/{Faker => }/Provider/it_CH/Person.php | 0 .../Provider/it_CH/PhoneNumber.php | 0 src/{Faker => }/Provider/it_CH/Text.php | 0 src/{Faker => }/Provider/it_IT/Address.php | 0 src/{Faker => }/Provider/it_IT/Company.php | 0 src/{Faker => }/Provider/it_IT/Internet.php | 0 src/{Faker => }/Provider/it_IT/Payment.php | 0 src/{Faker => }/Provider/it_IT/Person.php | 0 .../Provider/it_IT/PhoneNumber.php | 0 src/{Faker => }/Provider/it_IT/Text.php | 0 src/{Faker => }/Provider/ja_JP/Address.php | 0 src/{Faker => }/Provider/ja_JP/Company.php | 0 src/{Faker => }/Provider/ja_JP/Internet.php | 0 src/{Faker => }/Provider/ja_JP/Person.php | 0 .../Provider/ja_JP/PhoneNumber.php | 0 src/{Faker => }/Provider/ja_JP/Text.php | 0 src/{Faker => }/Provider/ka_GE/Address.php | 0 src/{Faker => }/Provider/ka_GE/Color.php | 0 src/{Faker => }/Provider/ka_GE/Company.php | 0 src/{Faker => }/Provider/ka_GE/DateTime.php | 0 src/{Faker => }/Provider/ka_GE/Internet.php | 0 src/{Faker => }/Provider/ka_GE/Payment.php | 0 src/{Faker => }/Provider/ka_GE/Person.php | 0 .../Provider/ka_GE/PhoneNumber.php | 0 src/{Faker => }/Provider/ka_GE/Text.php | 0 src/{Faker => }/Provider/kk_KZ/Address.php | 0 src/{Faker => }/Provider/kk_KZ/Color.php | 0 src/{Faker => }/Provider/kk_KZ/Company.php | 0 src/{Faker => }/Provider/kk_KZ/Internet.php | 0 src/{Faker => }/Provider/kk_KZ/Payment.php | 0 src/{Faker => }/Provider/kk_KZ/Person.php | 0 .../Provider/kk_KZ/PhoneNumber.php | 0 src/{Faker => }/Provider/kk_KZ/Text.php | 0 src/{Faker => }/Provider/ko_KR/Address.php | 0 src/{Faker => }/Provider/ko_KR/Company.php | 0 src/{Faker => }/Provider/ko_KR/Internet.php | 0 src/{Faker => }/Provider/ko_KR/Person.php | 0 .../Provider/ko_KR/PhoneNumber.php | 0 src/{Faker => }/Provider/ko_KR/Text.php | 0 src/{Faker => }/Provider/lt_LT/Address.php | 0 src/{Faker => }/Provider/lt_LT/Company.php | 0 src/{Faker => }/Provider/lt_LT/Internet.php | 0 src/{Faker => }/Provider/lt_LT/Payment.php | 0 src/{Faker => }/Provider/lt_LT/Person.php | 0 .../Provider/lt_LT/PhoneNumber.php | 0 src/{Faker => }/Provider/lv_LV/Address.php | 0 src/{Faker => }/Provider/lv_LV/Color.php | 0 src/{Faker => }/Provider/lv_LV/Internet.php | 0 src/{Faker => }/Provider/lv_LV/Payment.php | 0 src/{Faker => }/Provider/lv_LV/Person.php | 0 .../Provider/lv_LV/PhoneNumber.php | 0 src/{Faker => }/Provider/me_ME/Address.php | 0 src/{Faker => }/Provider/me_ME/Company.php | 0 src/{Faker => }/Provider/me_ME/Payment.php | 0 src/{Faker => }/Provider/me_ME/Person.php | 0 .../Provider/me_ME/PhoneNumber.php | 0 src/{Faker => }/Provider/mn_MN/Person.php | 0 .../Provider/mn_MN/PhoneNumber.php | 0 src/{Faker => }/Provider/ms_MY/Address.php | 0 src/{Faker => }/Provider/ms_MY/Company.php | 0 .../Provider/ms_MY/Miscellaneous.php | 0 src/{Faker => }/Provider/ms_MY/Payment.php | 0 src/{Faker => }/Provider/ms_MY/Person.php | 0 .../Provider/ms_MY/PhoneNumber.php | 0 src/{Faker => }/Provider/nb_NO/Address.php | 0 src/{Faker => }/Provider/nb_NO/Company.php | 0 src/{Faker => }/Provider/nb_NO/Payment.php | 0 src/{Faker => }/Provider/nb_NO/Person.php | 0 .../Provider/nb_NO/PhoneNumber.php | 0 src/{Faker => }/Provider/ne_NP/Address.php | 0 src/{Faker => }/Provider/ne_NP/Internet.php | 0 src/{Faker => }/Provider/ne_NP/Payment.php | 0 src/{Faker => }/Provider/ne_NP/Person.php | 0 .../Provider/ne_NP/PhoneNumber.php | 0 src/{Faker => }/Provider/nl_BE/Address.php | 0 src/{Faker => }/Provider/nl_BE/Company.php | 0 src/{Faker => }/Provider/nl_BE/Internet.php | 0 src/{Faker => }/Provider/nl_BE/Payment.php | 0 src/{Faker => }/Provider/nl_BE/Person.php | 0 .../Provider/nl_BE/PhoneNumber.php | 0 src/{Faker => }/Provider/nl_BE/Text.php | 0 src/{Faker => }/Provider/nl_NL/Address.php | 0 src/{Faker => }/Provider/nl_NL/Color.php | 0 src/{Faker => }/Provider/nl_NL/Company.php | 0 src/{Faker => }/Provider/nl_NL/Internet.php | 0 src/{Faker => }/Provider/nl_NL/Payment.php | 0 src/{Faker => }/Provider/nl_NL/Person.php | 0 .../Provider/nl_NL/PhoneNumber.php | 0 src/{Faker => }/Provider/nl_NL/Text.php | 0 src/{Faker => }/Provider/pl_PL/Address.php | 0 src/{Faker => }/Provider/pl_PL/Color.php | 0 src/{Faker => }/Provider/pl_PL/Company.php | 0 src/{Faker => }/Provider/pl_PL/Internet.php | 0 .../Provider/pl_PL/LicensePlate.php | 0 src/{Faker => }/Provider/pl_PL/Payment.php | 0 src/{Faker => }/Provider/pl_PL/Person.php | 0 .../Provider/pl_PL/PhoneNumber.php | 0 src/{Faker => }/Provider/pl_PL/Text.php | 0 src/{Faker => }/Provider/pt_BR/Address.php | 0 src/{Faker => }/Provider/pt_BR/Company.php | 0 src/{Faker => }/Provider/pt_BR/Internet.php | 0 src/{Faker => }/Provider/pt_BR/Payment.php | 0 src/{Faker => }/Provider/pt_BR/Person.php | 0 .../Provider/pt_BR/PhoneNumber.php | 0 src/{Faker => }/Provider/pt_BR/Text.php | 0 .../Provider/pt_BR/check_digit.php | 0 src/{Faker => }/Provider/pt_PT/Address.php | 0 src/{Faker => }/Provider/pt_PT/Company.php | 0 src/{Faker => }/Provider/pt_PT/Internet.php | 0 src/{Faker => }/Provider/pt_PT/Payment.php | 0 src/{Faker => }/Provider/pt_PT/Person.php | 0 .../Provider/pt_PT/PhoneNumber.php | 0 src/{Faker => }/Provider/ro_MD/Address.php | 0 src/{Faker => }/Provider/ro_MD/Payment.php | 0 src/{Faker => }/Provider/ro_MD/Person.php | 0 .../Provider/ro_MD/PhoneNumber.php | 0 src/{Faker => }/Provider/ro_MD/Text.php | 0 src/{Faker => }/Provider/ro_RO/Address.php | 0 src/{Faker => }/Provider/ro_RO/Payment.php | 0 src/{Faker => }/Provider/ro_RO/Person.php | 0 .../Provider/ro_RO/PhoneNumber.php | 0 src/{Faker => }/Provider/ro_RO/Text.php | 0 src/{Faker => }/Provider/ru_RU/Address.php | 0 src/{Faker => }/Provider/ru_RU/Color.php | 0 src/{Faker => }/Provider/ru_RU/Company.php | 0 src/{Faker => }/Provider/ru_RU/Internet.php | 0 src/{Faker => }/Provider/ru_RU/Payment.php | 0 src/{Faker => }/Provider/ru_RU/Person.php | 0 .../Provider/ru_RU/PhoneNumber.php | 0 src/{Faker => }/Provider/ru_RU/Text.php | 0 src/{Faker => }/Provider/sk_SK/Address.php | 0 src/{Faker => }/Provider/sk_SK/Company.php | 0 src/{Faker => }/Provider/sk_SK/Internet.php | 0 src/{Faker => }/Provider/sk_SK/Payment.php | 0 src/{Faker => }/Provider/sk_SK/Person.php | 0 .../Provider/sk_SK/PhoneNumber.php | 0 src/{Faker => }/Provider/sl_SI/Address.php | 0 src/{Faker => }/Provider/sl_SI/Company.php | 0 src/{Faker => }/Provider/sl_SI/Internet.php | 0 src/{Faker => }/Provider/sl_SI/Payment.php | 0 src/{Faker => }/Provider/sl_SI/Person.php | 0 .../Provider/sl_SI/PhoneNumber.php | 0 .../Provider/sr_Cyrl_RS/Address.php | 0 .../Provider/sr_Cyrl_RS/Payment.php | 0 .../Provider/sr_Cyrl_RS/Person.php | 0 .../Provider/sr_Latn_RS/Address.php | 0 .../Provider/sr_Latn_RS/Payment.php | 0 .../Provider/sr_Latn_RS/Person.php | 0 src/{Faker => }/Provider/sr_RS/Address.php | 0 src/{Faker => }/Provider/sr_RS/Payment.php | 0 src/{Faker => }/Provider/sr_RS/Person.php | 0 src/{Faker => }/Provider/sv_SE/Address.php | 0 src/{Faker => }/Provider/sv_SE/Company.php | 0 .../Provider/sv_SE/Municipality.php | 0 src/{Faker => }/Provider/sv_SE/Payment.php | 0 src/{Faker => }/Provider/sv_SE/Person.php | 0 .../Provider/sv_SE/PhoneNumber.php | 0 src/{Faker => }/Provider/th_TH/Address.php | 0 src/{Faker => }/Provider/th_TH/Color.php | 0 src/{Faker => }/Provider/th_TH/Company.php | 0 src/{Faker => }/Provider/th_TH/Internet.php | 0 src/{Faker => }/Provider/th_TH/Payment.php | 0 src/{Faker => }/Provider/th_TH/Person.php | 0 .../Provider/th_TH/PhoneNumber.php | 0 src/{Faker => }/Provider/tr_TR/Address.php | 0 src/{Faker => }/Provider/tr_TR/Color.php | 0 src/{Faker => }/Provider/tr_TR/Company.php | 0 src/{Faker => }/Provider/tr_TR/DateTime.php | 0 src/{Faker => }/Provider/tr_TR/Internet.php | 0 src/{Faker => }/Provider/tr_TR/Payment.php | 0 src/{Faker => }/Provider/tr_TR/Person.php | 0 .../Provider/tr_TR/PhoneNumber.php | 0 src/{Faker => }/Provider/uk_UA/Address.php | 0 src/{Faker => }/Provider/uk_UA/Color.php | 0 src/{Faker => }/Provider/uk_UA/Company.php | 0 src/{Faker => }/Provider/uk_UA/Internet.php | 0 src/{Faker => }/Provider/uk_UA/Payment.php | 0 src/{Faker => }/Provider/uk_UA/Person.php | 0 .../Provider/uk_UA/PhoneNumber.php | 0 src/{Faker => }/Provider/uk_UA/Text.php | 0 src/{Faker => }/Provider/vi_VN/Address.php | 0 src/{Faker => }/Provider/vi_VN/Color.php | 0 src/{Faker => }/Provider/vi_VN/Internet.php | 0 src/{Faker => }/Provider/vi_VN/Person.php | 0 .../Provider/vi_VN/PhoneNumber.php | 0 src/{Faker => }/Provider/zh_CN/Address.php | 0 src/{Faker => }/Provider/zh_CN/Color.php | 0 src/{Faker => }/Provider/zh_CN/Company.php | 0 src/{Faker => }/Provider/zh_CN/DateTime.php | 0 src/{Faker => }/Provider/zh_CN/Internet.php | 0 src/{Faker => }/Provider/zh_CN/Payment.php | 0 src/{Faker => }/Provider/zh_CN/Person.php | 0 .../Provider/zh_CN/PhoneNumber.php | 0 src/{Faker => }/Provider/zh_TW/Address.php | 0 src/{Faker => }/Provider/zh_TW/Color.php | 0 src/{Faker => }/Provider/zh_TW/Company.php | 0 src/{Faker => }/Provider/zh_TW/DateTime.php | 0 src/{Faker => }/Provider/zh_TW/Internet.php | 0 src/{Faker => }/Provider/zh_TW/Payment.php | 0 src/{Faker => }/Provider/zh_TW/Person.php | 0 .../Provider/zh_TW/PhoneNumber.php | 0 src/{Faker => }/Provider/zh_TW/Text.php | 0 src/{Faker => }/UniqueGenerator.php | 0 src/{Faker => }/ValidGenerator.php | 0 test/{Faker => }/Calculator/EanTest.php | 0 test/{Faker => }/Calculator/IbanTest.php | 0 test/{Faker => }/Calculator/IsbnTest.php | 0 test/{Faker => }/Calculator/LuhnTest.php | 0 test/{Faker => }/Core/BarcodeTest.php | 0 test/{Faker => }/Core/BloodTest.php | 0 test/{Faker => }/Core/ColorTest.php | 0 test/{Faker => }/Core/DateTimeTest.php | 0 test/{Faker => }/Core/NumberTest.php | 0 test/{Faker => }/Core/UuidTest.php | 0 test/{Faker => }/Core/VersionTest.php | 0 test/{Faker => }/DefaultGeneratorTest.php | 0 .../Extension/ContainerBuilderTest.php | 0 test/{Faker => }/Extension/ContainerTest.php | 0 .../Extension/GeneratorAwareExtensionTest.php | 0 test/{Faker => }/Extension/HelperTest.php | 0 test/{Faker => }/GeneratorTest.php | 0 test/{Faker => }/Provider/AddressTest.php | 0 test/{Faker => }/Provider/BarcodeTest.php | 0 test/{Faker => }/Provider/BaseTest.php | 0 test/{Faker => }/Provider/BiasedTest.php | 0 test/{Faker => }/Provider/ColorTest.php | 0 test/{Faker => }/Provider/CompanyTest.php | 0 test/{Faker => }/Provider/DateTimeTest.php | 0 test/{Faker => }/Provider/HtmlLoremTest.php | 0 test/{Faker => }/Provider/ImageTest.php | 0 test/{Faker => }/Provider/InternetTest.php | 0 .../{Faker => }/Provider/LocalizationTest.php | 0 test/{Faker => }/Provider/LoremTest.php | 0 test/{Faker => }/Provider/MedicalTest.php | 0 .../Provider/MiscellaneousTest.php | 0 test/{Faker => }/Provider/PaymentTest.php | 0 test/{Faker => }/Provider/PersonTest.php | 0 test/{Faker => }/Provider/PhoneNumberTest.php | 0 .../Provider/ProviderOverrideTest.php | 0 test/{Faker => }/Provider/TextTest.php | 0 test/{Faker => }/Provider/UserAgentTest.php | 0 test/{Faker => }/Provider/UuidTest.php | 0 .../Provider/ar_EG/CompanyTest.php | 0 .../Provider/ar_EG/InternetTest.php | 0 .../{Faker => }/Provider/ar_EG/PersonTest.php | 0 test/{Faker => }/Provider/ar_EG/TextTest.php | 0 .../Provider/ar_JO/InternetTest.php | 0 .../Provider/ar_SA/CompanyTest.php | 0 .../Provider/ar_SA/InternetTest.php | 0 .../{Faker => }/Provider/ar_SA/PersonTest.php | 0 .../Provider/bg_BG/PaymentTest.php | 0 .../{Faker => }/Provider/bn_BD/PersonTest.php | 0 .../{Faker => }/Provider/cs_CZ/PersonTest.php | 0 .../Provider/da_DK/InternetTest.php | 0 .../Provider/de_AT/AddressTest.php | 0 .../Provider/de_AT/InternetTest.php | 0 .../Provider/de_AT/PaymentTest.php | 0 .../{Faker => }/Provider/de_AT/PersonTest.php | 0 .../Provider/de_AT/PhoneNumberTest.php | 0 .../Provider/de_CH/AddressTest.php | 0 .../Provider/de_CH/InternetTest.php | 0 .../{Faker => }/Provider/de_CH/PersonTest.php | 0 .../Provider/de_CH/PhoneNumberTest.php | 0 .../Provider/de_DE/InternetTest.php | 0 .../Provider/de_DE/PhoneNumberTest.php | 0 .../Provider/el_GR/PhoneNumberTest.php | 0 test/{Faker => }/Provider/el_GR/TextTest.php | 0 .../Provider/en_AU/AddressTest.php | 0 .../Provider/en_CA/AddressTest.php | 0 .../Provider/en_GB/AddressTest.php | 0 .../Provider/en_GB/CompanyTest.php | 0 .../{Faker => }/Provider/en_GB/PersonTest.php | 0 .../Provider/en_GB/PhoneNumberTest.php | 0 .../Provider/en_IN/AddressTest.php | 0 .../Provider/en_NG/AddressTest.php | 0 .../Provider/en_NG/InternetTest.php | 0 .../{Faker => }/Provider/en_NG/PersonTest.php | 0 .../Provider/en_NG/PhoneNumberTest.php | 0 .../Provider/en_NZ/PhoneNumberTest.php | 0 .../Provider/en_PH/AddressTest.php | 0 .../Provider/en_SG/AddressTest.php | 0 .../{Faker => }/Provider/en_SG/PersonTest.php | 0 .../Provider/en_SG/PhoneNumberTest.php | 0 .../Provider/en_UG/AddressTest.php | 0 .../Provider/en_US/CompanyTest.php | 0 .../Provider/en_US/PaymentTest.php | 0 .../{Faker => }/Provider/en_US/PersonTest.php | 0 .../Provider/en_US/PhoneNumberTest.php | 0 .../Provider/en_ZA/CompanyTest.php | 0 .../Provider/en_ZA/InternetTest.php | 0 .../{Faker => }/Provider/en_ZA/PersonTest.php | 0 .../Provider/en_ZA/PhoneNumberTest.php | 0 .../Provider/es_ES/PaymentTest.php | 0 .../{Faker => }/Provider/es_ES/PersonTest.php | 0 .../Provider/es_ES/PhoneNumberTest.php | 0 test/{Faker => }/Provider/es_ES/TextTest.php | 0 .../Provider/es_PE/CompanyTest.php | 0 .../{Faker => }/Provider/es_PE/PersonTest.php | 0 .../Provider/es_VE/CompanyTest.php | 0 .../{Faker => }/Provider/es_VE/PersonTest.php | 0 .../{Faker => }/Provider/fa_IR/PersonTest.php | 0 .../Provider/fi_FI/InternetTest.php | 0 .../{Faker => }/Provider/fi_FI/PersonTest.php | 0 .../Provider/fr_BE/PaymentTest.php | 0 .../Provider/fr_CH/AddressTest.php | 0 .../Provider/fr_CH/InternetTest.php | 0 .../{Faker => }/Provider/fr_CH/PersonTest.php | 0 .../Provider/fr_CH/PhoneNumberTest.php | 0 .../Provider/fr_FR/AddressTest.php | 0 test/{Faker => }/Provider/fr_FR/ColorTest.php | 0 .../Provider/fr_FR/CompanyTest.php | 0 .../Provider/fr_FR/PaymentTest.php | 0 .../{Faker => }/Provider/fr_FR/PersonTest.php | 0 .../Provider/fr_FR/PhoneNumberTest.php | 0 test/{Faker => }/Provider/fr_FR/TextTest.php | 0 .../{Faker => }/Provider/hu_HU/PersonTest.php | 0 .../{Faker => }/Provider/id_ID/PersonTest.php | 0 .../Provider/it_CH/AddressTest.php | 0 .../Provider/it_CH/InternetTest.php | 0 .../{Faker => }/Provider/it_CH/PersonTest.php | 0 .../Provider/it_CH/PhoneNumberTest.php | 0 .../Provider/it_IT/CompanyTest.php | 0 .../{Faker => }/Provider/it_IT/PersonTest.php | 0 .../Provider/ja_JP/InternetTest.php | 0 .../{Faker => }/Provider/ja_JP/PersonTest.php | 0 .../Provider/ja_JP/PhoneNumberTest.php | 0 test/{Faker => }/Provider/ka_GE/TextTest.php | 0 .../Provider/kk_KZ/CompanyTest.php | 0 .../{Faker => }/Provider/kk_KZ/PersonTest.php | 0 test/{Faker => }/Provider/kk_KZ/TextTest.php | 0 test/{Faker => }/Provider/ko_KR/TextTest.php | 0 .../Provider/lt_LT/AddressTest.php | 0 .../Provider/lv_LV/AddressTest.php | 0 .../{Faker => }/Provider/lv_LV/PersonTest.php | 0 .../{Faker => }/Provider/mn_MN/PersonTest.php | 0 .../{Faker => }/Provider/ms_MY/PersonTest.php | 0 .../Provider/nb_NO/PhoneNumberTest.php | 0 .../Provider/ne_NP/PaymentTest.php | 0 .../Provider/nl_BE/PaymentTest.php | 0 .../{Faker => }/Provider/nl_BE/PersonTest.php | 0 .../Provider/nl_NL/CompanyTest.php | 0 .../{Faker => }/Provider/nl_NL/PersonTest.php | 0 .../Provider/pl_PL/AddressTest.php | 0 test/{Faker => }/Provider/pl_PL/ColorTest.php | 0 .../Provider/pl_PL/LicensePlateTest.php | 0 .../{Faker => }/Provider/pl_PL/PersonTest.php | 0 .../Provider/pt_BR/CompanyTest.php | 0 .../{Faker => }/Provider/pt_BR/PersonTest.php | 0 test/{Faker => }/Provider/pt_BR/TextTest.php | 0 .../Provider/pt_PT/AddressTest.php | 0 .../{Faker => }/Provider/pt_PT/PersonTest.php | 0 .../Provider/pt_PT/PhoneNumberTest.php | 0 .../{Faker => }/Provider/ro_RO/PersonTest.php | 0 .../Provider/ro_RO/PhoneNumberTest.php | 0 .../Provider/ru_RU/CompanyTest.php | 0 .../{Faker => }/Provider/ru_RU/PersonTest.php | 0 test/{Faker => }/Provider/ru_RU/TextTest.php | 0 .../Provider/sv_SE/MunicipalityTest.php | 0 .../{Faker => }/Provider/sv_SE/PersonTest.php | 0 .../Provider/sv_SE/PhoneNumberTest.php | 0 .../Provider/tr_TR/CompanyTest.php | 0 .../Provider/tr_TR/PaymentTest.php | 0 .../{Faker => }/Provider/tr_TR/PersonTest.php | 0 .../Provider/tr_TR/PhoneNumberTest.php | 0 .../Provider/uk_UA/AddressTest.php | 0 .../{Faker => }/Provider/uk_UA/PersonTest.php | 0 .../Provider/uk_UA/PhoneNumberTest.php | 0 .../Provider/zh_TW/CompanyTest.php | 0 .../{Faker => }/Provider/zh_TW/PersonTest.php | 0 test/{Faker => }/Provider/zh_TW/TextTest.php | 0 test/{Faker => }/TestCase.php | 0 test/{Faker => }/UniqueGeneratorTest.php | 0 test/{Faker => }/ValidGeneratorTest.php | 0 661 files changed, 90 insertions(+), 91 deletions(-) rename src/{Faker => }/Calculator/Ean.php (100%) rename src/{Faker => }/Calculator/Iban.php (100%) rename src/{Faker => }/Calculator/Inn.php (100%) rename src/{Faker => }/Calculator/Isbn.php (100%) rename src/{Faker => }/Calculator/Luhn.php (100%) rename src/{Faker => }/Calculator/TCNo.php (100%) rename src/{Faker => }/ChanceGenerator.php (100%) rename src/{Faker => }/Container/Container.php (100%) rename src/{Faker => }/Container/ContainerBuilder.php (100%) rename src/{Faker => }/Container/ContainerException.php (100%) rename src/{Faker => }/Container/ContainerInterface.php (100%) rename src/{Faker => }/Container/NotInContainerException.php (100%) rename src/{Faker => }/Core/Barcode.php (100%) rename src/{Faker => }/Core/Blood.php (100%) rename src/{Faker => }/Core/Color.php (100%) rename src/{Faker => }/Core/Coordinates.php (100%) rename src/{Faker => }/Core/DateTime.php (100%) rename src/{Faker => }/Core/File.php (100%) rename src/{Faker => }/Core/Number.php (100%) rename src/{Faker => }/Core/Uuid.php (100%) rename src/{Faker => }/Core/Version.php (100%) rename src/{Faker => }/DefaultGenerator.php (100%) rename src/{Faker => }/Documentor.php (100%) rename src/{Faker => }/Extension/AddressExtension.php (100%) rename src/{Faker => }/Extension/BarcodeExtension.php (100%) rename src/{Faker => }/Extension/BloodExtension.php (100%) rename src/{Faker => }/Extension/ColorExtension.php (100%) rename src/{Faker => }/Extension/CompanyExtension.php (100%) rename src/{Faker => }/Extension/CountryExtension.php (100%) rename src/{Faker => }/Extension/DateTimeExtension.php (100%) rename src/{Faker => }/Extension/Extension.php (100%) rename src/{Faker => }/Extension/ExtensionNotFound.php (100%) rename src/{Faker => }/Extension/FileExtension.php (100%) rename src/{Faker => }/Extension/GeneratorAwareExtension.php (100%) rename src/{Faker => }/Extension/GeneratorAwareExtensionTrait.php (100%) rename src/{Faker => }/Extension/Helper.php (100%) rename src/{Faker => }/Extension/NumberExtension.php (100%) rename src/{Faker => }/Extension/PersonExtension.php (100%) rename src/{Faker => }/Extension/PhoneNumberExtension.php (100%) rename src/{Faker => }/Extension/UuidExtension.php (100%) rename src/{Faker => }/Extension/VersionExtension.php (100%) rename src/{Faker => }/Factory.php (100%) rename src/{Faker => }/Generator.php (100%) rename src/{Faker => }/Provider/Address.php (100%) rename src/{Faker => }/Provider/Barcode.php (100%) rename src/{Faker => }/Provider/Base.php (100%) rename src/{Faker => }/Provider/Biased.php (100%) rename src/{Faker => }/Provider/Color.php (100%) rename src/{Faker => }/Provider/Company.php (100%) rename src/{Faker => }/Provider/DateTime.php (100%) rename src/{Faker => }/Provider/File.php (100%) rename src/{Faker => }/Provider/HtmlLorem.php (100%) rename src/{Faker => }/Provider/Image.php (100%) rename src/{Faker => }/Provider/Internet.php (100%) rename src/{Faker => }/Provider/Lorem.php (100%) rename src/{Faker => }/Provider/Medical.php (100%) rename src/{Faker => }/Provider/Miscellaneous.php (100%) rename src/{Faker => }/Provider/Payment.php (100%) rename src/{Faker => }/Provider/Person.php (100%) rename src/{Faker => }/Provider/PhoneNumber.php (100%) rename src/{Faker => }/Provider/Text.php (100%) rename src/{Faker => }/Provider/UserAgent.php (100%) rename src/{Faker => }/Provider/Uuid.php (100%) rename src/{Faker => }/Provider/ar_EG/Address.php (100%) rename src/{Faker => }/Provider/ar_EG/Color.php (100%) rename src/{Faker => }/Provider/ar_EG/Company.php (100%) rename src/{Faker => }/Provider/ar_EG/Internet.php (100%) rename src/{Faker => }/Provider/ar_EG/Payment.php (100%) rename src/{Faker => }/Provider/ar_EG/Person.php (100%) rename src/{Faker => }/Provider/ar_EG/Text.php (100%) rename src/{Faker => }/Provider/ar_JO/Address.php (100%) rename src/{Faker => }/Provider/ar_JO/Company.php (100%) rename src/{Faker => }/Provider/ar_JO/Internet.php (100%) rename src/{Faker => }/Provider/ar_JO/Person.php (100%) rename src/{Faker => }/Provider/ar_JO/Text.php (100%) rename src/{Faker => }/Provider/ar_SA/Address.php (100%) rename src/{Faker => }/Provider/ar_SA/Color.php (100%) rename src/{Faker => }/Provider/ar_SA/Company.php (100%) rename src/{Faker => }/Provider/ar_SA/Internet.php (100%) rename src/{Faker => }/Provider/ar_SA/Payment.php (100%) rename src/{Faker => }/Provider/ar_SA/Person.php (100%) rename src/{Faker => }/Provider/ar_SA/Text.php (100%) rename src/{Faker => }/Provider/at_AT/Payment.php (100%) rename src/{Faker => }/Provider/bg_BG/Internet.php (100%) rename src/{Faker => }/Provider/bg_BG/Payment.php (100%) rename src/{Faker => }/Provider/bg_BG/Person.php (100%) rename src/{Faker => }/Provider/bg_BG/PhoneNumber.php (100%) rename src/{Faker => }/Provider/bn_BD/Address.php (100%) rename src/{Faker => }/Provider/bn_BD/Company.php (100%) rename src/{Faker => }/Provider/bn_BD/Person.php (100%) rename src/{Faker => }/Provider/bn_BD/PhoneNumber.php (100%) rename src/{Faker => }/Provider/bn_BD/Utils.php (100%) rename src/{Faker => }/Provider/cs_CZ/Address.php (100%) rename src/{Faker => }/Provider/cs_CZ/Company.php (100%) rename src/{Faker => }/Provider/cs_CZ/DateTime.php (100%) rename src/{Faker => }/Provider/cs_CZ/Internet.php (100%) rename src/{Faker => }/Provider/cs_CZ/Payment.php (100%) rename src/{Faker => }/Provider/cs_CZ/Person.php (100%) rename src/{Faker => }/Provider/cs_CZ/PhoneNumber.php (100%) rename src/{Faker => }/Provider/cs_CZ/Text.php (100%) rename src/{Faker => }/Provider/da_DK/Address.php (100%) rename src/{Faker => }/Provider/da_DK/Company.php (100%) rename src/{Faker => }/Provider/da_DK/Internet.php (100%) rename src/{Faker => }/Provider/da_DK/Payment.php (100%) rename src/{Faker => }/Provider/da_DK/Person.php (100%) rename src/{Faker => }/Provider/da_DK/PhoneNumber.php (100%) rename src/{Faker => }/Provider/de_AT/Address.php (100%) rename src/{Faker => }/Provider/de_AT/Company.php (100%) rename src/{Faker => }/Provider/de_AT/Internet.php (100%) rename src/{Faker => }/Provider/de_AT/Payment.php (100%) rename src/{Faker => }/Provider/de_AT/Person.php (100%) rename src/{Faker => }/Provider/de_AT/PhoneNumber.php (100%) rename src/{Faker => }/Provider/de_AT/Text.php (100%) rename src/{Faker => }/Provider/de_CH/Address.php (100%) rename src/{Faker => }/Provider/de_CH/Company.php (100%) rename src/{Faker => }/Provider/de_CH/Internet.php (100%) rename src/{Faker => }/Provider/de_CH/Payment.php (100%) rename src/{Faker => }/Provider/de_CH/Person.php (100%) rename src/{Faker => }/Provider/de_CH/PhoneNumber.php (100%) rename src/{Faker => }/Provider/de_CH/Text.php (100%) rename src/{Faker => }/Provider/de_DE/Address.php (100%) rename src/{Faker => }/Provider/de_DE/Company.php (100%) rename src/{Faker => }/Provider/de_DE/Internet.php (100%) rename src/{Faker => }/Provider/de_DE/Payment.php (100%) rename src/{Faker => }/Provider/de_DE/Person.php (100%) rename src/{Faker => }/Provider/de_DE/PhoneNumber.php (100%) rename src/{Faker => }/Provider/de_DE/Text.php (100%) rename src/{Faker => }/Provider/el_CY/Address.php (100%) rename src/{Faker => }/Provider/el_CY/Company.php (100%) rename src/{Faker => }/Provider/el_CY/Internet.php (100%) rename src/{Faker => }/Provider/el_CY/Payment.php (100%) rename src/{Faker => }/Provider/el_CY/Person.php (100%) rename src/{Faker => }/Provider/el_CY/PhoneNumber.php (100%) rename src/{Faker => }/Provider/el_GR/Address.php (100%) rename src/{Faker => }/Provider/el_GR/Company.php (100%) rename src/{Faker => }/Provider/el_GR/Payment.php (100%) rename src/{Faker => }/Provider/el_GR/Person.php (100%) rename src/{Faker => }/Provider/el_GR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/el_GR/Text.php (100%) rename src/{Faker => }/Provider/en_AU/Address.php (100%) rename src/{Faker => }/Provider/en_AU/Internet.php (100%) rename src/{Faker => }/Provider/en_AU/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_CA/Address.php (100%) rename src/{Faker => }/Provider/en_CA/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_GB/Address.php (100%) rename src/{Faker => }/Provider/en_GB/Company.php (100%) rename src/{Faker => }/Provider/en_GB/Internet.php (100%) rename src/{Faker => }/Provider/en_GB/Payment.php (100%) rename src/{Faker => }/Provider/en_GB/Person.php (100%) rename src/{Faker => }/Provider/en_GB/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_HK/Address.php (100%) rename src/{Faker => }/Provider/en_HK/Internet.php (100%) rename src/{Faker => }/Provider/en_HK/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_IN/Address.php (100%) rename src/{Faker => }/Provider/en_IN/Internet.php (100%) rename src/{Faker => }/Provider/en_IN/Person.php (100%) rename src/{Faker => }/Provider/en_IN/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_NG/Address.php (100%) rename src/{Faker => }/Provider/en_NG/Internet.php (100%) rename src/{Faker => }/Provider/en_NG/Person.php (100%) rename src/{Faker => }/Provider/en_NG/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_NZ/Address.php (100%) rename src/{Faker => }/Provider/en_NZ/Internet.php (100%) rename src/{Faker => }/Provider/en_NZ/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_PH/Address.php (100%) rename src/{Faker => }/Provider/en_PH/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_SG/Address.php (100%) rename src/{Faker => }/Provider/en_SG/Person.php (100%) rename src/{Faker => }/Provider/en_SG/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_UG/Address.php (100%) rename src/{Faker => }/Provider/en_UG/Internet.php (100%) rename src/{Faker => }/Provider/en_UG/Person.php (100%) rename src/{Faker => }/Provider/en_UG/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_US/Address.php (100%) rename src/{Faker => }/Provider/en_US/Company.php (100%) rename src/{Faker => }/Provider/en_US/Payment.php (100%) rename src/{Faker => }/Provider/en_US/Person.php (100%) rename src/{Faker => }/Provider/en_US/PhoneNumber.php (100%) rename src/{Faker => }/Provider/en_US/Text.php (100%) rename src/{Faker => }/Provider/en_ZA/Address.php (100%) rename src/{Faker => }/Provider/en_ZA/Company.php (100%) rename src/{Faker => }/Provider/en_ZA/Internet.php (100%) rename src/{Faker => }/Provider/en_ZA/Person.php (100%) rename src/{Faker => }/Provider/en_ZA/PhoneNumber.php (100%) rename src/{Faker => }/Provider/es_AR/Address.php (100%) rename src/{Faker => }/Provider/es_AR/Company.php (100%) rename src/{Faker => }/Provider/es_AR/Person.php (100%) rename src/{Faker => }/Provider/es_AR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/es_ES/Address.php (100%) rename src/{Faker => }/Provider/es_ES/Color.php (100%) rename src/{Faker => }/Provider/es_ES/Company.php (100%) rename src/{Faker => }/Provider/es_ES/Internet.php (100%) rename src/{Faker => }/Provider/es_ES/Payment.php (100%) rename src/{Faker => }/Provider/es_ES/Person.php (100%) rename src/{Faker => }/Provider/es_ES/PhoneNumber.php (100%) rename src/{Faker => }/Provider/es_ES/Text.php (100%) rename src/{Faker => }/Provider/es_PE/Address.php (100%) rename src/{Faker => }/Provider/es_PE/Company.php (100%) rename src/{Faker => }/Provider/es_PE/Person.php (100%) rename src/{Faker => }/Provider/es_PE/PhoneNumber.php (100%) rename src/{Faker => }/Provider/es_VE/Address.php (100%) rename src/{Faker => }/Provider/es_VE/Company.php (100%) rename src/{Faker => }/Provider/es_VE/Internet.php (100%) rename src/{Faker => }/Provider/es_VE/Person.php (100%) rename src/{Faker => }/Provider/es_VE/PhoneNumber.php (100%) rename src/{Faker => }/Provider/et_EE/Person.php (100%) rename src/{Faker => }/Provider/fa_IR/Address.php (100%) rename src/{Faker => }/Provider/fa_IR/Company.php (100%) rename src/{Faker => }/Provider/fa_IR/Internet.php (100%) rename src/{Faker => }/Provider/fa_IR/Person.php (100%) rename src/{Faker => }/Provider/fa_IR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/fa_IR/Text.php (100%) rename src/{Faker => }/Provider/fi_FI/Address.php (100%) rename src/{Faker => }/Provider/fi_FI/Company.php (100%) rename src/{Faker => }/Provider/fi_FI/Internet.php (100%) rename src/{Faker => }/Provider/fi_FI/Payment.php (100%) rename src/{Faker => }/Provider/fi_FI/Person.php (100%) rename src/{Faker => }/Provider/fi_FI/PhoneNumber.php (100%) rename src/{Faker => }/Provider/fr_BE/Address.php (100%) rename src/{Faker => }/Provider/fr_BE/Color.php (100%) rename src/{Faker => }/Provider/fr_BE/Company.php (100%) rename src/{Faker => }/Provider/fr_BE/Internet.php (100%) rename src/{Faker => }/Provider/fr_BE/Payment.php (100%) rename src/{Faker => }/Provider/fr_BE/Person.php (100%) rename src/{Faker => }/Provider/fr_BE/PhoneNumber.php (100%) rename src/{Faker => }/Provider/fr_CA/Address.php (100%) rename src/{Faker => }/Provider/fr_CA/Color.php (100%) rename src/{Faker => }/Provider/fr_CA/Company.php (100%) rename src/{Faker => }/Provider/fr_CA/Person.php (100%) rename src/{Faker => }/Provider/fr_CA/Text.php (100%) rename src/{Faker => }/Provider/fr_CH/Address.php (100%) rename src/{Faker => }/Provider/fr_CH/Color.php (100%) rename src/{Faker => }/Provider/fr_CH/Company.php (100%) rename src/{Faker => }/Provider/fr_CH/Internet.php (100%) rename src/{Faker => }/Provider/fr_CH/Payment.php (100%) rename src/{Faker => }/Provider/fr_CH/Person.php (100%) rename src/{Faker => }/Provider/fr_CH/PhoneNumber.php (100%) rename src/{Faker => }/Provider/fr_CH/Text.php (100%) rename src/{Faker => }/Provider/fr_FR/Address.php (100%) rename src/{Faker => }/Provider/fr_FR/Color.php (100%) rename src/{Faker => }/Provider/fr_FR/Company.php (100%) rename src/{Faker => }/Provider/fr_FR/Internet.php (100%) rename src/{Faker => }/Provider/fr_FR/Payment.php (100%) rename src/{Faker => }/Provider/fr_FR/Person.php (100%) rename src/{Faker => }/Provider/fr_FR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/fr_FR/Text.php (100%) rename src/{Faker => }/Provider/he_IL/Address.php (100%) rename src/{Faker => }/Provider/he_IL/Company.php (100%) rename src/{Faker => }/Provider/he_IL/Payment.php (100%) rename src/{Faker => }/Provider/he_IL/Person.php (100%) rename src/{Faker => }/Provider/he_IL/PhoneNumber.php (100%) rename src/{Faker => }/Provider/hr_HR/Address.php (100%) rename src/{Faker => }/Provider/hr_HR/Company.php (100%) rename src/{Faker => }/Provider/hr_HR/Payment.php (100%) rename src/{Faker => }/Provider/hr_HR/Person.php (100%) rename src/{Faker => }/Provider/hr_HR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/hu_HU/Address.php (100%) rename src/{Faker => }/Provider/hu_HU/Company.php (100%) rename src/{Faker => }/Provider/hu_HU/Payment.php (100%) rename src/{Faker => }/Provider/hu_HU/Person.php (100%) rename src/{Faker => }/Provider/hu_HU/PhoneNumber.php (100%) rename src/{Faker => }/Provider/hu_HU/Text.php (100%) rename src/{Faker => }/Provider/hy_AM/Address.php (100%) rename src/{Faker => }/Provider/hy_AM/Color.php (100%) rename src/{Faker => }/Provider/hy_AM/Company.php (100%) rename src/{Faker => }/Provider/hy_AM/Internet.php (100%) rename src/{Faker => }/Provider/hy_AM/Person.php (100%) rename src/{Faker => }/Provider/hy_AM/PhoneNumber.php (100%) rename src/{Faker => }/Provider/id_ID/Address.php (100%) rename src/{Faker => }/Provider/id_ID/Color.php (100%) rename src/{Faker => }/Provider/id_ID/Company.php (100%) rename src/{Faker => }/Provider/id_ID/Internet.php (100%) rename src/{Faker => }/Provider/id_ID/Person.php (100%) rename src/{Faker => }/Provider/id_ID/PhoneNumber.php (100%) rename src/{Faker => }/Provider/is_IS/Address.php (100%) rename src/{Faker => }/Provider/is_IS/Company.php (100%) rename src/{Faker => }/Provider/is_IS/Internet.php (100%) rename src/{Faker => }/Provider/is_IS/Payment.php (100%) rename src/{Faker => }/Provider/is_IS/Person.php (100%) rename src/{Faker => }/Provider/is_IS/PhoneNumber.php (100%) rename src/{Faker => }/Provider/it_CH/Address.php (100%) rename src/{Faker => }/Provider/it_CH/Company.php (100%) rename src/{Faker => }/Provider/it_CH/Internet.php (100%) rename src/{Faker => }/Provider/it_CH/Payment.php (100%) rename src/{Faker => }/Provider/it_CH/Person.php (100%) rename src/{Faker => }/Provider/it_CH/PhoneNumber.php (100%) rename src/{Faker => }/Provider/it_CH/Text.php (100%) rename src/{Faker => }/Provider/it_IT/Address.php (100%) rename src/{Faker => }/Provider/it_IT/Company.php (100%) rename src/{Faker => }/Provider/it_IT/Internet.php (100%) rename src/{Faker => }/Provider/it_IT/Payment.php (100%) rename src/{Faker => }/Provider/it_IT/Person.php (100%) rename src/{Faker => }/Provider/it_IT/PhoneNumber.php (100%) rename src/{Faker => }/Provider/it_IT/Text.php (100%) rename src/{Faker => }/Provider/ja_JP/Address.php (100%) rename src/{Faker => }/Provider/ja_JP/Company.php (100%) rename src/{Faker => }/Provider/ja_JP/Internet.php (100%) rename src/{Faker => }/Provider/ja_JP/Person.php (100%) rename src/{Faker => }/Provider/ja_JP/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ja_JP/Text.php (100%) rename src/{Faker => }/Provider/ka_GE/Address.php (100%) rename src/{Faker => }/Provider/ka_GE/Color.php (100%) rename src/{Faker => }/Provider/ka_GE/Company.php (100%) rename src/{Faker => }/Provider/ka_GE/DateTime.php (100%) rename src/{Faker => }/Provider/ka_GE/Internet.php (100%) rename src/{Faker => }/Provider/ka_GE/Payment.php (100%) rename src/{Faker => }/Provider/ka_GE/Person.php (100%) rename src/{Faker => }/Provider/ka_GE/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ka_GE/Text.php (100%) rename src/{Faker => }/Provider/kk_KZ/Address.php (100%) rename src/{Faker => }/Provider/kk_KZ/Color.php (100%) rename src/{Faker => }/Provider/kk_KZ/Company.php (100%) rename src/{Faker => }/Provider/kk_KZ/Internet.php (100%) rename src/{Faker => }/Provider/kk_KZ/Payment.php (100%) rename src/{Faker => }/Provider/kk_KZ/Person.php (100%) rename src/{Faker => }/Provider/kk_KZ/PhoneNumber.php (100%) rename src/{Faker => }/Provider/kk_KZ/Text.php (100%) rename src/{Faker => }/Provider/ko_KR/Address.php (100%) rename src/{Faker => }/Provider/ko_KR/Company.php (100%) rename src/{Faker => }/Provider/ko_KR/Internet.php (100%) rename src/{Faker => }/Provider/ko_KR/Person.php (100%) rename src/{Faker => }/Provider/ko_KR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ko_KR/Text.php (100%) rename src/{Faker => }/Provider/lt_LT/Address.php (100%) rename src/{Faker => }/Provider/lt_LT/Company.php (100%) rename src/{Faker => }/Provider/lt_LT/Internet.php (100%) rename src/{Faker => }/Provider/lt_LT/Payment.php (100%) rename src/{Faker => }/Provider/lt_LT/Person.php (100%) rename src/{Faker => }/Provider/lt_LT/PhoneNumber.php (100%) rename src/{Faker => }/Provider/lv_LV/Address.php (100%) rename src/{Faker => }/Provider/lv_LV/Color.php (100%) rename src/{Faker => }/Provider/lv_LV/Internet.php (100%) rename src/{Faker => }/Provider/lv_LV/Payment.php (100%) rename src/{Faker => }/Provider/lv_LV/Person.php (100%) rename src/{Faker => }/Provider/lv_LV/PhoneNumber.php (100%) rename src/{Faker => }/Provider/me_ME/Address.php (100%) rename src/{Faker => }/Provider/me_ME/Company.php (100%) rename src/{Faker => }/Provider/me_ME/Payment.php (100%) rename src/{Faker => }/Provider/me_ME/Person.php (100%) rename src/{Faker => }/Provider/me_ME/PhoneNumber.php (100%) rename src/{Faker => }/Provider/mn_MN/Person.php (100%) rename src/{Faker => }/Provider/mn_MN/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ms_MY/Address.php (100%) rename src/{Faker => }/Provider/ms_MY/Company.php (100%) rename src/{Faker => }/Provider/ms_MY/Miscellaneous.php (100%) rename src/{Faker => }/Provider/ms_MY/Payment.php (100%) rename src/{Faker => }/Provider/ms_MY/Person.php (100%) rename src/{Faker => }/Provider/ms_MY/PhoneNumber.php (100%) rename src/{Faker => }/Provider/nb_NO/Address.php (100%) rename src/{Faker => }/Provider/nb_NO/Company.php (100%) rename src/{Faker => }/Provider/nb_NO/Payment.php (100%) rename src/{Faker => }/Provider/nb_NO/Person.php (100%) rename src/{Faker => }/Provider/nb_NO/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ne_NP/Address.php (100%) rename src/{Faker => }/Provider/ne_NP/Internet.php (100%) rename src/{Faker => }/Provider/ne_NP/Payment.php (100%) rename src/{Faker => }/Provider/ne_NP/Person.php (100%) rename src/{Faker => }/Provider/ne_NP/PhoneNumber.php (100%) rename src/{Faker => }/Provider/nl_BE/Address.php (100%) rename src/{Faker => }/Provider/nl_BE/Company.php (100%) rename src/{Faker => }/Provider/nl_BE/Internet.php (100%) rename src/{Faker => }/Provider/nl_BE/Payment.php (100%) rename src/{Faker => }/Provider/nl_BE/Person.php (100%) rename src/{Faker => }/Provider/nl_BE/PhoneNumber.php (100%) rename src/{Faker => }/Provider/nl_BE/Text.php (100%) rename src/{Faker => }/Provider/nl_NL/Address.php (100%) rename src/{Faker => }/Provider/nl_NL/Color.php (100%) rename src/{Faker => }/Provider/nl_NL/Company.php (100%) rename src/{Faker => }/Provider/nl_NL/Internet.php (100%) rename src/{Faker => }/Provider/nl_NL/Payment.php (100%) rename src/{Faker => }/Provider/nl_NL/Person.php (100%) rename src/{Faker => }/Provider/nl_NL/PhoneNumber.php (100%) rename src/{Faker => }/Provider/nl_NL/Text.php (100%) rename src/{Faker => }/Provider/pl_PL/Address.php (100%) rename src/{Faker => }/Provider/pl_PL/Color.php (100%) rename src/{Faker => }/Provider/pl_PL/Company.php (100%) rename src/{Faker => }/Provider/pl_PL/Internet.php (100%) rename src/{Faker => }/Provider/pl_PL/LicensePlate.php (100%) rename src/{Faker => }/Provider/pl_PL/Payment.php (100%) rename src/{Faker => }/Provider/pl_PL/Person.php (100%) rename src/{Faker => }/Provider/pl_PL/PhoneNumber.php (100%) rename src/{Faker => }/Provider/pl_PL/Text.php (100%) rename src/{Faker => }/Provider/pt_BR/Address.php (100%) rename src/{Faker => }/Provider/pt_BR/Company.php (100%) rename src/{Faker => }/Provider/pt_BR/Internet.php (100%) rename src/{Faker => }/Provider/pt_BR/Payment.php (100%) rename src/{Faker => }/Provider/pt_BR/Person.php (100%) rename src/{Faker => }/Provider/pt_BR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/pt_BR/Text.php (100%) rename src/{Faker => }/Provider/pt_BR/check_digit.php (100%) rename src/{Faker => }/Provider/pt_PT/Address.php (100%) rename src/{Faker => }/Provider/pt_PT/Company.php (100%) rename src/{Faker => }/Provider/pt_PT/Internet.php (100%) rename src/{Faker => }/Provider/pt_PT/Payment.php (100%) rename src/{Faker => }/Provider/pt_PT/Person.php (100%) rename src/{Faker => }/Provider/pt_PT/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ro_MD/Address.php (100%) rename src/{Faker => }/Provider/ro_MD/Payment.php (100%) rename src/{Faker => }/Provider/ro_MD/Person.php (100%) rename src/{Faker => }/Provider/ro_MD/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ro_MD/Text.php (100%) rename src/{Faker => }/Provider/ro_RO/Address.php (100%) rename src/{Faker => }/Provider/ro_RO/Payment.php (100%) rename src/{Faker => }/Provider/ro_RO/Person.php (100%) rename src/{Faker => }/Provider/ro_RO/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ro_RO/Text.php (100%) rename src/{Faker => }/Provider/ru_RU/Address.php (100%) rename src/{Faker => }/Provider/ru_RU/Color.php (100%) rename src/{Faker => }/Provider/ru_RU/Company.php (100%) rename src/{Faker => }/Provider/ru_RU/Internet.php (100%) rename src/{Faker => }/Provider/ru_RU/Payment.php (100%) rename src/{Faker => }/Provider/ru_RU/Person.php (100%) rename src/{Faker => }/Provider/ru_RU/PhoneNumber.php (100%) rename src/{Faker => }/Provider/ru_RU/Text.php (100%) rename src/{Faker => }/Provider/sk_SK/Address.php (100%) rename src/{Faker => }/Provider/sk_SK/Company.php (100%) rename src/{Faker => }/Provider/sk_SK/Internet.php (100%) rename src/{Faker => }/Provider/sk_SK/Payment.php (100%) rename src/{Faker => }/Provider/sk_SK/Person.php (100%) rename src/{Faker => }/Provider/sk_SK/PhoneNumber.php (100%) rename src/{Faker => }/Provider/sl_SI/Address.php (100%) rename src/{Faker => }/Provider/sl_SI/Company.php (100%) rename src/{Faker => }/Provider/sl_SI/Internet.php (100%) rename src/{Faker => }/Provider/sl_SI/Payment.php (100%) rename src/{Faker => }/Provider/sl_SI/Person.php (100%) rename src/{Faker => }/Provider/sl_SI/PhoneNumber.php (100%) rename src/{Faker => }/Provider/sr_Cyrl_RS/Address.php (100%) rename src/{Faker => }/Provider/sr_Cyrl_RS/Payment.php (100%) rename src/{Faker => }/Provider/sr_Cyrl_RS/Person.php (100%) rename src/{Faker => }/Provider/sr_Latn_RS/Address.php (100%) rename src/{Faker => }/Provider/sr_Latn_RS/Payment.php (100%) rename src/{Faker => }/Provider/sr_Latn_RS/Person.php (100%) rename src/{Faker => }/Provider/sr_RS/Address.php (100%) rename src/{Faker => }/Provider/sr_RS/Payment.php (100%) rename src/{Faker => }/Provider/sr_RS/Person.php (100%) rename src/{Faker => }/Provider/sv_SE/Address.php (100%) rename src/{Faker => }/Provider/sv_SE/Company.php (100%) rename src/{Faker => }/Provider/sv_SE/Municipality.php (100%) rename src/{Faker => }/Provider/sv_SE/Payment.php (100%) rename src/{Faker => }/Provider/sv_SE/Person.php (100%) rename src/{Faker => }/Provider/sv_SE/PhoneNumber.php (100%) rename src/{Faker => }/Provider/th_TH/Address.php (100%) rename src/{Faker => }/Provider/th_TH/Color.php (100%) rename src/{Faker => }/Provider/th_TH/Company.php (100%) rename src/{Faker => }/Provider/th_TH/Internet.php (100%) rename src/{Faker => }/Provider/th_TH/Payment.php (100%) rename src/{Faker => }/Provider/th_TH/Person.php (100%) rename src/{Faker => }/Provider/th_TH/PhoneNumber.php (100%) rename src/{Faker => }/Provider/tr_TR/Address.php (100%) rename src/{Faker => }/Provider/tr_TR/Color.php (100%) rename src/{Faker => }/Provider/tr_TR/Company.php (100%) rename src/{Faker => }/Provider/tr_TR/DateTime.php (100%) rename src/{Faker => }/Provider/tr_TR/Internet.php (100%) rename src/{Faker => }/Provider/tr_TR/Payment.php (100%) rename src/{Faker => }/Provider/tr_TR/Person.php (100%) rename src/{Faker => }/Provider/tr_TR/PhoneNumber.php (100%) rename src/{Faker => }/Provider/uk_UA/Address.php (100%) rename src/{Faker => }/Provider/uk_UA/Color.php (100%) rename src/{Faker => }/Provider/uk_UA/Company.php (100%) rename src/{Faker => }/Provider/uk_UA/Internet.php (100%) rename src/{Faker => }/Provider/uk_UA/Payment.php (100%) rename src/{Faker => }/Provider/uk_UA/Person.php (100%) rename src/{Faker => }/Provider/uk_UA/PhoneNumber.php (100%) rename src/{Faker => }/Provider/uk_UA/Text.php (100%) rename src/{Faker => }/Provider/vi_VN/Address.php (100%) rename src/{Faker => }/Provider/vi_VN/Color.php (100%) rename src/{Faker => }/Provider/vi_VN/Internet.php (100%) rename src/{Faker => }/Provider/vi_VN/Person.php (100%) rename src/{Faker => }/Provider/vi_VN/PhoneNumber.php (100%) rename src/{Faker => }/Provider/zh_CN/Address.php (100%) rename src/{Faker => }/Provider/zh_CN/Color.php (100%) rename src/{Faker => }/Provider/zh_CN/Company.php (100%) rename src/{Faker => }/Provider/zh_CN/DateTime.php (100%) rename src/{Faker => }/Provider/zh_CN/Internet.php (100%) rename src/{Faker => }/Provider/zh_CN/Payment.php (100%) rename src/{Faker => }/Provider/zh_CN/Person.php (100%) rename src/{Faker => }/Provider/zh_CN/PhoneNumber.php (100%) rename src/{Faker => }/Provider/zh_TW/Address.php (100%) rename src/{Faker => }/Provider/zh_TW/Color.php (100%) rename src/{Faker => }/Provider/zh_TW/Company.php (100%) rename src/{Faker => }/Provider/zh_TW/DateTime.php (100%) rename src/{Faker => }/Provider/zh_TW/Internet.php (100%) rename src/{Faker => }/Provider/zh_TW/Payment.php (100%) rename src/{Faker => }/Provider/zh_TW/Person.php (100%) rename src/{Faker => }/Provider/zh_TW/PhoneNumber.php (100%) rename src/{Faker => }/Provider/zh_TW/Text.php (100%) rename src/{Faker => }/UniqueGenerator.php (100%) rename src/{Faker => }/ValidGenerator.php (100%) rename test/{Faker => }/Calculator/EanTest.php (100%) rename test/{Faker => }/Calculator/IbanTest.php (100%) rename test/{Faker => }/Calculator/IsbnTest.php (100%) rename test/{Faker => }/Calculator/LuhnTest.php (100%) rename test/{Faker => }/Core/BarcodeTest.php (100%) rename test/{Faker => }/Core/BloodTest.php (100%) rename test/{Faker => }/Core/ColorTest.php (100%) rename test/{Faker => }/Core/DateTimeTest.php (100%) rename test/{Faker => }/Core/NumberTest.php (100%) rename test/{Faker => }/Core/UuidTest.php (100%) rename test/{Faker => }/Core/VersionTest.php (100%) rename test/{Faker => }/DefaultGeneratorTest.php (100%) rename test/{Faker => }/Extension/ContainerBuilderTest.php (100%) rename test/{Faker => }/Extension/ContainerTest.php (100%) rename test/{Faker => }/Extension/GeneratorAwareExtensionTest.php (100%) rename test/{Faker => }/Extension/HelperTest.php (100%) rename test/{Faker => }/GeneratorTest.php (100%) rename test/{Faker => }/Provider/AddressTest.php (100%) rename test/{Faker => }/Provider/BarcodeTest.php (100%) rename test/{Faker => }/Provider/BaseTest.php (100%) rename test/{Faker => }/Provider/BiasedTest.php (100%) rename test/{Faker => }/Provider/ColorTest.php (100%) rename test/{Faker => }/Provider/CompanyTest.php (100%) rename test/{Faker => }/Provider/DateTimeTest.php (100%) rename test/{Faker => }/Provider/HtmlLoremTest.php (100%) rename test/{Faker => }/Provider/ImageTest.php (100%) rename test/{Faker => }/Provider/InternetTest.php (100%) rename test/{Faker => }/Provider/LocalizationTest.php (100%) rename test/{Faker => }/Provider/LoremTest.php (100%) rename test/{Faker => }/Provider/MedicalTest.php (100%) rename test/{Faker => }/Provider/MiscellaneousTest.php (100%) rename test/{Faker => }/Provider/PaymentTest.php (100%) rename test/{Faker => }/Provider/PersonTest.php (100%) rename test/{Faker => }/Provider/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/ProviderOverrideTest.php (100%) rename test/{Faker => }/Provider/TextTest.php (100%) rename test/{Faker => }/Provider/UserAgentTest.php (100%) rename test/{Faker => }/Provider/UuidTest.php (100%) rename test/{Faker => }/Provider/ar_EG/CompanyTest.php (100%) rename test/{Faker => }/Provider/ar_EG/InternetTest.php (100%) rename test/{Faker => }/Provider/ar_EG/PersonTest.php (100%) rename test/{Faker => }/Provider/ar_EG/TextTest.php (100%) rename test/{Faker => }/Provider/ar_JO/InternetTest.php (100%) rename test/{Faker => }/Provider/ar_SA/CompanyTest.php (100%) rename test/{Faker => }/Provider/ar_SA/InternetTest.php (100%) rename test/{Faker => }/Provider/ar_SA/PersonTest.php (100%) rename test/{Faker => }/Provider/bg_BG/PaymentTest.php (100%) rename test/{Faker => }/Provider/bn_BD/PersonTest.php (100%) rename test/{Faker => }/Provider/cs_CZ/PersonTest.php (100%) rename test/{Faker => }/Provider/da_DK/InternetTest.php (100%) rename test/{Faker => }/Provider/de_AT/AddressTest.php (100%) rename test/{Faker => }/Provider/de_AT/InternetTest.php (100%) rename test/{Faker => }/Provider/de_AT/PaymentTest.php (100%) rename test/{Faker => }/Provider/de_AT/PersonTest.php (100%) rename test/{Faker => }/Provider/de_AT/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/de_CH/AddressTest.php (100%) rename test/{Faker => }/Provider/de_CH/InternetTest.php (100%) rename test/{Faker => }/Provider/de_CH/PersonTest.php (100%) rename test/{Faker => }/Provider/de_CH/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/de_DE/InternetTest.php (100%) rename test/{Faker => }/Provider/de_DE/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/el_GR/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/el_GR/TextTest.php (100%) rename test/{Faker => }/Provider/en_AU/AddressTest.php (100%) rename test/{Faker => }/Provider/en_CA/AddressTest.php (100%) rename test/{Faker => }/Provider/en_GB/AddressTest.php (100%) rename test/{Faker => }/Provider/en_GB/CompanyTest.php (100%) rename test/{Faker => }/Provider/en_GB/PersonTest.php (100%) rename test/{Faker => }/Provider/en_GB/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/en_IN/AddressTest.php (100%) rename test/{Faker => }/Provider/en_NG/AddressTest.php (100%) rename test/{Faker => }/Provider/en_NG/InternetTest.php (100%) rename test/{Faker => }/Provider/en_NG/PersonTest.php (100%) rename test/{Faker => }/Provider/en_NG/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/en_NZ/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/en_PH/AddressTest.php (100%) rename test/{Faker => }/Provider/en_SG/AddressTest.php (100%) rename test/{Faker => }/Provider/en_SG/PersonTest.php (100%) rename test/{Faker => }/Provider/en_SG/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/en_UG/AddressTest.php (100%) rename test/{Faker => }/Provider/en_US/CompanyTest.php (100%) rename test/{Faker => }/Provider/en_US/PaymentTest.php (100%) rename test/{Faker => }/Provider/en_US/PersonTest.php (100%) rename test/{Faker => }/Provider/en_US/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/en_ZA/CompanyTest.php (100%) rename test/{Faker => }/Provider/en_ZA/InternetTest.php (100%) rename test/{Faker => }/Provider/en_ZA/PersonTest.php (100%) rename test/{Faker => }/Provider/en_ZA/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/es_ES/PaymentTest.php (100%) rename test/{Faker => }/Provider/es_ES/PersonTest.php (100%) rename test/{Faker => }/Provider/es_ES/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/es_ES/TextTest.php (100%) rename test/{Faker => }/Provider/es_PE/CompanyTest.php (100%) rename test/{Faker => }/Provider/es_PE/PersonTest.php (100%) rename test/{Faker => }/Provider/es_VE/CompanyTest.php (100%) rename test/{Faker => }/Provider/es_VE/PersonTest.php (100%) rename test/{Faker => }/Provider/fa_IR/PersonTest.php (100%) rename test/{Faker => }/Provider/fi_FI/InternetTest.php (100%) rename test/{Faker => }/Provider/fi_FI/PersonTest.php (100%) rename test/{Faker => }/Provider/fr_BE/PaymentTest.php (100%) rename test/{Faker => }/Provider/fr_CH/AddressTest.php (100%) rename test/{Faker => }/Provider/fr_CH/InternetTest.php (100%) rename test/{Faker => }/Provider/fr_CH/PersonTest.php (100%) rename test/{Faker => }/Provider/fr_CH/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/fr_FR/AddressTest.php (100%) rename test/{Faker => }/Provider/fr_FR/ColorTest.php (100%) rename test/{Faker => }/Provider/fr_FR/CompanyTest.php (100%) rename test/{Faker => }/Provider/fr_FR/PaymentTest.php (100%) rename test/{Faker => }/Provider/fr_FR/PersonTest.php (100%) rename test/{Faker => }/Provider/fr_FR/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/fr_FR/TextTest.php (100%) rename test/{Faker => }/Provider/hu_HU/PersonTest.php (100%) rename test/{Faker => }/Provider/id_ID/PersonTest.php (100%) rename test/{Faker => }/Provider/it_CH/AddressTest.php (100%) rename test/{Faker => }/Provider/it_CH/InternetTest.php (100%) rename test/{Faker => }/Provider/it_CH/PersonTest.php (100%) rename test/{Faker => }/Provider/it_CH/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/it_IT/CompanyTest.php (100%) rename test/{Faker => }/Provider/it_IT/PersonTest.php (100%) rename test/{Faker => }/Provider/ja_JP/InternetTest.php (100%) rename test/{Faker => }/Provider/ja_JP/PersonTest.php (100%) rename test/{Faker => }/Provider/ja_JP/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/ka_GE/TextTest.php (100%) rename test/{Faker => }/Provider/kk_KZ/CompanyTest.php (100%) rename test/{Faker => }/Provider/kk_KZ/PersonTest.php (100%) rename test/{Faker => }/Provider/kk_KZ/TextTest.php (100%) rename test/{Faker => }/Provider/ko_KR/TextTest.php (100%) rename test/{Faker => }/Provider/lt_LT/AddressTest.php (100%) rename test/{Faker => }/Provider/lv_LV/AddressTest.php (100%) rename test/{Faker => }/Provider/lv_LV/PersonTest.php (100%) rename test/{Faker => }/Provider/mn_MN/PersonTest.php (100%) rename test/{Faker => }/Provider/ms_MY/PersonTest.php (100%) rename test/{Faker => }/Provider/nb_NO/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/ne_NP/PaymentTest.php (100%) rename test/{Faker => }/Provider/nl_BE/PaymentTest.php (100%) rename test/{Faker => }/Provider/nl_BE/PersonTest.php (100%) rename test/{Faker => }/Provider/nl_NL/CompanyTest.php (100%) rename test/{Faker => }/Provider/nl_NL/PersonTest.php (100%) rename test/{Faker => }/Provider/pl_PL/AddressTest.php (100%) rename test/{Faker => }/Provider/pl_PL/ColorTest.php (100%) rename test/{Faker => }/Provider/pl_PL/LicensePlateTest.php (100%) rename test/{Faker => }/Provider/pl_PL/PersonTest.php (100%) rename test/{Faker => }/Provider/pt_BR/CompanyTest.php (100%) rename test/{Faker => }/Provider/pt_BR/PersonTest.php (100%) rename test/{Faker => }/Provider/pt_BR/TextTest.php (100%) rename test/{Faker => }/Provider/pt_PT/AddressTest.php (100%) rename test/{Faker => }/Provider/pt_PT/PersonTest.php (100%) rename test/{Faker => }/Provider/pt_PT/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/ro_RO/PersonTest.php (100%) rename test/{Faker => }/Provider/ro_RO/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/ru_RU/CompanyTest.php (100%) rename test/{Faker => }/Provider/ru_RU/PersonTest.php (100%) rename test/{Faker => }/Provider/ru_RU/TextTest.php (100%) rename test/{Faker => }/Provider/sv_SE/MunicipalityTest.php (100%) rename test/{Faker => }/Provider/sv_SE/PersonTest.php (100%) rename test/{Faker => }/Provider/sv_SE/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/tr_TR/CompanyTest.php (100%) rename test/{Faker => }/Provider/tr_TR/PaymentTest.php (100%) rename test/{Faker => }/Provider/tr_TR/PersonTest.php (100%) rename test/{Faker => }/Provider/tr_TR/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/uk_UA/AddressTest.php (100%) rename test/{Faker => }/Provider/uk_UA/PersonTest.php (100%) rename test/{Faker => }/Provider/uk_UA/PhoneNumberTest.php (100%) rename test/{Faker => }/Provider/zh_TW/CompanyTest.php (100%) rename test/{Faker => }/Provider/zh_TW/PersonTest.php (100%) rename test/{Faker => }/Provider/zh_TW/TextTest.php (100%) rename test/{Faker => }/TestCase.php (100%) rename test/{Faker => }/UniqueGeneratorTest.php (100%) rename test/{Faker => }/ValidGeneratorTest.php (100%) diff --git a/composer.json b/composer.json index fce79b02e6..0cacb0080a 100644 --- a/composer.json +++ b/composer.json @@ -26,13 +26,12 @@ }, "autoload": { "psr-4": { - "Faker\\": "src/Faker/" + "Faker\\": "src/" } }, "autoload-dev": { "psr-4": { - "Faker\\Test\\": "test/Faker/", - "Faker\\Test\\Fixture\\": "test/Fixture/" + "Faker\\Test\\": "test/" } }, "conflict": { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index f0b53b17bf..08f087ba4c 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -3,42 +3,42 @@ parameters: - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 - path: src/Faker/Calculator/Iban.php + path: src/Calculator/Iban.php - message: "#^Binary operation \"\\*\" between int and string results in an error\\.$#" count: 1 - path: src/Faker/Calculator/Isbn.php + path: src/Calculator/Isbn.php - message: "#^Binary operation \"\\*\" between string and 2 results in an error\\.$#" count: 1 - path: src/Faker/Calculator/Luhn.php + path: src/Calculator/Luhn.php - message: "#^Result of && is always false\\.$#" count: 1 - path: src/Faker/Container/ContainerBuilder.php + path: src/Container/ContainerBuilder.php - message: "#^Method Faker\\\\Generator\\:\\:optional\\(\\) should return Faker\\\\Generator but returns Faker\\\\ChanceGenerator\\.$#" count: 1 - path: src/Faker/Generator.php + path: src/Generator.php - message: "#^Method Faker\\\\Generator\\:\\:unique\\(\\) should return Faker\\\\Generator but returns Faker\\\\UniqueGenerator\\.$#" count: 1 - path: src/Faker/Generator.php + path: src/Generator.php - message: "#^Method Faker\\\\Generator\\:\\:valid\\(\\) should return Faker\\\\Generator but returns Faker\\\\ValidGenerator\\.$#" count: 1 - path: src/Faker/Generator.php + path: src/Generator.php - message: "#^Class UnitEnum not found\\.$#" count: 2 - path: src/Faker/Provider/Base.php + path: src/Provider/Base.php - message: """ @@ -46,324 +46,324 @@ parameters: Use ChanceGenerator instead$# """ count: 1 - path: src/Faker/Provider/Base.php + path: src/Provider/Base.php - message: "#^Negated boolean expression is always false\\.$#" count: 1 - path: src/Faker/Provider/Base.php + path: src/Provider/Base.php - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/Base.php + path: src/Provider/Base.php - message: "#^Parameter \\#2 \\$callback of function preg_replace_callback expects callable\\(array\\\\)\\: string, array\\{class\\-string\\, 'randomDigit'\\} given\\.$#" count: 1 - path: src/Faker/Provider/Base.php + path: src/Provider/Base.php - message: "#^Parameter \\$validator of method Faker\\\\Provider\\\\Base\\:\\:valid\\(\\) has invalid type Faker\\\\Provider\\\\Closure\\.$#" count: 1 - path: src/Faker/Provider/Base.php + path: src/Provider/Base.php - message: "#^Unreachable statement \\- code above always terminates\\.$#" count: 1 - path: src/Faker/Provider/Base.php + path: src/Provider/Base.php - message: "#^Method Faker\\\\Provider\\\\DateTime\\:\\:resolveTimezone\\(\\) never returns null so it can be removed from the return type\\.$#" count: 1 - path: src/Faker/Provider/DateTime.php + path: src/Provider/DateTime.php - message: "#^Unsafe call to private method Faker\\\\Provider\\\\DateTime\\:\\:resolveTimezone\\(\\) through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/DateTime.php + path: src/Provider/DateTime.php - message: "#^Unsafe call to private method Faker\\\\Provider\\\\DateTime\\:\\:setTimezone\\(\\) through static\\:\\:\\.$#" count: 3 - path: src/Faker/Provider/DateTime.php + path: src/Provider/DateTime.php - message: "#^Method Faker\\\\Provider\\\\File\\:\\:file\\(\\) should return string but returns false\\.$#" count: 1 - path: src/Faker/Provider/File.php + path: src/Provider/File.php - message: "#^Unreachable statement \\- code above always terminates\\.$#" count: 1 - path: src/Faker/Provider/Lorem.php + path: src/Provider/Lorem.php - message: "#^Variable \\$text in empty\\(\\) always exists and is always falsy\\.$#" count: 1 - path: src/Faker/Provider/Lorem.php + path: src/Provider/Lorem.php - message: "#^Parameter \\#1 \\$str of function md5 expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/Miscellaneous.php + path: src/Provider/Miscellaneous.php - message: "#^Parameter \\#1 \\$str of function sha1 expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/Miscellaneous.php + path: src/Provider/Miscellaneous.php - message: "#^Parameter \\#2 \\$data of function hash expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/Miscellaneous.php + path: src/Provider/Miscellaneous.php - message: "#^Method Faker\\\\Provider\\\\PhoneNumber\\:\\:imei\\(\\) should return int but returns string\\.$#" count: 1 - path: src/Faker/Provider/PhoneNumber.php + path: src/Provider/PhoneNumber.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\ar_EG\\\\Person\\:\\:\\$prefix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/ar_EG/Person.php + path: src/Provider/ar_EG/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\ar_JO\\\\Person\\:\\:\\$prefix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/ar_JO/Person.php + path: src/Provider/ar_JO/Person.php - message: "#^Access to an undefined static property static\\(Faker\\\\Provider\\\\ar_SA\\\\Address\\)\\:\\:\\$cityPrefix\\.$#" count: 1 - path: src/Faker/Provider/ar_SA/Address.php + path: src/Provider/ar_SA/Address.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\ar_SA\\\\Person\\:\\:\\$prefix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/ar_SA/Person.php + path: src/Provider/ar_SA/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\cs_CZ\\\\Address\\:\\:\\$regions through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/cs_CZ/Address.php + path: src/Provider/cs_CZ/Address.php - message: "#^Binary operation \"\\*\" between 2\\|3\\|4\\|5\\|6\\|7\\|8 and string results in an error\\.$#" count: 1 - path: src/Faker/Provider/cs_CZ/Company.php + path: src/Provider/cs_CZ/Company.php - message: "#^Binary operation \"\\-\" between string and 1 results in an error\\.$#" count: 2 - path: src/Faker/Provider/cs_CZ/DateTime.php + path: src/Provider/cs_CZ/DateTime.php - message: "#^Static call to instance method Faker\\\\Provider\\\\cs_CZ\\\\Person\\:\\:birthNumber\\(\\)\\.$#" count: 2 - path: src/Faker/Provider/cs_CZ/Person.php + path: src/Provider/cs_CZ/Person.php - message: "#^Parameter \\#2 \\$callback of function preg_replace_callback expects callable\\(array\\\\)\\: string, array\\{class\\-string\\, 'randomDigit'\\} given\\.$#" count: 1 - path: src/Faker/Provider/en_CA/Address.php + path: src/Provider/en_CA/Address.php - message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateBranchTraderVatNumber\\(\\) through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/en_GB/Company.php + path: src/Provider/en_GB/Company.php - message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateGovernmentVatNumber\\(\\) through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/en_GB/Company.php + path: src/Provider/en_GB/Company.php - message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateHealthAuthorityVatNumber\\(\\) through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/en_GB/Company.php + path: src/Provider/en_GB/Company.php - message: "#^Unsafe call to private method Faker\\\\Provider\\\\en_GB\\\\Company\\:\\:generateStandardVatNumber\\(\\) through static\\:\\:\\.$#" count: 2 - path: src/Faker/Provider/en_GB/Company.php + path: src/Provider/en_GB/Company.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\en_NG\\\\Address\\:\\:\\$county through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/en_NG/Address.php + path: src/Provider/en_NG/Address.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\en_NG\\\\Address\\:\\:\\$regions through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/en_NG/Address.php + path: src/Provider/en_NG/Address.php - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/en_ZA/Person.php + path: src/Provider/en_ZA/Person.php - message: "#^Parameter \\#3 \\$pad_string of function str_pad expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/en_ZA/Person.php + path: src/Provider/en_ZA/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_AR\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/es_AR/Person.php + path: src/Provider/es_AR/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_ES\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/es_ES/Person.php + path: src/Provider/es_ES/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_VE\\\\Person\\:\\:\\$nationalityId through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/es_VE/Person.php + path: src/Provider/es_VE/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\es_VE\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/es_VE/Person.php + path: src/Provider/es_VE/Person.php - message: "#^Binary operation \"\\*\" between string and int\\<2, 10\\> results in an error\\.$#" count: 1 - path: src/Faker/Provider/fa_IR/Person.php + path: src/Provider/fa_IR/Person.php - message: "#^Method Faker\\\\Provider\\\\fa_IR\\\\Person\\:\\:createAreaCode\\(\\) never returns int so it can be removed from the return type\\.$#" count: 1 - path: src/Faker/Provider/fa_IR/Person.php + path: src/Provider/fa_IR/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\fr_FR\\\\Address\\:\\:\\$departments through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/fr_FR/Address.php + path: src/Provider/fr_FR/Address.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\fr_FR\\\\Address\\:\\:\\$regions through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/fr_FR/Address.php + path: src/Provider/fr_FR/Address.php - message: "#^Method Faker\\\\Provider\\\\hu_HU\\\\Address\\:\\:localCoordinates\\(\\) has invalid return type Faker\\\\Provider\\\\hu_HU\\\\latitude\\.$#" count: 1 - path: src/Faker/Provider/hu_HU/Address.php + path: src/Provider/hu_HU/Address.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\hu_HU\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/hu_HU/Person.php + path: src/Provider/hu_HU/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\hy_AM\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/hy_AM/Person.php + path: src/Provider/hy_AM/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\id_ID\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/id_ID/Person.php + path: src/Provider/id_ID/Person.php - message: "#^Binary operation \"\\*\" between string and string results in an error\\.$#" count: 1 - path: src/Faker/Provider/is_IS/Person.php + path: src/Provider/is_IS/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\it_IT\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/it_IT/Person.php + path: src/Provider/it_IT/Person.php - message: "#^Call to an undefined static method static\\(Faker\\\\Provider\\\\ja_JP\\\\Text\\)\\:\\:split\\(\\)\\.$#" count: 1 - path: src/Faker/Provider/ja_JP/Text.php + path: src/Provider/ja_JP/Text.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\lt_LT\\\\Address\\:\\:\\$municipality through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/lt_LT/Address.php + path: src/Provider/lt_LT/Address.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\ne_NP\\\\Person\\:\\:\\$middleNameFemale through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/ne_NP/Person.php + path: src/Provider/ne_NP/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\ne_NP\\\\Person\\:\\:\\$middleNameMale through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/ne_NP/Person.php + path: src/Provider/ne_NP/Person.php - message: "#^Variable \\$companyName might not be defined\\.$#" count: 2 - path: src/Faker/Provider/nl_NL/Company.php + path: src/Provider/nl_NL/Company.php - message: "#^Call to method format\\(\\) on an unknown class Faker\\\\Provider\\\\pl_PL\\\\DateTime\\.$#" count: 4 - path: src/Faker/Provider/pl_PL/Person.php + path: src/Provider/pl_PL/Person.php - message: "#^Parameter \\$birthdate of method Faker\\\\Provider\\\\pl_PL\\\\Person\\:\\:pesel\\(\\) has invalid type Faker\\\\Provider\\\\pl_PL\\\\DateTime\\.$#" count: 1 - path: src/Faker/Provider/pl_PL/Person.php + path: src/Provider/pl_PL/Person.php - message: "#^Binary operation \"\\*\" between string and int\\<2, max\\> results in an error\\.$#" count: 1 - path: src/Faker/Provider/pt_BR/check_digit.php + path: src/Provider/pt_BR/check_digit.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\pt_PT\\\\Address\\:\\:\\$cities through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/pt_PT/Address.php + path: src/Provider/pt_PT/Address.php - message: "#^Left side of \\|\\| is always true\\.$#" count: 1 - path: src/Faker/Provider/pt_PT/Person.php + path: src/Provider/pt_PT/Person.php - message: "#^Right side of \\|\\| is always false\\.$#" count: 1 - path: src/Faker/Provider/pt_PT/Person.php + path: src/Provider/pt_PT/Person.php - message: "#^Parameter \\#1 \\$string of function substr expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/ro_RO/Person.php + path: src/Provider/ro_RO/Person.php - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/ru_RU/Company.php + path: src/Provider/ru_RU/Company.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\sk_SK\\\\Person\\:\\:\\$suffix through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/sk_SK/Person.php + path: src/Provider/sk_SK/Person.php - message: "#^Static call to instance method Faker\\\\Provider\\\\sl_SI\\\\Person\\:\\:lastName\\(\\)\\.$#" count: 2 - path: src/Faker/Provider/sl_SI/Person.php + path: src/Provider/sl_SI/Person.php - message: "#^Unsafe access to private property Faker\\\\Provider\\\\sv_SE\\\\Municipality\\:\\:\\$municipalities through static\\:\\:\\.$#" count: 1 - path: src/Faker/Provider/sv_SE/Municipality.php + path: src/Provider/sv_SE/Municipality.php - message: "#^Parameter \\#1 \\$input of function str_pad expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/zh_CN/Address.php + path: src/Provider/zh_CN/Address.php - message: "#^Parameter \\#3 \\$pad_string of function str_pad expects string, int given\\.$#" count: 1 - path: src/Faker/Provider/zh_CN/Address.php + path: src/Provider/zh_CN/Address.php diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 050bdabe4e..25e983b9de 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -18,12 +18,12 @@ - ./test/Faker + ./test/ - ./src/Faker + ./src/ diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 6edf90ec62..1768d99c65 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,6 +1,6 @@ - + uniqueGenerator]]> new ChanceGenerator($this, $weight, $default) @@ -12,7 +12,7 @@ self - + [static::class, 'randomDigit'] static function ($matches) { @@ -36,17 +36,17 @@ enum_exists($array) - + callable - + false - + $imei @@ -54,39 +54,39 @@ int - + static::$cityPrefix - + static::birthNumber(static::GENDER_FEMALE) static::birthNumber(static::GENDER_MALE) - + $weights[$i] - + $ref[$i] - + static::split($text) - + $weights[$i] $weights[$i] - + $high[$i] $low[$i] @@ -99,7 +99,7 @@ DateTime - + static::lastName() static::lastName() diff --git a/src/Faker/Calculator/Ean.php b/src/Calculator/Ean.php similarity index 100% rename from src/Faker/Calculator/Ean.php rename to src/Calculator/Ean.php diff --git a/src/Faker/Calculator/Iban.php b/src/Calculator/Iban.php similarity index 100% rename from src/Faker/Calculator/Iban.php rename to src/Calculator/Iban.php diff --git a/src/Faker/Calculator/Inn.php b/src/Calculator/Inn.php similarity index 100% rename from src/Faker/Calculator/Inn.php rename to src/Calculator/Inn.php diff --git a/src/Faker/Calculator/Isbn.php b/src/Calculator/Isbn.php similarity index 100% rename from src/Faker/Calculator/Isbn.php rename to src/Calculator/Isbn.php diff --git a/src/Faker/Calculator/Luhn.php b/src/Calculator/Luhn.php similarity index 100% rename from src/Faker/Calculator/Luhn.php rename to src/Calculator/Luhn.php diff --git a/src/Faker/Calculator/TCNo.php b/src/Calculator/TCNo.php similarity index 100% rename from src/Faker/Calculator/TCNo.php rename to src/Calculator/TCNo.php diff --git a/src/Faker/ChanceGenerator.php b/src/ChanceGenerator.php similarity index 100% rename from src/Faker/ChanceGenerator.php rename to src/ChanceGenerator.php diff --git a/src/Faker/Container/Container.php b/src/Container/Container.php similarity index 100% rename from src/Faker/Container/Container.php rename to src/Container/Container.php diff --git a/src/Faker/Container/ContainerBuilder.php b/src/Container/ContainerBuilder.php similarity index 100% rename from src/Faker/Container/ContainerBuilder.php rename to src/Container/ContainerBuilder.php diff --git a/src/Faker/Container/ContainerException.php b/src/Container/ContainerException.php similarity index 100% rename from src/Faker/Container/ContainerException.php rename to src/Container/ContainerException.php diff --git a/src/Faker/Container/ContainerInterface.php b/src/Container/ContainerInterface.php similarity index 100% rename from src/Faker/Container/ContainerInterface.php rename to src/Container/ContainerInterface.php diff --git a/src/Faker/Container/NotInContainerException.php b/src/Container/NotInContainerException.php similarity index 100% rename from src/Faker/Container/NotInContainerException.php rename to src/Container/NotInContainerException.php diff --git a/src/Faker/Core/Barcode.php b/src/Core/Barcode.php similarity index 100% rename from src/Faker/Core/Barcode.php rename to src/Core/Barcode.php diff --git a/src/Faker/Core/Blood.php b/src/Core/Blood.php similarity index 100% rename from src/Faker/Core/Blood.php rename to src/Core/Blood.php diff --git a/src/Faker/Core/Color.php b/src/Core/Color.php similarity index 100% rename from src/Faker/Core/Color.php rename to src/Core/Color.php diff --git a/src/Faker/Core/Coordinates.php b/src/Core/Coordinates.php similarity index 100% rename from src/Faker/Core/Coordinates.php rename to src/Core/Coordinates.php diff --git a/src/Faker/Core/DateTime.php b/src/Core/DateTime.php similarity index 100% rename from src/Faker/Core/DateTime.php rename to src/Core/DateTime.php diff --git a/src/Faker/Core/File.php b/src/Core/File.php similarity index 100% rename from src/Faker/Core/File.php rename to src/Core/File.php diff --git a/src/Faker/Core/Number.php b/src/Core/Number.php similarity index 100% rename from src/Faker/Core/Number.php rename to src/Core/Number.php diff --git a/src/Faker/Core/Uuid.php b/src/Core/Uuid.php similarity index 100% rename from src/Faker/Core/Uuid.php rename to src/Core/Uuid.php diff --git a/src/Faker/Core/Version.php b/src/Core/Version.php similarity index 100% rename from src/Faker/Core/Version.php rename to src/Core/Version.php diff --git a/src/Faker/DefaultGenerator.php b/src/DefaultGenerator.php similarity index 100% rename from src/Faker/DefaultGenerator.php rename to src/DefaultGenerator.php diff --git a/src/Faker/Documentor.php b/src/Documentor.php similarity index 100% rename from src/Faker/Documentor.php rename to src/Documentor.php diff --git a/src/Faker/Extension/AddressExtension.php b/src/Extension/AddressExtension.php similarity index 100% rename from src/Faker/Extension/AddressExtension.php rename to src/Extension/AddressExtension.php diff --git a/src/Faker/Extension/BarcodeExtension.php b/src/Extension/BarcodeExtension.php similarity index 100% rename from src/Faker/Extension/BarcodeExtension.php rename to src/Extension/BarcodeExtension.php diff --git a/src/Faker/Extension/BloodExtension.php b/src/Extension/BloodExtension.php similarity index 100% rename from src/Faker/Extension/BloodExtension.php rename to src/Extension/BloodExtension.php diff --git a/src/Faker/Extension/ColorExtension.php b/src/Extension/ColorExtension.php similarity index 100% rename from src/Faker/Extension/ColorExtension.php rename to src/Extension/ColorExtension.php diff --git a/src/Faker/Extension/CompanyExtension.php b/src/Extension/CompanyExtension.php similarity index 100% rename from src/Faker/Extension/CompanyExtension.php rename to src/Extension/CompanyExtension.php diff --git a/src/Faker/Extension/CountryExtension.php b/src/Extension/CountryExtension.php similarity index 100% rename from src/Faker/Extension/CountryExtension.php rename to src/Extension/CountryExtension.php diff --git a/src/Faker/Extension/DateTimeExtension.php b/src/Extension/DateTimeExtension.php similarity index 100% rename from src/Faker/Extension/DateTimeExtension.php rename to src/Extension/DateTimeExtension.php diff --git a/src/Faker/Extension/Extension.php b/src/Extension/Extension.php similarity index 100% rename from src/Faker/Extension/Extension.php rename to src/Extension/Extension.php diff --git a/src/Faker/Extension/ExtensionNotFound.php b/src/Extension/ExtensionNotFound.php similarity index 100% rename from src/Faker/Extension/ExtensionNotFound.php rename to src/Extension/ExtensionNotFound.php diff --git a/src/Faker/Extension/FileExtension.php b/src/Extension/FileExtension.php similarity index 100% rename from src/Faker/Extension/FileExtension.php rename to src/Extension/FileExtension.php diff --git a/src/Faker/Extension/GeneratorAwareExtension.php b/src/Extension/GeneratorAwareExtension.php similarity index 100% rename from src/Faker/Extension/GeneratorAwareExtension.php rename to src/Extension/GeneratorAwareExtension.php diff --git a/src/Faker/Extension/GeneratorAwareExtensionTrait.php b/src/Extension/GeneratorAwareExtensionTrait.php similarity index 100% rename from src/Faker/Extension/GeneratorAwareExtensionTrait.php rename to src/Extension/GeneratorAwareExtensionTrait.php diff --git a/src/Faker/Extension/Helper.php b/src/Extension/Helper.php similarity index 100% rename from src/Faker/Extension/Helper.php rename to src/Extension/Helper.php diff --git a/src/Faker/Extension/NumberExtension.php b/src/Extension/NumberExtension.php similarity index 100% rename from src/Faker/Extension/NumberExtension.php rename to src/Extension/NumberExtension.php diff --git a/src/Faker/Extension/PersonExtension.php b/src/Extension/PersonExtension.php similarity index 100% rename from src/Faker/Extension/PersonExtension.php rename to src/Extension/PersonExtension.php diff --git a/src/Faker/Extension/PhoneNumberExtension.php b/src/Extension/PhoneNumberExtension.php similarity index 100% rename from src/Faker/Extension/PhoneNumberExtension.php rename to src/Extension/PhoneNumberExtension.php diff --git a/src/Faker/Extension/UuidExtension.php b/src/Extension/UuidExtension.php similarity index 100% rename from src/Faker/Extension/UuidExtension.php rename to src/Extension/UuidExtension.php diff --git a/src/Faker/Extension/VersionExtension.php b/src/Extension/VersionExtension.php similarity index 100% rename from src/Faker/Extension/VersionExtension.php rename to src/Extension/VersionExtension.php diff --git a/src/Faker/Factory.php b/src/Factory.php similarity index 100% rename from src/Faker/Factory.php rename to src/Factory.php diff --git a/src/Faker/Generator.php b/src/Generator.php similarity index 100% rename from src/Faker/Generator.php rename to src/Generator.php diff --git a/src/Faker/Provider/Address.php b/src/Provider/Address.php similarity index 100% rename from src/Faker/Provider/Address.php rename to src/Provider/Address.php diff --git a/src/Faker/Provider/Barcode.php b/src/Provider/Barcode.php similarity index 100% rename from src/Faker/Provider/Barcode.php rename to src/Provider/Barcode.php diff --git a/src/Faker/Provider/Base.php b/src/Provider/Base.php similarity index 100% rename from src/Faker/Provider/Base.php rename to src/Provider/Base.php diff --git a/src/Faker/Provider/Biased.php b/src/Provider/Biased.php similarity index 100% rename from src/Faker/Provider/Biased.php rename to src/Provider/Biased.php diff --git a/src/Faker/Provider/Color.php b/src/Provider/Color.php similarity index 100% rename from src/Faker/Provider/Color.php rename to src/Provider/Color.php diff --git a/src/Faker/Provider/Company.php b/src/Provider/Company.php similarity index 100% rename from src/Faker/Provider/Company.php rename to src/Provider/Company.php diff --git a/src/Faker/Provider/DateTime.php b/src/Provider/DateTime.php similarity index 100% rename from src/Faker/Provider/DateTime.php rename to src/Provider/DateTime.php diff --git a/src/Faker/Provider/File.php b/src/Provider/File.php similarity index 100% rename from src/Faker/Provider/File.php rename to src/Provider/File.php diff --git a/src/Faker/Provider/HtmlLorem.php b/src/Provider/HtmlLorem.php similarity index 100% rename from src/Faker/Provider/HtmlLorem.php rename to src/Provider/HtmlLorem.php diff --git a/src/Faker/Provider/Image.php b/src/Provider/Image.php similarity index 100% rename from src/Faker/Provider/Image.php rename to src/Provider/Image.php diff --git a/src/Faker/Provider/Internet.php b/src/Provider/Internet.php similarity index 100% rename from src/Faker/Provider/Internet.php rename to src/Provider/Internet.php diff --git a/src/Faker/Provider/Lorem.php b/src/Provider/Lorem.php similarity index 100% rename from src/Faker/Provider/Lorem.php rename to src/Provider/Lorem.php diff --git a/src/Faker/Provider/Medical.php b/src/Provider/Medical.php similarity index 100% rename from src/Faker/Provider/Medical.php rename to src/Provider/Medical.php diff --git a/src/Faker/Provider/Miscellaneous.php b/src/Provider/Miscellaneous.php similarity index 100% rename from src/Faker/Provider/Miscellaneous.php rename to src/Provider/Miscellaneous.php diff --git a/src/Faker/Provider/Payment.php b/src/Provider/Payment.php similarity index 100% rename from src/Faker/Provider/Payment.php rename to src/Provider/Payment.php diff --git a/src/Faker/Provider/Person.php b/src/Provider/Person.php similarity index 100% rename from src/Faker/Provider/Person.php rename to src/Provider/Person.php diff --git a/src/Faker/Provider/PhoneNumber.php b/src/Provider/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/PhoneNumber.php rename to src/Provider/PhoneNumber.php diff --git a/src/Faker/Provider/Text.php b/src/Provider/Text.php similarity index 100% rename from src/Faker/Provider/Text.php rename to src/Provider/Text.php diff --git a/src/Faker/Provider/UserAgent.php b/src/Provider/UserAgent.php similarity index 100% rename from src/Faker/Provider/UserAgent.php rename to src/Provider/UserAgent.php diff --git a/src/Faker/Provider/Uuid.php b/src/Provider/Uuid.php similarity index 100% rename from src/Faker/Provider/Uuid.php rename to src/Provider/Uuid.php diff --git a/src/Faker/Provider/ar_EG/Address.php b/src/Provider/ar_EG/Address.php similarity index 100% rename from src/Faker/Provider/ar_EG/Address.php rename to src/Provider/ar_EG/Address.php diff --git a/src/Faker/Provider/ar_EG/Color.php b/src/Provider/ar_EG/Color.php similarity index 100% rename from src/Faker/Provider/ar_EG/Color.php rename to src/Provider/ar_EG/Color.php diff --git a/src/Faker/Provider/ar_EG/Company.php b/src/Provider/ar_EG/Company.php similarity index 100% rename from src/Faker/Provider/ar_EG/Company.php rename to src/Provider/ar_EG/Company.php diff --git a/src/Faker/Provider/ar_EG/Internet.php b/src/Provider/ar_EG/Internet.php similarity index 100% rename from src/Faker/Provider/ar_EG/Internet.php rename to src/Provider/ar_EG/Internet.php diff --git a/src/Faker/Provider/ar_EG/Payment.php b/src/Provider/ar_EG/Payment.php similarity index 100% rename from src/Faker/Provider/ar_EG/Payment.php rename to src/Provider/ar_EG/Payment.php diff --git a/src/Faker/Provider/ar_EG/Person.php b/src/Provider/ar_EG/Person.php similarity index 100% rename from src/Faker/Provider/ar_EG/Person.php rename to src/Provider/ar_EG/Person.php diff --git a/src/Faker/Provider/ar_EG/Text.php b/src/Provider/ar_EG/Text.php similarity index 100% rename from src/Faker/Provider/ar_EG/Text.php rename to src/Provider/ar_EG/Text.php diff --git a/src/Faker/Provider/ar_JO/Address.php b/src/Provider/ar_JO/Address.php similarity index 100% rename from src/Faker/Provider/ar_JO/Address.php rename to src/Provider/ar_JO/Address.php diff --git a/src/Faker/Provider/ar_JO/Company.php b/src/Provider/ar_JO/Company.php similarity index 100% rename from src/Faker/Provider/ar_JO/Company.php rename to src/Provider/ar_JO/Company.php diff --git a/src/Faker/Provider/ar_JO/Internet.php b/src/Provider/ar_JO/Internet.php similarity index 100% rename from src/Faker/Provider/ar_JO/Internet.php rename to src/Provider/ar_JO/Internet.php diff --git a/src/Faker/Provider/ar_JO/Person.php b/src/Provider/ar_JO/Person.php similarity index 100% rename from src/Faker/Provider/ar_JO/Person.php rename to src/Provider/ar_JO/Person.php diff --git a/src/Faker/Provider/ar_JO/Text.php b/src/Provider/ar_JO/Text.php similarity index 100% rename from src/Faker/Provider/ar_JO/Text.php rename to src/Provider/ar_JO/Text.php diff --git a/src/Faker/Provider/ar_SA/Address.php b/src/Provider/ar_SA/Address.php similarity index 100% rename from src/Faker/Provider/ar_SA/Address.php rename to src/Provider/ar_SA/Address.php diff --git a/src/Faker/Provider/ar_SA/Color.php b/src/Provider/ar_SA/Color.php similarity index 100% rename from src/Faker/Provider/ar_SA/Color.php rename to src/Provider/ar_SA/Color.php diff --git a/src/Faker/Provider/ar_SA/Company.php b/src/Provider/ar_SA/Company.php similarity index 100% rename from src/Faker/Provider/ar_SA/Company.php rename to src/Provider/ar_SA/Company.php diff --git a/src/Faker/Provider/ar_SA/Internet.php b/src/Provider/ar_SA/Internet.php similarity index 100% rename from src/Faker/Provider/ar_SA/Internet.php rename to src/Provider/ar_SA/Internet.php diff --git a/src/Faker/Provider/ar_SA/Payment.php b/src/Provider/ar_SA/Payment.php similarity index 100% rename from src/Faker/Provider/ar_SA/Payment.php rename to src/Provider/ar_SA/Payment.php diff --git a/src/Faker/Provider/ar_SA/Person.php b/src/Provider/ar_SA/Person.php similarity index 100% rename from src/Faker/Provider/ar_SA/Person.php rename to src/Provider/ar_SA/Person.php diff --git a/src/Faker/Provider/ar_SA/Text.php b/src/Provider/ar_SA/Text.php similarity index 100% rename from src/Faker/Provider/ar_SA/Text.php rename to src/Provider/ar_SA/Text.php diff --git a/src/Faker/Provider/at_AT/Payment.php b/src/Provider/at_AT/Payment.php similarity index 100% rename from src/Faker/Provider/at_AT/Payment.php rename to src/Provider/at_AT/Payment.php diff --git a/src/Faker/Provider/bg_BG/Internet.php b/src/Provider/bg_BG/Internet.php similarity index 100% rename from src/Faker/Provider/bg_BG/Internet.php rename to src/Provider/bg_BG/Internet.php diff --git a/src/Faker/Provider/bg_BG/Payment.php b/src/Provider/bg_BG/Payment.php similarity index 100% rename from src/Faker/Provider/bg_BG/Payment.php rename to src/Provider/bg_BG/Payment.php diff --git a/src/Faker/Provider/bg_BG/Person.php b/src/Provider/bg_BG/Person.php similarity index 100% rename from src/Faker/Provider/bg_BG/Person.php rename to src/Provider/bg_BG/Person.php diff --git a/src/Faker/Provider/bg_BG/PhoneNumber.php b/src/Provider/bg_BG/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/bg_BG/PhoneNumber.php rename to src/Provider/bg_BG/PhoneNumber.php diff --git a/src/Faker/Provider/bn_BD/Address.php b/src/Provider/bn_BD/Address.php similarity index 100% rename from src/Faker/Provider/bn_BD/Address.php rename to src/Provider/bn_BD/Address.php diff --git a/src/Faker/Provider/bn_BD/Company.php b/src/Provider/bn_BD/Company.php similarity index 100% rename from src/Faker/Provider/bn_BD/Company.php rename to src/Provider/bn_BD/Company.php diff --git a/src/Faker/Provider/bn_BD/Person.php b/src/Provider/bn_BD/Person.php similarity index 100% rename from src/Faker/Provider/bn_BD/Person.php rename to src/Provider/bn_BD/Person.php diff --git a/src/Faker/Provider/bn_BD/PhoneNumber.php b/src/Provider/bn_BD/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/bn_BD/PhoneNumber.php rename to src/Provider/bn_BD/PhoneNumber.php diff --git a/src/Faker/Provider/bn_BD/Utils.php b/src/Provider/bn_BD/Utils.php similarity index 100% rename from src/Faker/Provider/bn_BD/Utils.php rename to src/Provider/bn_BD/Utils.php diff --git a/src/Faker/Provider/cs_CZ/Address.php b/src/Provider/cs_CZ/Address.php similarity index 100% rename from src/Faker/Provider/cs_CZ/Address.php rename to src/Provider/cs_CZ/Address.php diff --git a/src/Faker/Provider/cs_CZ/Company.php b/src/Provider/cs_CZ/Company.php similarity index 100% rename from src/Faker/Provider/cs_CZ/Company.php rename to src/Provider/cs_CZ/Company.php diff --git a/src/Faker/Provider/cs_CZ/DateTime.php b/src/Provider/cs_CZ/DateTime.php similarity index 100% rename from src/Faker/Provider/cs_CZ/DateTime.php rename to src/Provider/cs_CZ/DateTime.php diff --git a/src/Faker/Provider/cs_CZ/Internet.php b/src/Provider/cs_CZ/Internet.php similarity index 100% rename from src/Faker/Provider/cs_CZ/Internet.php rename to src/Provider/cs_CZ/Internet.php diff --git a/src/Faker/Provider/cs_CZ/Payment.php b/src/Provider/cs_CZ/Payment.php similarity index 100% rename from src/Faker/Provider/cs_CZ/Payment.php rename to src/Provider/cs_CZ/Payment.php diff --git a/src/Faker/Provider/cs_CZ/Person.php b/src/Provider/cs_CZ/Person.php similarity index 100% rename from src/Faker/Provider/cs_CZ/Person.php rename to src/Provider/cs_CZ/Person.php diff --git a/src/Faker/Provider/cs_CZ/PhoneNumber.php b/src/Provider/cs_CZ/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/cs_CZ/PhoneNumber.php rename to src/Provider/cs_CZ/PhoneNumber.php diff --git a/src/Faker/Provider/cs_CZ/Text.php b/src/Provider/cs_CZ/Text.php similarity index 100% rename from src/Faker/Provider/cs_CZ/Text.php rename to src/Provider/cs_CZ/Text.php diff --git a/src/Faker/Provider/da_DK/Address.php b/src/Provider/da_DK/Address.php similarity index 100% rename from src/Faker/Provider/da_DK/Address.php rename to src/Provider/da_DK/Address.php diff --git a/src/Faker/Provider/da_DK/Company.php b/src/Provider/da_DK/Company.php similarity index 100% rename from src/Faker/Provider/da_DK/Company.php rename to src/Provider/da_DK/Company.php diff --git a/src/Faker/Provider/da_DK/Internet.php b/src/Provider/da_DK/Internet.php similarity index 100% rename from src/Faker/Provider/da_DK/Internet.php rename to src/Provider/da_DK/Internet.php diff --git a/src/Faker/Provider/da_DK/Payment.php b/src/Provider/da_DK/Payment.php similarity index 100% rename from src/Faker/Provider/da_DK/Payment.php rename to src/Provider/da_DK/Payment.php diff --git a/src/Faker/Provider/da_DK/Person.php b/src/Provider/da_DK/Person.php similarity index 100% rename from src/Faker/Provider/da_DK/Person.php rename to src/Provider/da_DK/Person.php diff --git a/src/Faker/Provider/da_DK/PhoneNumber.php b/src/Provider/da_DK/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/da_DK/PhoneNumber.php rename to src/Provider/da_DK/PhoneNumber.php diff --git a/src/Faker/Provider/de_AT/Address.php b/src/Provider/de_AT/Address.php similarity index 100% rename from src/Faker/Provider/de_AT/Address.php rename to src/Provider/de_AT/Address.php diff --git a/src/Faker/Provider/de_AT/Company.php b/src/Provider/de_AT/Company.php similarity index 100% rename from src/Faker/Provider/de_AT/Company.php rename to src/Provider/de_AT/Company.php diff --git a/src/Faker/Provider/de_AT/Internet.php b/src/Provider/de_AT/Internet.php similarity index 100% rename from src/Faker/Provider/de_AT/Internet.php rename to src/Provider/de_AT/Internet.php diff --git a/src/Faker/Provider/de_AT/Payment.php b/src/Provider/de_AT/Payment.php similarity index 100% rename from src/Faker/Provider/de_AT/Payment.php rename to src/Provider/de_AT/Payment.php diff --git a/src/Faker/Provider/de_AT/Person.php b/src/Provider/de_AT/Person.php similarity index 100% rename from src/Faker/Provider/de_AT/Person.php rename to src/Provider/de_AT/Person.php diff --git a/src/Faker/Provider/de_AT/PhoneNumber.php b/src/Provider/de_AT/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/de_AT/PhoneNumber.php rename to src/Provider/de_AT/PhoneNumber.php diff --git a/src/Faker/Provider/de_AT/Text.php b/src/Provider/de_AT/Text.php similarity index 100% rename from src/Faker/Provider/de_AT/Text.php rename to src/Provider/de_AT/Text.php diff --git a/src/Faker/Provider/de_CH/Address.php b/src/Provider/de_CH/Address.php similarity index 100% rename from src/Faker/Provider/de_CH/Address.php rename to src/Provider/de_CH/Address.php diff --git a/src/Faker/Provider/de_CH/Company.php b/src/Provider/de_CH/Company.php similarity index 100% rename from src/Faker/Provider/de_CH/Company.php rename to src/Provider/de_CH/Company.php diff --git a/src/Faker/Provider/de_CH/Internet.php b/src/Provider/de_CH/Internet.php similarity index 100% rename from src/Faker/Provider/de_CH/Internet.php rename to src/Provider/de_CH/Internet.php diff --git a/src/Faker/Provider/de_CH/Payment.php b/src/Provider/de_CH/Payment.php similarity index 100% rename from src/Faker/Provider/de_CH/Payment.php rename to src/Provider/de_CH/Payment.php diff --git a/src/Faker/Provider/de_CH/Person.php b/src/Provider/de_CH/Person.php similarity index 100% rename from src/Faker/Provider/de_CH/Person.php rename to src/Provider/de_CH/Person.php diff --git a/src/Faker/Provider/de_CH/PhoneNumber.php b/src/Provider/de_CH/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/de_CH/PhoneNumber.php rename to src/Provider/de_CH/PhoneNumber.php diff --git a/src/Faker/Provider/de_CH/Text.php b/src/Provider/de_CH/Text.php similarity index 100% rename from src/Faker/Provider/de_CH/Text.php rename to src/Provider/de_CH/Text.php diff --git a/src/Faker/Provider/de_DE/Address.php b/src/Provider/de_DE/Address.php similarity index 100% rename from src/Faker/Provider/de_DE/Address.php rename to src/Provider/de_DE/Address.php diff --git a/src/Faker/Provider/de_DE/Company.php b/src/Provider/de_DE/Company.php similarity index 100% rename from src/Faker/Provider/de_DE/Company.php rename to src/Provider/de_DE/Company.php diff --git a/src/Faker/Provider/de_DE/Internet.php b/src/Provider/de_DE/Internet.php similarity index 100% rename from src/Faker/Provider/de_DE/Internet.php rename to src/Provider/de_DE/Internet.php diff --git a/src/Faker/Provider/de_DE/Payment.php b/src/Provider/de_DE/Payment.php similarity index 100% rename from src/Faker/Provider/de_DE/Payment.php rename to src/Provider/de_DE/Payment.php diff --git a/src/Faker/Provider/de_DE/Person.php b/src/Provider/de_DE/Person.php similarity index 100% rename from src/Faker/Provider/de_DE/Person.php rename to src/Provider/de_DE/Person.php diff --git a/src/Faker/Provider/de_DE/PhoneNumber.php b/src/Provider/de_DE/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/de_DE/PhoneNumber.php rename to src/Provider/de_DE/PhoneNumber.php diff --git a/src/Faker/Provider/de_DE/Text.php b/src/Provider/de_DE/Text.php similarity index 100% rename from src/Faker/Provider/de_DE/Text.php rename to src/Provider/de_DE/Text.php diff --git a/src/Faker/Provider/el_CY/Address.php b/src/Provider/el_CY/Address.php similarity index 100% rename from src/Faker/Provider/el_CY/Address.php rename to src/Provider/el_CY/Address.php diff --git a/src/Faker/Provider/el_CY/Company.php b/src/Provider/el_CY/Company.php similarity index 100% rename from src/Faker/Provider/el_CY/Company.php rename to src/Provider/el_CY/Company.php diff --git a/src/Faker/Provider/el_CY/Internet.php b/src/Provider/el_CY/Internet.php similarity index 100% rename from src/Faker/Provider/el_CY/Internet.php rename to src/Provider/el_CY/Internet.php diff --git a/src/Faker/Provider/el_CY/Payment.php b/src/Provider/el_CY/Payment.php similarity index 100% rename from src/Faker/Provider/el_CY/Payment.php rename to src/Provider/el_CY/Payment.php diff --git a/src/Faker/Provider/el_CY/Person.php b/src/Provider/el_CY/Person.php similarity index 100% rename from src/Faker/Provider/el_CY/Person.php rename to src/Provider/el_CY/Person.php diff --git a/src/Faker/Provider/el_CY/PhoneNumber.php b/src/Provider/el_CY/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/el_CY/PhoneNumber.php rename to src/Provider/el_CY/PhoneNumber.php diff --git a/src/Faker/Provider/el_GR/Address.php b/src/Provider/el_GR/Address.php similarity index 100% rename from src/Faker/Provider/el_GR/Address.php rename to src/Provider/el_GR/Address.php diff --git a/src/Faker/Provider/el_GR/Company.php b/src/Provider/el_GR/Company.php similarity index 100% rename from src/Faker/Provider/el_GR/Company.php rename to src/Provider/el_GR/Company.php diff --git a/src/Faker/Provider/el_GR/Payment.php b/src/Provider/el_GR/Payment.php similarity index 100% rename from src/Faker/Provider/el_GR/Payment.php rename to src/Provider/el_GR/Payment.php diff --git a/src/Faker/Provider/el_GR/Person.php b/src/Provider/el_GR/Person.php similarity index 100% rename from src/Faker/Provider/el_GR/Person.php rename to src/Provider/el_GR/Person.php diff --git a/src/Faker/Provider/el_GR/PhoneNumber.php b/src/Provider/el_GR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/el_GR/PhoneNumber.php rename to src/Provider/el_GR/PhoneNumber.php diff --git a/src/Faker/Provider/el_GR/Text.php b/src/Provider/el_GR/Text.php similarity index 100% rename from src/Faker/Provider/el_GR/Text.php rename to src/Provider/el_GR/Text.php diff --git a/src/Faker/Provider/en_AU/Address.php b/src/Provider/en_AU/Address.php similarity index 100% rename from src/Faker/Provider/en_AU/Address.php rename to src/Provider/en_AU/Address.php diff --git a/src/Faker/Provider/en_AU/Internet.php b/src/Provider/en_AU/Internet.php similarity index 100% rename from src/Faker/Provider/en_AU/Internet.php rename to src/Provider/en_AU/Internet.php diff --git a/src/Faker/Provider/en_AU/PhoneNumber.php b/src/Provider/en_AU/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_AU/PhoneNumber.php rename to src/Provider/en_AU/PhoneNumber.php diff --git a/src/Faker/Provider/en_CA/Address.php b/src/Provider/en_CA/Address.php similarity index 100% rename from src/Faker/Provider/en_CA/Address.php rename to src/Provider/en_CA/Address.php diff --git a/src/Faker/Provider/en_CA/PhoneNumber.php b/src/Provider/en_CA/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_CA/PhoneNumber.php rename to src/Provider/en_CA/PhoneNumber.php diff --git a/src/Faker/Provider/en_GB/Address.php b/src/Provider/en_GB/Address.php similarity index 100% rename from src/Faker/Provider/en_GB/Address.php rename to src/Provider/en_GB/Address.php diff --git a/src/Faker/Provider/en_GB/Company.php b/src/Provider/en_GB/Company.php similarity index 100% rename from src/Faker/Provider/en_GB/Company.php rename to src/Provider/en_GB/Company.php diff --git a/src/Faker/Provider/en_GB/Internet.php b/src/Provider/en_GB/Internet.php similarity index 100% rename from src/Faker/Provider/en_GB/Internet.php rename to src/Provider/en_GB/Internet.php diff --git a/src/Faker/Provider/en_GB/Payment.php b/src/Provider/en_GB/Payment.php similarity index 100% rename from src/Faker/Provider/en_GB/Payment.php rename to src/Provider/en_GB/Payment.php diff --git a/src/Faker/Provider/en_GB/Person.php b/src/Provider/en_GB/Person.php similarity index 100% rename from src/Faker/Provider/en_GB/Person.php rename to src/Provider/en_GB/Person.php diff --git a/src/Faker/Provider/en_GB/PhoneNumber.php b/src/Provider/en_GB/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_GB/PhoneNumber.php rename to src/Provider/en_GB/PhoneNumber.php diff --git a/src/Faker/Provider/en_HK/Address.php b/src/Provider/en_HK/Address.php similarity index 100% rename from src/Faker/Provider/en_HK/Address.php rename to src/Provider/en_HK/Address.php diff --git a/src/Faker/Provider/en_HK/Internet.php b/src/Provider/en_HK/Internet.php similarity index 100% rename from src/Faker/Provider/en_HK/Internet.php rename to src/Provider/en_HK/Internet.php diff --git a/src/Faker/Provider/en_HK/PhoneNumber.php b/src/Provider/en_HK/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_HK/PhoneNumber.php rename to src/Provider/en_HK/PhoneNumber.php diff --git a/src/Faker/Provider/en_IN/Address.php b/src/Provider/en_IN/Address.php similarity index 100% rename from src/Faker/Provider/en_IN/Address.php rename to src/Provider/en_IN/Address.php diff --git a/src/Faker/Provider/en_IN/Internet.php b/src/Provider/en_IN/Internet.php similarity index 100% rename from src/Faker/Provider/en_IN/Internet.php rename to src/Provider/en_IN/Internet.php diff --git a/src/Faker/Provider/en_IN/Person.php b/src/Provider/en_IN/Person.php similarity index 100% rename from src/Faker/Provider/en_IN/Person.php rename to src/Provider/en_IN/Person.php diff --git a/src/Faker/Provider/en_IN/PhoneNumber.php b/src/Provider/en_IN/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_IN/PhoneNumber.php rename to src/Provider/en_IN/PhoneNumber.php diff --git a/src/Faker/Provider/en_NG/Address.php b/src/Provider/en_NG/Address.php similarity index 100% rename from src/Faker/Provider/en_NG/Address.php rename to src/Provider/en_NG/Address.php diff --git a/src/Faker/Provider/en_NG/Internet.php b/src/Provider/en_NG/Internet.php similarity index 100% rename from src/Faker/Provider/en_NG/Internet.php rename to src/Provider/en_NG/Internet.php diff --git a/src/Faker/Provider/en_NG/Person.php b/src/Provider/en_NG/Person.php similarity index 100% rename from src/Faker/Provider/en_NG/Person.php rename to src/Provider/en_NG/Person.php diff --git a/src/Faker/Provider/en_NG/PhoneNumber.php b/src/Provider/en_NG/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_NG/PhoneNumber.php rename to src/Provider/en_NG/PhoneNumber.php diff --git a/src/Faker/Provider/en_NZ/Address.php b/src/Provider/en_NZ/Address.php similarity index 100% rename from src/Faker/Provider/en_NZ/Address.php rename to src/Provider/en_NZ/Address.php diff --git a/src/Faker/Provider/en_NZ/Internet.php b/src/Provider/en_NZ/Internet.php similarity index 100% rename from src/Faker/Provider/en_NZ/Internet.php rename to src/Provider/en_NZ/Internet.php diff --git a/src/Faker/Provider/en_NZ/PhoneNumber.php b/src/Provider/en_NZ/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_NZ/PhoneNumber.php rename to src/Provider/en_NZ/PhoneNumber.php diff --git a/src/Faker/Provider/en_PH/Address.php b/src/Provider/en_PH/Address.php similarity index 100% rename from src/Faker/Provider/en_PH/Address.php rename to src/Provider/en_PH/Address.php diff --git a/src/Faker/Provider/en_PH/PhoneNumber.php b/src/Provider/en_PH/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_PH/PhoneNumber.php rename to src/Provider/en_PH/PhoneNumber.php diff --git a/src/Faker/Provider/en_SG/Address.php b/src/Provider/en_SG/Address.php similarity index 100% rename from src/Faker/Provider/en_SG/Address.php rename to src/Provider/en_SG/Address.php diff --git a/src/Faker/Provider/en_SG/Person.php b/src/Provider/en_SG/Person.php similarity index 100% rename from src/Faker/Provider/en_SG/Person.php rename to src/Provider/en_SG/Person.php diff --git a/src/Faker/Provider/en_SG/PhoneNumber.php b/src/Provider/en_SG/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_SG/PhoneNumber.php rename to src/Provider/en_SG/PhoneNumber.php diff --git a/src/Faker/Provider/en_UG/Address.php b/src/Provider/en_UG/Address.php similarity index 100% rename from src/Faker/Provider/en_UG/Address.php rename to src/Provider/en_UG/Address.php diff --git a/src/Faker/Provider/en_UG/Internet.php b/src/Provider/en_UG/Internet.php similarity index 100% rename from src/Faker/Provider/en_UG/Internet.php rename to src/Provider/en_UG/Internet.php diff --git a/src/Faker/Provider/en_UG/Person.php b/src/Provider/en_UG/Person.php similarity index 100% rename from src/Faker/Provider/en_UG/Person.php rename to src/Provider/en_UG/Person.php diff --git a/src/Faker/Provider/en_UG/PhoneNumber.php b/src/Provider/en_UG/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_UG/PhoneNumber.php rename to src/Provider/en_UG/PhoneNumber.php diff --git a/src/Faker/Provider/en_US/Address.php b/src/Provider/en_US/Address.php similarity index 100% rename from src/Faker/Provider/en_US/Address.php rename to src/Provider/en_US/Address.php diff --git a/src/Faker/Provider/en_US/Company.php b/src/Provider/en_US/Company.php similarity index 100% rename from src/Faker/Provider/en_US/Company.php rename to src/Provider/en_US/Company.php diff --git a/src/Faker/Provider/en_US/Payment.php b/src/Provider/en_US/Payment.php similarity index 100% rename from src/Faker/Provider/en_US/Payment.php rename to src/Provider/en_US/Payment.php diff --git a/src/Faker/Provider/en_US/Person.php b/src/Provider/en_US/Person.php similarity index 100% rename from src/Faker/Provider/en_US/Person.php rename to src/Provider/en_US/Person.php diff --git a/src/Faker/Provider/en_US/PhoneNumber.php b/src/Provider/en_US/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_US/PhoneNumber.php rename to src/Provider/en_US/PhoneNumber.php diff --git a/src/Faker/Provider/en_US/Text.php b/src/Provider/en_US/Text.php similarity index 100% rename from src/Faker/Provider/en_US/Text.php rename to src/Provider/en_US/Text.php diff --git a/src/Faker/Provider/en_ZA/Address.php b/src/Provider/en_ZA/Address.php similarity index 100% rename from src/Faker/Provider/en_ZA/Address.php rename to src/Provider/en_ZA/Address.php diff --git a/src/Faker/Provider/en_ZA/Company.php b/src/Provider/en_ZA/Company.php similarity index 100% rename from src/Faker/Provider/en_ZA/Company.php rename to src/Provider/en_ZA/Company.php diff --git a/src/Faker/Provider/en_ZA/Internet.php b/src/Provider/en_ZA/Internet.php similarity index 100% rename from src/Faker/Provider/en_ZA/Internet.php rename to src/Provider/en_ZA/Internet.php diff --git a/src/Faker/Provider/en_ZA/Person.php b/src/Provider/en_ZA/Person.php similarity index 100% rename from src/Faker/Provider/en_ZA/Person.php rename to src/Provider/en_ZA/Person.php diff --git a/src/Faker/Provider/en_ZA/PhoneNumber.php b/src/Provider/en_ZA/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/en_ZA/PhoneNumber.php rename to src/Provider/en_ZA/PhoneNumber.php diff --git a/src/Faker/Provider/es_AR/Address.php b/src/Provider/es_AR/Address.php similarity index 100% rename from src/Faker/Provider/es_AR/Address.php rename to src/Provider/es_AR/Address.php diff --git a/src/Faker/Provider/es_AR/Company.php b/src/Provider/es_AR/Company.php similarity index 100% rename from src/Faker/Provider/es_AR/Company.php rename to src/Provider/es_AR/Company.php diff --git a/src/Faker/Provider/es_AR/Person.php b/src/Provider/es_AR/Person.php similarity index 100% rename from src/Faker/Provider/es_AR/Person.php rename to src/Provider/es_AR/Person.php diff --git a/src/Faker/Provider/es_AR/PhoneNumber.php b/src/Provider/es_AR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/es_AR/PhoneNumber.php rename to src/Provider/es_AR/PhoneNumber.php diff --git a/src/Faker/Provider/es_ES/Address.php b/src/Provider/es_ES/Address.php similarity index 100% rename from src/Faker/Provider/es_ES/Address.php rename to src/Provider/es_ES/Address.php diff --git a/src/Faker/Provider/es_ES/Color.php b/src/Provider/es_ES/Color.php similarity index 100% rename from src/Faker/Provider/es_ES/Color.php rename to src/Provider/es_ES/Color.php diff --git a/src/Faker/Provider/es_ES/Company.php b/src/Provider/es_ES/Company.php similarity index 100% rename from src/Faker/Provider/es_ES/Company.php rename to src/Provider/es_ES/Company.php diff --git a/src/Faker/Provider/es_ES/Internet.php b/src/Provider/es_ES/Internet.php similarity index 100% rename from src/Faker/Provider/es_ES/Internet.php rename to src/Provider/es_ES/Internet.php diff --git a/src/Faker/Provider/es_ES/Payment.php b/src/Provider/es_ES/Payment.php similarity index 100% rename from src/Faker/Provider/es_ES/Payment.php rename to src/Provider/es_ES/Payment.php diff --git a/src/Faker/Provider/es_ES/Person.php b/src/Provider/es_ES/Person.php similarity index 100% rename from src/Faker/Provider/es_ES/Person.php rename to src/Provider/es_ES/Person.php diff --git a/src/Faker/Provider/es_ES/PhoneNumber.php b/src/Provider/es_ES/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/es_ES/PhoneNumber.php rename to src/Provider/es_ES/PhoneNumber.php diff --git a/src/Faker/Provider/es_ES/Text.php b/src/Provider/es_ES/Text.php similarity index 100% rename from src/Faker/Provider/es_ES/Text.php rename to src/Provider/es_ES/Text.php diff --git a/src/Faker/Provider/es_PE/Address.php b/src/Provider/es_PE/Address.php similarity index 100% rename from src/Faker/Provider/es_PE/Address.php rename to src/Provider/es_PE/Address.php diff --git a/src/Faker/Provider/es_PE/Company.php b/src/Provider/es_PE/Company.php similarity index 100% rename from src/Faker/Provider/es_PE/Company.php rename to src/Provider/es_PE/Company.php diff --git a/src/Faker/Provider/es_PE/Person.php b/src/Provider/es_PE/Person.php similarity index 100% rename from src/Faker/Provider/es_PE/Person.php rename to src/Provider/es_PE/Person.php diff --git a/src/Faker/Provider/es_PE/PhoneNumber.php b/src/Provider/es_PE/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/es_PE/PhoneNumber.php rename to src/Provider/es_PE/PhoneNumber.php diff --git a/src/Faker/Provider/es_VE/Address.php b/src/Provider/es_VE/Address.php similarity index 100% rename from src/Faker/Provider/es_VE/Address.php rename to src/Provider/es_VE/Address.php diff --git a/src/Faker/Provider/es_VE/Company.php b/src/Provider/es_VE/Company.php similarity index 100% rename from src/Faker/Provider/es_VE/Company.php rename to src/Provider/es_VE/Company.php diff --git a/src/Faker/Provider/es_VE/Internet.php b/src/Provider/es_VE/Internet.php similarity index 100% rename from src/Faker/Provider/es_VE/Internet.php rename to src/Provider/es_VE/Internet.php diff --git a/src/Faker/Provider/es_VE/Person.php b/src/Provider/es_VE/Person.php similarity index 100% rename from src/Faker/Provider/es_VE/Person.php rename to src/Provider/es_VE/Person.php diff --git a/src/Faker/Provider/es_VE/PhoneNumber.php b/src/Provider/es_VE/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/es_VE/PhoneNumber.php rename to src/Provider/es_VE/PhoneNumber.php diff --git a/src/Faker/Provider/et_EE/Person.php b/src/Provider/et_EE/Person.php similarity index 100% rename from src/Faker/Provider/et_EE/Person.php rename to src/Provider/et_EE/Person.php diff --git a/src/Faker/Provider/fa_IR/Address.php b/src/Provider/fa_IR/Address.php similarity index 100% rename from src/Faker/Provider/fa_IR/Address.php rename to src/Provider/fa_IR/Address.php diff --git a/src/Faker/Provider/fa_IR/Company.php b/src/Provider/fa_IR/Company.php similarity index 100% rename from src/Faker/Provider/fa_IR/Company.php rename to src/Provider/fa_IR/Company.php diff --git a/src/Faker/Provider/fa_IR/Internet.php b/src/Provider/fa_IR/Internet.php similarity index 100% rename from src/Faker/Provider/fa_IR/Internet.php rename to src/Provider/fa_IR/Internet.php diff --git a/src/Faker/Provider/fa_IR/Person.php b/src/Provider/fa_IR/Person.php similarity index 100% rename from src/Faker/Provider/fa_IR/Person.php rename to src/Provider/fa_IR/Person.php diff --git a/src/Faker/Provider/fa_IR/PhoneNumber.php b/src/Provider/fa_IR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/fa_IR/PhoneNumber.php rename to src/Provider/fa_IR/PhoneNumber.php diff --git a/src/Faker/Provider/fa_IR/Text.php b/src/Provider/fa_IR/Text.php similarity index 100% rename from src/Faker/Provider/fa_IR/Text.php rename to src/Provider/fa_IR/Text.php diff --git a/src/Faker/Provider/fi_FI/Address.php b/src/Provider/fi_FI/Address.php similarity index 100% rename from src/Faker/Provider/fi_FI/Address.php rename to src/Provider/fi_FI/Address.php diff --git a/src/Faker/Provider/fi_FI/Company.php b/src/Provider/fi_FI/Company.php similarity index 100% rename from src/Faker/Provider/fi_FI/Company.php rename to src/Provider/fi_FI/Company.php diff --git a/src/Faker/Provider/fi_FI/Internet.php b/src/Provider/fi_FI/Internet.php similarity index 100% rename from src/Faker/Provider/fi_FI/Internet.php rename to src/Provider/fi_FI/Internet.php diff --git a/src/Faker/Provider/fi_FI/Payment.php b/src/Provider/fi_FI/Payment.php similarity index 100% rename from src/Faker/Provider/fi_FI/Payment.php rename to src/Provider/fi_FI/Payment.php diff --git a/src/Faker/Provider/fi_FI/Person.php b/src/Provider/fi_FI/Person.php similarity index 100% rename from src/Faker/Provider/fi_FI/Person.php rename to src/Provider/fi_FI/Person.php diff --git a/src/Faker/Provider/fi_FI/PhoneNumber.php b/src/Provider/fi_FI/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/fi_FI/PhoneNumber.php rename to src/Provider/fi_FI/PhoneNumber.php diff --git a/src/Faker/Provider/fr_BE/Address.php b/src/Provider/fr_BE/Address.php similarity index 100% rename from src/Faker/Provider/fr_BE/Address.php rename to src/Provider/fr_BE/Address.php diff --git a/src/Faker/Provider/fr_BE/Color.php b/src/Provider/fr_BE/Color.php similarity index 100% rename from src/Faker/Provider/fr_BE/Color.php rename to src/Provider/fr_BE/Color.php diff --git a/src/Faker/Provider/fr_BE/Company.php b/src/Provider/fr_BE/Company.php similarity index 100% rename from src/Faker/Provider/fr_BE/Company.php rename to src/Provider/fr_BE/Company.php diff --git a/src/Faker/Provider/fr_BE/Internet.php b/src/Provider/fr_BE/Internet.php similarity index 100% rename from src/Faker/Provider/fr_BE/Internet.php rename to src/Provider/fr_BE/Internet.php diff --git a/src/Faker/Provider/fr_BE/Payment.php b/src/Provider/fr_BE/Payment.php similarity index 100% rename from src/Faker/Provider/fr_BE/Payment.php rename to src/Provider/fr_BE/Payment.php diff --git a/src/Faker/Provider/fr_BE/Person.php b/src/Provider/fr_BE/Person.php similarity index 100% rename from src/Faker/Provider/fr_BE/Person.php rename to src/Provider/fr_BE/Person.php diff --git a/src/Faker/Provider/fr_BE/PhoneNumber.php b/src/Provider/fr_BE/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/fr_BE/PhoneNumber.php rename to src/Provider/fr_BE/PhoneNumber.php diff --git a/src/Faker/Provider/fr_CA/Address.php b/src/Provider/fr_CA/Address.php similarity index 100% rename from src/Faker/Provider/fr_CA/Address.php rename to src/Provider/fr_CA/Address.php diff --git a/src/Faker/Provider/fr_CA/Color.php b/src/Provider/fr_CA/Color.php similarity index 100% rename from src/Faker/Provider/fr_CA/Color.php rename to src/Provider/fr_CA/Color.php diff --git a/src/Faker/Provider/fr_CA/Company.php b/src/Provider/fr_CA/Company.php similarity index 100% rename from src/Faker/Provider/fr_CA/Company.php rename to src/Provider/fr_CA/Company.php diff --git a/src/Faker/Provider/fr_CA/Person.php b/src/Provider/fr_CA/Person.php similarity index 100% rename from src/Faker/Provider/fr_CA/Person.php rename to src/Provider/fr_CA/Person.php diff --git a/src/Faker/Provider/fr_CA/Text.php b/src/Provider/fr_CA/Text.php similarity index 100% rename from src/Faker/Provider/fr_CA/Text.php rename to src/Provider/fr_CA/Text.php diff --git a/src/Faker/Provider/fr_CH/Address.php b/src/Provider/fr_CH/Address.php similarity index 100% rename from src/Faker/Provider/fr_CH/Address.php rename to src/Provider/fr_CH/Address.php diff --git a/src/Faker/Provider/fr_CH/Color.php b/src/Provider/fr_CH/Color.php similarity index 100% rename from src/Faker/Provider/fr_CH/Color.php rename to src/Provider/fr_CH/Color.php diff --git a/src/Faker/Provider/fr_CH/Company.php b/src/Provider/fr_CH/Company.php similarity index 100% rename from src/Faker/Provider/fr_CH/Company.php rename to src/Provider/fr_CH/Company.php diff --git a/src/Faker/Provider/fr_CH/Internet.php b/src/Provider/fr_CH/Internet.php similarity index 100% rename from src/Faker/Provider/fr_CH/Internet.php rename to src/Provider/fr_CH/Internet.php diff --git a/src/Faker/Provider/fr_CH/Payment.php b/src/Provider/fr_CH/Payment.php similarity index 100% rename from src/Faker/Provider/fr_CH/Payment.php rename to src/Provider/fr_CH/Payment.php diff --git a/src/Faker/Provider/fr_CH/Person.php b/src/Provider/fr_CH/Person.php similarity index 100% rename from src/Faker/Provider/fr_CH/Person.php rename to src/Provider/fr_CH/Person.php diff --git a/src/Faker/Provider/fr_CH/PhoneNumber.php b/src/Provider/fr_CH/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/fr_CH/PhoneNumber.php rename to src/Provider/fr_CH/PhoneNumber.php diff --git a/src/Faker/Provider/fr_CH/Text.php b/src/Provider/fr_CH/Text.php similarity index 100% rename from src/Faker/Provider/fr_CH/Text.php rename to src/Provider/fr_CH/Text.php diff --git a/src/Faker/Provider/fr_FR/Address.php b/src/Provider/fr_FR/Address.php similarity index 100% rename from src/Faker/Provider/fr_FR/Address.php rename to src/Provider/fr_FR/Address.php diff --git a/src/Faker/Provider/fr_FR/Color.php b/src/Provider/fr_FR/Color.php similarity index 100% rename from src/Faker/Provider/fr_FR/Color.php rename to src/Provider/fr_FR/Color.php diff --git a/src/Faker/Provider/fr_FR/Company.php b/src/Provider/fr_FR/Company.php similarity index 100% rename from src/Faker/Provider/fr_FR/Company.php rename to src/Provider/fr_FR/Company.php diff --git a/src/Faker/Provider/fr_FR/Internet.php b/src/Provider/fr_FR/Internet.php similarity index 100% rename from src/Faker/Provider/fr_FR/Internet.php rename to src/Provider/fr_FR/Internet.php diff --git a/src/Faker/Provider/fr_FR/Payment.php b/src/Provider/fr_FR/Payment.php similarity index 100% rename from src/Faker/Provider/fr_FR/Payment.php rename to src/Provider/fr_FR/Payment.php diff --git a/src/Faker/Provider/fr_FR/Person.php b/src/Provider/fr_FR/Person.php similarity index 100% rename from src/Faker/Provider/fr_FR/Person.php rename to src/Provider/fr_FR/Person.php diff --git a/src/Faker/Provider/fr_FR/PhoneNumber.php b/src/Provider/fr_FR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/fr_FR/PhoneNumber.php rename to src/Provider/fr_FR/PhoneNumber.php diff --git a/src/Faker/Provider/fr_FR/Text.php b/src/Provider/fr_FR/Text.php similarity index 100% rename from src/Faker/Provider/fr_FR/Text.php rename to src/Provider/fr_FR/Text.php diff --git a/src/Faker/Provider/he_IL/Address.php b/src/Provider/he_IL/Address.php similarity index 100% rename from src/Faker/Provider/he_IL/Address.php rename to src/Provider/he_IL/Address.php diff --git a/src/Faker/Provider/he_IL/Company.php b/src/Provider/he_IL/Company.php similarity index 100% rename from src/Faker/Provider/he_IL/Company.php rename to src/Provider/he_IL/Company.php diff --git a/src/Faker/Provider/he_IL/Payment.php b/src/Provider/he_IL/Payment.php similarity index 100% rename from src/Faker/Provider/he_IL/Payment.php rename to src/Provider/he_IL/Payment.php diff --git a/src/Faker/Provider/he_IL/Person.php b/src/Provider/he_IL/Person.php similarity index 100% rename from src/Faker/Provider/he_IL/Person.php rename to src/Provider/he_IL/Person.php diff --git a/src/Faker/Provider/he_IL/PhoneNumber.php b/src/Provider/he_IL/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/he_IL/PhoneNumber.php rename to src/Provider/he_IL/PhoneNumber.php diff --git a/src/Faker/Provider/hr_HR/Address.php b/src/Provider/hr_HR/Address.php similarity index 100% rename from src/Faker/Provider/hr_HR/Address.php rename to src/Provider/hr_HR/Address.php diff --git a/src/Faker/Provider/hr_HR/Company.php b/src/Provider/hr_HR/Company.php similarity index 100% rename from src/Faker/Provider/hr_HR/Company.php rename to src/Provider/hr_HR/Company.php diff --git a/src/Faker/Provider/hr_HR/Payment.php b/src/Provider/hr_HR/Payment.php similarity index 100% rename from src/Faker/Provider/hr_HR/Payment.php rename to src/Provider/hr_HR/Payment.php diff --git a/src/Faker/Provider/hr_HR/Person.php b/src/Provider/hr_HR/Person.php similarity index 100% rename from src/Faker/Provider/hr_HR/Person.php rename to src/Provider/hr_HR/Person.php diff --git a/src/Faker/Provider/hr_HR/PhoneNumber.php b/src/Provider/hr_HR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/hr_HR/PhoneNumber.php rename to src/Provider/hr_HR/PhoneNumber.php diff --git a/src/Faker/Provider/hu_HU/Address.php b/src/Provider/hu_HU/Address.php similarity index 100% rename from src/Faker/Provider/hu_HU/Address.php rename to src/Provider/hu_HU/Address.php diff --git a/src/Faker/Provider/hu_HU/Company.php b/src/Provider/hu_HU/Company.php similarity index 100% rename from src/Faker/Provider/hu_HU/Company.php rename to src/Provider/hu_HU/Company.php diff --git a/src/Faker/Provider/hu_HU/Payment.php b/src/Provider/hu_HU/Payment.php similarity index 100% rename from src/Faker/Provider/hu_HU/Payment.php rename to src/Provider/hu_HU/Payment.php diff --git a/src/Faker/Provider/hu_HU/Person.php b/src/Provider/hu_HU/Person.php similarity index 100% rename from src/Faker/Provider/hu_HU/Person.php rename to src/Provider/hu_HU/Person.php diff --git a/src/Faker/Provider/hu_HU/PhoneNumber.php b/src/Provider/hu_HU/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/hu_HU/PhoneNumber.php rename to src/Provider/hu_HU/PhoneNumber.php diff --git a/src/Faker/Provider/hu_HU/Text.php b/src/Provider/hu_HU/Text.php similarity index 100% rename from src/Faker/Provider/hu_HU/Text.php rename to src/Provider/hu_HU/Text.php diff --git a/src/Faker/Provider/hy_AM/Address.php b/src/Provider/hy_AM/Address.php similarity index 100% rename from src/Faker/Provider/hy_AM/Address.php rename to src/Provider/hy_AM/Address.php diff --git a/src/Faker/Provider/hy_AM/Color.php b/src/Provider/hy_AM/Color.php similarity index 100% rename from src/Faker/Provider/hy_AM/Color.php rename to src/Provider/hy_AM/Color.php diff --git a/src/Faker/Provider/hy_AM/Company.php b/src/Provider/hy_AM/Company.php similarity index 100% rename from src/Faker/Provider/hy_AM/Company.php rename to src/Provider/hy_AM/Company.php diff --git a/src/Faker/Provider/hy_AM/Internet.php b/src/Provider/hy_AM/Internet.php similarity index 100% rename from src/Faker/Provider/hy_AM/Internet.php rename to src/Provider/hy_AM/Internet.php diff --git a/src/Faker/Provider/hy_AM/Person.php b/src/Provider/hy_AM/Person.php similarity index 100% rename from src/Faker/Provider/hy_AM/Person.php rename to src/Provider/hy_AM/Person.php diff --git a/src/Faker/Provider/hy_AM/PhoneNumber.php b/src/Provider/hy_AM/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/hy_AM/PhoneNumber.php rename to src/Provider/hy_AM/PhoneNumber.php diff --git a/src/Faker/Provider/id_ID/Address.php b/src/Provider/id_ID/Address.php similarity index 100% rename from src/Faker/Provider/id_ID/Address.php rename to src/Provider/id_ID/Address.php diff --git a/src/Faker/Provider/id_ID/Color.php b/src/Provider/id_ID/Color.php similarity index 100% rename from src/Faker/Provider/id_ID/Color.php rename to src/Provider/id_ID/Color.php diff --git a/src/Faker/Provider/id_ID/Company.php b/src/Provider/id_ID/Company.php similarity index 100% rename from src/Faker/Provider/id_ID/Company.php rename to src/Provider/id_ID/Company.php diff --git a/src/Faker/Provider/id_ID/Internet.php b/src/Provider/id_ID/Internet.php similarity index 100% rename from src/Faker/Provider/id_ID/Internet.php rename to src/Provider/id_ID/Internet.php diff --git a/src/Faker/Provider/id_ID/Person.php b/src/Provider/id_ID/Person.php similarity index 100% rename from src/Faker/Provider/id_ID/Person.php rename to src/Provider/id_ID/Person.php diff --git a/src/Faker/Provider/id_ID/PhoneNumber.php b/src/Provider/id_ID/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/id_ID/PhoneNumber.php rename to src/Provider/id_ID/PhoneNumber.php diff --git a/src/Faker/Provider/is_IS/Address.php b/src/Provider/is_IS/Address.php similarity index 100% rename from src/Faker/Provider/is_IS/Address.php rename to src/Provider/is_IS/Address.php diff --git a/src/Faker/Provider/is_IS/Company.php b/src/Provider/is_IS/Company.php similarity index 100% rename from src/Faker/Provider/is_IS/Company.php rename to src/Provider/is_IS/Company.php diff --git a/src/Faker/Provider/is_IS/Internet.php b/src/Provider/is_IS/Internet.php similarity index 100% rename from src/Faker/Provider/is_IS/Internet.php rename to src/Provider/is_IS/Internet.php diff --git a/src/Faker/Provider/is_IS/Payment.php b/src/Provider/is_IS/Payment.php similarity index 100% rename from src/Faker/Provider/is_IS/Payment.php rename to src/Provider/is_IS/Payment.php diff --git a/src/Faker/Provider/is_IS/Person.php b/src/Provider/is_IS/Person.php similarity index 100% rename from src/Faker/Provider/is_IS/Person.php rename to src/Provider/is_IS/Person.php diff --git a/src/Faker/Provider/is_IS/PhoneNumber.php b/src/Provider/is_IS/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/is_IS/PhoneNumber.php rename to src/Provider/is_IS/PhoneNumber.php diff --git a/src/Faker/Provider/it_CH/Address.php b/src/Provider/it_CH/Address.php similarity index 100% rename from src/Faker/Provider/it_CH/Address.php rename to src/Provider/it_CH/Address.php diff --git a/src/Faker/Provider/it_CH/Company.php b/src/Provider/it_CH/Company.php similarity index 100% rename from src/Faker/Provider/it_CH/Company.php rename to src/Provider/it_CH/Company.php diff --git a/src/Faker/Provider/it_CH/Internet.php b/src/Provider/it_CH/Internet.php similarity index 100% rename from src/Faker/Provider/it_CH/Internet.php rename to src/Provider/it_CH/Internet.php diff --git a/src/Faker/Provider/it_CH/Payment.php b/src/Provider/it_CH/Payment.php similarity index 100% rename from src/Faker/Provider/it_CH/Payment.php rename to src/Provider/it_CH/Payment.php diff --git a/src/Faker/Provider/it_CH/Person.php b/src/Provider/it_CH/Person.php similarity index 100% rename from src/Faker/Provider/it_CH/Person.php rename to src/Provider/it_CH/Person.php diff --git a/src/Faker/Provider/it_CH/PhoneNumber.php b/src/Provider/it_CH/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/it_CH/PhoneNumber.php rename to src/Provider/it_CH/PhoneNumber.php diff --git a/src/Faker/Provider/it_CH/Text.php b/src/Provider/it_CH/Text.php similarity index 100% rename from src/Faker/Provider/it_CH/Text.php rename to src/Provider/it_CH/Text.php diff --git a/src/Faker/Provider/it_IT/Address.php b/src/Provider/it_IT/Address.php similarity index 100% rename from src/Faker/Provider/it_IT/Address.php rename to src/Provider/it_IT/Address.php diff --git a/src/Faker/Provider/it_IT/Company.php b/src/Provider/it_IT/Company.php similarity index 100% rename from src/Faker/Provider/it_IT/Company.php rename to src/Provider/it_IT/Company.php diff --git a/src/Faker/Provider/it_IT/Internet.php b/src/Provider/it_IT/Internet.php similarity index 100% rename from src/Faker/Provider/it_IT/Internet.php rename to src/Provider/it_IT/Internet.php diff --git a/src/Faker/Provider/it_IT/Payment.php b/src/Provider/it_IT/Payment.php similarity index 100% rename from src/Faker/Provider/it_IT/Payment.php rename to src/Provider/it_IT/Payment.php diff --git a/src/Faker/Provider/it_IT/Person.php b/src/Provider/it_IT/Person.php similarity index 100% rename from src/Faker/Provider/it_IT/Person.php rename to src/Provider/it_IT/Person.php diff --git a/src/Faker/Provider/it_IT/PhoneNumber.php b/src/Provider/it_IT/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/it_IT/PhoneNumber.php rename to src/Provider/it_IT/PhoneNumber.php diff --git a/src/Faker/Provider/it_IT/Text.php b/src/Provider/it_IT/Text.php similarity index 100% rename from src/Faker/Provider/it_IT/Text.php rename to src/Provider/it_IT/Text.php diff --git a/src/Faker/Provider/ja_JP/Address.php b/src/Provider/ja_JP/Address.php similarity index 100% rename from src/Faker/Provider/ja_JP/Address.php rename to src/Provider/ja_JP/Address.php diff --git a/src/Faker/Provider/ja_JP/Company.php b/src/Provider/ja_JP/Company.php similarity index 100% rename from src/Faker/Provider/ja_JP/Company.php rename to src/Provider/ja_JP/Company.php diff --git a/src/Faker/Provider/ja_JP/Internet.php b/src/Provider/ja_JP/Internet.php similarity index 100% rename from src/Faker/Provider/ja_JP/Internet.php rename to src/Provider/ja_JP/Internet.php diff --git a/src/Faker/Provider/ja_JP/Person.php b/src/Provider/ja_JP/Person.php similarity index 100% rename from src/Faker/Provider/ja_JP/Person.php rename to src/Provider/ja_JP/Person.php diff --git a/src/Faker/Provider/ja_JP/PhoneNumber.php b/src/Provider/ja_JP/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ja_JP/PhoneNumber.php rename to src/Provider/ja_JP/PhoneNumber.php diff --git a/src/Faker/Provider/ja_JP/Text.php b/src/Provider/ja_JP/Text.php similarity index 100% rename from src/Faker/Provider/ja_JP/Text.php rename to src/Provider/ja_JP/Text.php diff --git a/src/Faker/Provider/ka_GE/Address.php b/src/Provider/ka_GE/Address.php similarity index 100% rename from src/Faker/Provider/ka_GE/Address.php rename to src/Provider/ka_GE/Address.php diff --git a/src/Faker/Provider/ka_GE/Color.php b/src/Provider/ka_GE/Color.php similarity index 100% rename from src/Faker/Provider/ka_GE/Color.php rename to src/Provider/ka_GE/Color.php diff --git a/src/Faker/Provider/ka_GE/Company.php b/src/Provider/ka_GE/Company.php similarity index 100% rename from src/Faker/Provider/ka_GE/Company.php rename to src/Provider/ka_GE/Company.php diff --git a/src/Faker/Provider/ka_GE/DateTime.php b/src/Provider/ka_GE/DateTime.php similarity index 100% rename from src/Faker/Provider/ka_GE/DateTime.php rename to src/Provider/ka_GE/DateTime.php diff --git a/src/Faker/Provider/ka_GE/Internet.php b/src/Provider/ka_GE/Internet.php similarity index 100% rename from src/Faker/Provider/ka_GE/Internet.php rename to src/Provider/ka_GE/Internet.php diff --git a/src/Faker/Provider/ka_GE/Payment.php b/src/Provider/ka_GE/Payment.php similarity index 100% rename from src/Faker/Provider/ka_GE/Payment.php rename to src/Provider/ka_GE/Payment.php diff --git a/src/Faker/Provider/ka_GE/Person.php b/src/Provider/ka_GE/Person.php similarity index 100% rename from src/Faker/Provider/ka_GE/Person.php rename to src/Provider/ka_GE/Person.php diff --git a/src/Faker/Provider/ka_GE/PhoneNumber.php b/src/Provider/ka_GE/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ka_GE/PhoneNumber.php rename to src/Provider/ka_GE/PhoneNumber.php diff --git a/src/Faker/Provider/ka_GE/Text.php b/src/Provider/ka_GE/Text.php similarity index 100% rename from src/Faker/Provider/ka_GE/Text.php rename to src/Provider/ka_GE/Text.php diff --git a/src/Faker/Provider/kk_KZ/Address.php b/src/Provider/kk_KZ/Address.php similarity index 100% rename from src/Faker/Provider/kk_KZ/Address.php rename to src/Provider/kk_KZ/Address.php diff --git a/src/Faker/Provider/kk_KZ/Color.php b/src/Provider/kk_KZ/Color.php similarity index 100% rename from src/Faker/Provider/kk_KZ/Color.php rename to src/Provider/kk_KZ/Color.php diff --git a/src/Faker/Provider/kk_KZ/Company.php b/src/Provider/kk_KZ/Company.php similarity index 100% rename from src/Faker/Provider/kk_KZ/Company.php rename to src/Provider/kk_KZ/Company.php diff --git a/src/Faker/Provider/kk_KZ/Internet.php b/src/Provider/kk_KZ/Internet.php similarity index 100% rename from src/Faker/Provider/kk_KZ/Internet.php rename to src/Provider/kk_KZ/Internet.php diff --git a/src/Faker/Provider/kk_KZ/Payment.php b/src/Provider/kk_KZ/Payment.php similarity index 100% rename from src/Faker/Provider/kk_KZ/Payment.php rename to src/Provider/kk_KZ/Payment.php diff --git a/src/Faker/Provider/kk_KZ/Person.php b/src/Provider/kk_KZ/Person.php similarity index 100% rename from src/Faker/Provider/kk_KZ/Person.php rename to src/Provider/kk_KZ/Person.php diff --git a/src/Faker/Provider/kk_KZ/PhoneNumber.php b/src/Provider/kk_KZ/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/kk_KZ/PhoneNumber.php rename to src/Provider/kk_KZ/PhoneNumber.php diff --git a/src/Faker/Provider/kk_KZ/Text.php b/src/Provider/kk_KZ/Text.php similarity index 100% rename from src/Faker/Provider/kk_KZ/Text.php rename to src/Provider/kk_KZ/Text.php diff --git a/src/Faker/Provider/ko_KR/Address.php b/src/Provider/ko_KR/Address.php similarity index 100% rename from src/Faker/Provider/ko_KR/Address.php rename to src/Provider/ko_KR/Address.php diff --git a/src/Faker/Provider/ko_KR/Company.php b/src/Provider/ko_KR/Company.php similarity index 100% rename from src/Faker/Provider/ko_KR/Company.php rename to src/Provider/ko_KR/Company.php diff --git a/src/Faker/Provider/ko_KR/Internet.php b/src/Provider/ko_KR/Internet.php similarity index 100% rename from src/Faker/Provider/ko_KR/Internet.php rename to src/Provider/ko_KR/Internet.php diff --git a/src/Faker/Provider/ko_KR/Person.php b/src/Provider/ko_KR/Person.php similarity index 100% rename from src/Faker/Provider/ko_KR/Person.php rename to src/Provider/ko_KR/Person.php diff --git a/src/Faker/Provider/ko_KR/PhoneNumber.php b/src/Provider/ko_KR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ko_KR/PhoneNumber.php rename to src/Provider/ko_KR/PhoneNumber.php diff --git a/src/Faker/Provider/ko_KR/Text.php b/src/Provider/ko_KR/Text.php similarity index 100% rename from src/Faker/Provider/ko_KR/Text.php rename to src/Provider/ko_KR/Text.php diff --git a/src/Faker/Provider/lt_LT/Address.php b/src/Provider/lt_LT/Address.php similarity index 100% rename from src/Faker/Provider/lt_LT/Address.php rename to src/Provider/lt_LT/Address.php diff --git a/src/Faker/Provider/lt_LT/Company.php b/src/Provider/lt_LT/Company.php similarity index 100% rename from src/Faker/Provider/lt_LT/Company.php rename to src/Provider/lt_LT/Company.php diff --git a/src/Faker/Provider/lt_LT/Internet.php b/src/Provider/lt_LT/Internet.php similarity index 100% rename from src/Faker/Provider/lt_LT/Internet.php rename to src/Provider/lt_LT/Internet.php diff --git a/src/Faker/Provider/lt_LT/Payment.php b/src/Provider/lt_LT/Payment.php similarity index 100% rename from src/Faker/Provider/lt_LT/Payment.php rename to src/Provider/lt_LT/Payment.php diff --git a/src/Faker/Provider/lt_LT/Person.php b/src/Provider/lt_LT/Person.php similarity index 100% rename from src/Faker/Provider/lt_LT/Person.php rename to src/Provider/lt_LT/Person.php diff --git a/src/Faker/Provider/lt_LT/PhoneNumber.php b/src/Provider/lt_LT/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/lt_LT/PhoneNumber.php rename to src/Provider/lt_LT/PhoneNumber.php diff --git a/src/Faker/Provider/lv_LV/Address.php b/src/Provider/lv_LV/Address.php similarity index 100% rename from src/Faker/Provider/lv_LV/Address.php rename to src/Provider/lv_LV/Address.php diff --git a/src/Faker/Provider/lv_LV/Color.php b/src/Provider/lv_LV/Color.php similarity index 100% rename from src/Faker/Provider/lv_LV/Color.php rename to src/Provider/lv_LV/Color.php diff --git a/src/Faker/Provider/lv_LV/Internet.php b/src/Provider/lv_LV/Internet.php similarity index 100% rename from src/Faker/Provider/lv_LV/Internet.php rename to src/Provider/lv_LV/Internet.php diff --git a/src/Faker/Provider/lv_LV/Payment.php b/src/Provider/lv_LV/Payment.php similarity index 100% rename from src/Faker/Provider/lv_LV/Payment.php rename to src/Provider/lv_LV/Payment.php diff --git a/src/Faker/Provider/lv_LV/Person.php b/src/Provider/lv_LV/Person.php similarity index 100% rename from src/Faker/Provider/lv_LV/Person.php rename to src/Provider/lv_LV/Person.php diff --git a/src/Faker/Provider/lv_LV/PhoneNumber.php b/src/Provider/lv_LV/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/lv_LV/PhoneNumber.php rename to src/Provider/lv_LV/PhoneNumber.php diff --git a/src/Faker/Provider/me_ME/Address.php b/src/Provider/me_ME/Address.php similarity index 100% rename from src/Faker/Provider/me_ME/Address.php rename to src/Provider/me_ME/Address.php diff --git a/src/Faker/Provider/me_ME/Company.php b/src/Provider/me_ME/Company.php similarity index 100% rename from src/Faker/Provider/me_ME/Company.php rename to src/Provider/me_ME/Company.php diff --git a/src/Faker/Provider/me_ME/Payment.php b/src/Provider/me_ME/Payment.php similarity index 100% rename from src/Faker/Provider/me_ME/Payment.php rename to src/Provider/me_ME/Payment.php diff --git a/src/Faker/Provider/me_ME/Person.php b/src/Provider/me_ME/Person.php similarity index 100% rename from src/Faker/Provider/me_ME/Person.php rename to src/Provider/me_ME/Person.php diff --git a/src/Faker/Provider/me_ME/PhoneNumber.php b/src/Provider/me_ME/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/me_ME/PhoneNumber.php rename to src/Provider/me_ME/PhoneNumber.php diff --git a/src/Faker/Provider/mn_MN/Person.php b/src/Provider/mn_MN/Person.php similarity index 100% rename from src/Faker/Provider/mn_MN/Person.php rename to src/Provider/mn_MN/Person.php diff --git a/src/Faker/Provider/mn_MN/PhoneNumber.php b/src/Provider/mn_MN/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/mn_MN/PhoneNumber.php rename to src/Provider/mn_MN/PhoneNumber.php diff --git a/src/Faker/Provider/ms_MY/Address.php b/src/Provider/ms_MY/Address.php similarity index 100% rename from src/Faker/Provider/ms_MY/Address.php rename to src/Provider/ms_MY/Address.php diff --git a/src/Faker/Provider/ms_MY/Company.php b/src/Provider/ms_MY/Company.php similarity index 100% rename from src/Faker/Provider/ms_MY/Company.php rename to src/Provider/ms_MY/Company.php diff --git a/src/Faker/Provider/ms_MY/Miscellaneous.php b/src/Provider/ms_MY/Miscellaneous.php similarity index 100% rename from src/Faker/Provider/ms_MY/Miscellaneous.php rename to src/Provider/ms_MY/Miscellaneous.php diff --git a/src/Faker/Provider/ms_MY/Payment.php b/src/Provider/ms_MY/Payment.php similarity index 100% rename from src/Faker/Provider/ms_MY/Payment.php rename to src/Provider/ms_MY/Payment.php diff --git a/src/Faker/Provider/ms_MY/Person.php b/src/Provider/ms_MY/Person.php similarity index 100% rename from src/Faker/Provider/ms_MY/Person.php rename to src/Provider/ms_MY/Person.php diff --git a/src/Faker/Provider/ms_MY/PhoneNumber.php b/src/Provider/ms_MY/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ms_MY/PhoneNumber.php rename to src/Provider/ms_MY/PhoneNumber.php diff --git a/src/Faker/Provider/nb_NO/Address.php b/src/Provider/nb_NO/Address.php similarity index 100% rename from src/Faker/Provider/nb_NO/Address.php rename to src/Provider/nb_NO/Address.php diff --git a/src/Faker/Provider/nb_NO/Company.php b/src/Provider/nb_NO/Company.php similarity index 100% rename from src/Faker/Provider/nb_NO/Company.php rename to src/Provider/nb_NO/Company.php diff --git a/src/Faker/Provider/nb_NO/Payment.php b/src/Provider/nb_NO/Payment.php similarity index 100% rename from src/Faker/Provider/nb_NO/Payment.php rename to src/Provider/nb_NO/Payment.php diff --git a/src/Faker/Provider/nb_NO/Person.php b/src/Provider/nb_NO/Person.php similarity index 100% rename from src/Faker/Provider/nb_NO/Person.php rename to src/Provider/nb_NO/Person.php diff --git a/src/Faker/Provider/nb_NO/PhoneNumber.php b/src/Provider/nb_NO/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/nb_NO/PhoneNumber.php rename to src/Provider/nb_NO/PhoneNumber.php diff --git a/src/Faker/Provider/ne_NP/Address.php b/src/Provider/ne_NP/Address.php similarity index 100% rename from src/Faker/Provider/ne_NP/Address.php rename to src/Provider/ne_NP/Address.php diff --git a/src/Faker/Provider/ne_NP/Internet.php b/src/Provider/ne_NP/Internet.php similarity index 100% rename from src/Faker/Provider/ne_NP/Internet.php rename to src/Provider/ne_NP/Internet.php diff --git a/src/Faker/Provider/ne_NP/Payment.php b/src/Provider/ne_NP/Payment.php similarity index 100% rename from src/Faker/Provider/ne_NP/Payment.php rename to src/Provider/ne_NP/Payment.php diff --git a/src/Faker/Provider/ne_NP/Person.php b/src/Provider/ne_NP/Person.php similarity index 100% rename from src/Faker/Provider/ne_NP/Person.php rename to src/Provider/ne_NP/Person.php diff --git a/src/Faker/Provider/ne_NP/PhoneNumber.php b/src/Provider/ne_NP/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ne_NP/PhoneNumber.php rename to src/Provider/ne_NP/PhoneNumber.php diff --git a/src/Faker/Provider/nl_BE/Address.php b/src/Provider/nl_BE/Address.php similarity index 100% rename from src/Faker/Provider/nl_BE/Address.php rename to src/Provider/nl_BE/Address.php diff --git a/src/Faker/Provider/nl_BE/Company.php b/src/Provider/nl_BE/Company.php similarity index 100% rename from src/Faker/Provider/nl_BE/Company.php rename to src/Provider/nl_BE/Company.php diff --git a/src/Faker/Provider/nl_BE/Internet.php b/src/Provider/nl_BE/Internet.php similarity index 100% rename from src/Faker/Provider/nl_BE/Internet.php rename to src/Provider/nl_BE/Internet.php diff --git a/src/Faker/Provider/nl_BE/Payment.php b/src/Provider/nl_BE/Payment.php similarity index 100% rename from src/Faker/Provider/nl_BE/Payment.php rename to src/Provider/nl_BE/Payment.php diff --git a/src/Faker/Provider/nl_BE/Person.php b/src/Provider/nl_BE/Person.php similarity index 100% rename from src/Faker/Provider/nl_BE/Person.php rename to src/Provider/nl_BE/Person.php diff --git a/src/Faker/Provider/nl_BE/PhoneNumber.php b/src/Provider/nl_BE/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/nl_BE/PhoneNumber.php rename to src/Provider/nl_BE/PhoneNumber.php diff --git a/src/Faker/Provider/nl_BE/Text.php b/src/Provider/nl_BE/Text.php similarity index 100% rename from src/Faker/Provider/nl_BE/Text.php rename to src/Provider/nl_BE/Text.php diff --git a/src/Faker/Provider/nl_NL/Address.php b/src/Provider/nl_NL/Address.php similarity index 100% rename from src/Faker/Provider/nl_NL/Address.php rename to src/Provider/nl_NL/Address.php diff --git a/src/Faker/Provider/nl_NL/Color.php b/src/Provider/nl_NL/Color.php similarity index 100% rename from src/Faker/Provider/nl_NL/Color.php rename to src/Provider/nl_NL/Color.php diff --git a/src/Faker/Provider/nl_NL/Company.php b/src/Provider/nl_NL/Company.php similarity index 100% rename from src/Faker/Provider/nl_NL/Company.php rename to src/Provider/nl_NL/Company.php diff --git a/src/Faker/Provider/nl_NL/Internet.php b/src/Provider/nl_NL/Internet.php similarity index 100% rename from src/Faker/Provider/nl_NL/Internet.php rename to src/Provider/nl_NL/Internet.php diff --git a/src/Faker/Provider/nl_NL/Payment.php b/src/Provider/nl_NL/Payment.php similarity index 100% rename from src/Faker/Provider/nl_NL/Payment.php rename to src/Provider/nl_NL/Payment.php diff --git a/src/Faker/Provider/nl_NL/Person.php b/src/Provider/nl_NL/Person.php similarity index 100% rename from src/Faker/Provider/nl_NL/Person.php rename to src/Provider/nl_NL/Person.php diff --git a/src/Faker/Provider/nl_NL/PhoneNumber.php b/src/Provider/nl_NL/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/nl_NL/PhoneNumber.php rename to src/Provider/nl_NL/PhoneNumber.php diff --git a/src/Faker/Provider/nl_NL/Text.php b/src/Provider/nl_NL/Text.php similarity index 100% rename from src/Faker/Provider/nl_NL/Text.php rename to src/Provider/nl_NL/Text.php diff --git a/src/Faker/Provider/pl_PL/Address.php b/src/Provider/pl_PL/Address.php similarity index 100% rename from src/Faker/Provider/pl_PL/Address.php rename to src/Provider/pl_PL/Address.php diff --git a/src/Faker/Provider/pl_PL/Color.php b/src/Provider/pl_PL/Color.php similarity index 100% rename from src/Faker/Provider/pl_PL/Color.php rename to src/Provider/pl_PL/Color.php diff --git a/src/Faker/Provider/pl_PL/Company.php b/src/Provider/pl_PL/Company.php similarity index 100% rename from src/Faker/Provider/pl_PL/Company.php rename to src/Provider/pl_PL/Company.php diff --git a/src/Faker/Provider/pl_PL/Internet.php b/src/Provider/pl_PL/Internet.php similarity index 100% rename from src/Faker/Provider/pl_PL/Internet.php rename to src/Provider/pl_PL/Internet.php diff --git a/src/Faker/Provider/pl_PL/LicensePlate.php b/src/Provider/pl_PL/LicensePlate.php similarity index 100% rename from src/Faker/Provider/pl_PL/LicensePlate.php rename to src/Provider/pl_PL/LicensePlate.php diff --git a/src/Faker/Provider/pl_PL/Payment.php b/src/Provider/pl_PL/Payment.php similarity index 100% rename from src/Faker/Provider/pl_PL/Payment.php rename to src/Provider/pl_PL/Payment.php diff --git a/src/Faker/Provider/pl_PL/Person.php b/src/Provider/pl_PL/Person.php similarity index 100% rename from src/Faker/Provider/pl_PL/Person.php rename to src/Provider/pl_PL/Person.php diff --git a/src/Faker/Provider/pl_PL/PhoneNumber.php b/src/Provider/pl_PL/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/pl_PL/PhoneNumber.php rename to src/Provider/pl_PL/PhoneNumber.php diff --git a/src/Faker/Provider/pl_PL/Text.php b/src/Provider/pl_PL/Text.php similarity index 100% rename from src/Faker/Provider/pl_PL/Text.php rename to src/Provider/pl_PL/Text.php diff --git a/src/Faker/Provider/pt_BR/Address.php b/src/Provider/pt_BR/Address.php similarity index 100% rename from src/Faker/Provider/pt_BR/Address.php rename to src/Provider/pt_BR/Address.php diff --git a/src/Faker/Provider/pt_BR/Company.php b/src/Provider/pt_BR/Company.php similarity index 100% rename from src/Faker/Provider/pt_BR/Company.php rename to src/Provider/pt_BR/Company.php diff --git a/src/Faker/Provider/pt_BR/Internet.php b/src/Provider/pt_BR/Internet.php similarity index 100% rename from src/Faker/Provider/pt_BR/Internet.php rename to src/Provider/pt_BR/Internet.php diff --git a/src/Faker/Provider/pt_BR/Payment.php b/src/Provider/pt_BR/Payment.php similarity index 100% rename from src/Faker/Provider/pt_BR/Payment.php rename to src/Provider/pt_BR/Payment.php diff --git a/src/Faker/Provider/pt_BR/Person.php b/src/Provider/pt_BR/Person.php similarity index 100% rename from src/Faker/Provider/pt_BR/Person.php rename to src/Provider/pt_BR/Person.php diff --git a/src/Faker/Provider/pt_BR/PhoneNumber.php b/src/Provider/pt_BR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/pt_BR/PhoneNumber.php rename to src/Provider/pt_BR/PhoneNumber.php diff --git a/src/Faker/Provider/pt_BR/Text.php b/src/Provider/pt_BR/Text.php similarity index 100% rename from src/Faker/Provider/pt_BR/Text.php rename to src/Provider/pt_BR/Text.php diff --git a/src/Faker/Provider/pt_BR/check_digit.php b/src/Provider/pt_BR/check_digit.php similarity index 100% rename from src/Faker/Provider/pt_BR/check_digit.php rename to src/Provider/pt_BR/check_digit.php diff --git a/src/Faker/Provider/pt_PT/Address.php b/src/Provider/pt_PT/Address.php similarity index 100% rename from src/Faker/Provider/pt_PT/Address.php rename to src/Provider/pt_PT/Address.php diff --git a/src/Faker/Provider/pt_PT/Company.php b/src/Provider/pt_PT/Company.php similarity index 100% rename from src/Faker/Provider/pt_PT/Company.php rename to src/Provider/pt_PT/Company.php diff --git a/src/Faker/Provider/pt_PT/Internet.php b/src/Provider/pt_PT/Internet.php similarity index 100% rename from src/Faker/Provider/pt_PT/Internet.php rename to src/Provider/pt_PT/Internet.php diff --git a/src/Faker/Provider/pt_PT/Payment.php b/src/Provider/pt_PT/Payment.php similarity index 100% rename from src/Faker/Provider/pt_PT/Payment.php rename to src/Provider/pt_PT/Payment.php diff --git a/src/Faker/Provider/pt_PT/Person.php b/src/Provider/pt_PT/Person.php similarity index 100% rename from src/Faker/Provider/pt_PT/Person.php rename to src/Provider/pt_PT/Person.php diff --git a/src/Faker/Provider/pt_PT/PhoneNumber.php b/src/Provider/pt_PT/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/pt_PT/PhoneNumber.php rename to src/Provider/pt_PT/PhoneNumber.php diff --git a/src/Faker/Provider/ro_MD/Address.php b/src/Provider/ro_MD/Address.php similarity index 100% rename from src/Faker/Provider/ro_MD/Address.php rename to src/Provider/ro_MD/Address.php diff --git a/src/Faker/Provider/ro_MD/Payment.php b/src/Provider/ro_MD/Payment.php similarity index 100% rename from src/Faker/Provider/ro_MD/Payment.php rename to src/Provider/ro_MD/Payment.php diff --git a/src/Faker/Provider/ro_MD/Person.php b/src/Provider/ro_MD/Person.php similarity index 100% rename from src/Faker/Provider/ro_MD/Person.php rename to src/Provider/ro_MD/Person.php diff --git a/src/Faker/Provider/ro_MD/PhoneNumber.php b/src/Provider/ro_MD/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ro_MD/PhoneNumber.php rename to src/Provider/ro_MD/PhoneNumber.php diff --git a/src/Faker/Provider/ro_MD/Text.php b/src/Provider/ro_MD/Text.php similarity index 100% rename from src/Faker/Provider/ro_MD/Text.php rename to src/Provider/ro_MD/Text.php diff --git a/src/Faker/Provider/ro_RO/Address.php b/src/Provider/ro_RO/Address.php similarity index 100% rename from src/Faker/Provider/ro_RO/Address.php rename to src/Provider/ro_RO/Address.php diff --git a/src/Faker/Provider/ro_RO/Payment.php b/src/Provider/ro_RO/Payment.php similarity index 100% rename from src/Faker/Provider/ro_RO/Payment.php rename to src/Provider/ro_RO/Payment.php diff --git a/src/Faker/Provider/ro_RO/Person.php b/src/Provider/ro_RO/Person.php similarity index 100% rename from src/Faker/Provider/ro_RO/Person.php rename to src/Provider/ro_RO/Person.php diff --git a/src/Faker/Provider/ro_RO/PhoneNumber.php b/src/Provider/ro_RO/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ro_RO/PhoneNumber.php rename to src/Provider/ro_RO/PhoneNumber.php diff --git a/src/Faker/Provider/ro_RO/Text.php b/src/Provider/ro_RO/Text.php similarity index 100% rename from src/Faker/Provider/ro_RO/Text.php rename to src/Provider/ro_RO/Text.php diff --git a/src/Faker/Provider/ru_RU/Address.php b/src/Provider/ru_RU/Address.php similarity index 100% rename from src/Faker/Provider/ru_RU/Address.php rename to src/Provider/ru_RU/Address.php diff --git a/src/Faker/Provider/ru_RU/Color.php b/src/Provider/ru_RU/Color.php similarity index 100% rename from src/Faker/Provider/ru_RU/Color.php rename to src/Provider/ru_RU/Color.php diff --git a/src/Faker/Provider/ru_RU/Company.php b/src/Provider/ru_RU/Company.php similarity index 100% rename from src/Faker/Provider/ru_RU/Company.php rename to src/Provider/ru_RU/Company.php diff --git a/src/Faker/Provider/ru_RU/Internet.php b/src/Provider/ru_RU/Internet.php similarity index 100% rename from src/Faker/Provider/ru_RU/Internet.php rename to src/Provider/ru_RU/Internet.php diff --git a/src/Faker/Provider/ru_RU/Payment.php b/src/Provider/ru_RU/Payment.php similarity index 100% rename from src/Faker/Provider/ru_RU/Payment.php rename to src/Provider/ru_RU/Payment.php diff --git a/src/Faker/Provider/ru_RU/Person.php b/src/Provider/ru_RU/Person.php similarity index 100% rename from src/Faker/Provider/ru_RU/Person.php rename to src/Provider/ru_RU/Person.php diff --git a/src/Faker/Provider/ru_RU/PhoneNumber.php b/src/Provider/ru_RU/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/ru_RU/PhoneNumber.php rename to src/Provider/ru_RU/PhoneNumber.php diff --git a/src/Faker/Provider/ru_RU/Text.php b/src/Provider/ru_RU/Text.php similarity index 100% rename from src/Faker/Provider/ru_RU/Text.php rename to src/Provider/ru_RU/Text.php diff --git a/src/Faker/Provider/sk_SK/Address.php b/src/Provider/sk_SK/Address.php similarity index 100% rename from src/Faker/Provider/sk_SK/Address.php rename to src/Provider/sk_SK/Address.php diff --git a/src/Faker/Provider/sk_SK/Company.php b/src/Provider/sk_SK/Company.php similarity index 100% rename from src/Faker/Provider/sk_SK/Company.php rename to src/Provider/sk_SK/Company.php diff --git a/src/Faker/Provider/sk_SK/Internet.php b/src/Provider/sk_SK/Internet.php similarity index 100% rename from src/Faker/Provider/sk_SK/Internet.php rename to src/Provider/sk_SK/Internet.php diff --git a/src/Faker/Provider/sk_SK/Payment.php b/src/Provider/sk_SK/Payment.php similarity index 100% rename from src/Faker/Provider/sk_SK/Payment.php rename to src/Provider/sk_SK/Payment.php diff --git a/src/Faker/Provider/sk_SK/Person.php b/src/Provider/sk_SK/Person.php similarity index 100% rename from src/Faker/Provider/sk_SK/Person.php rename to src/Provider/sk_SK/Person.php diff --git a/src/Faker/Provider/sk_SK/PhoneNumber.php b/src/Provider/sk_SK/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/sk_SK/PhoneNumber.php rename to src/Provider/sk_SK/PhoneNumber.php diff --git a/src/Faker/Provider/sl_SI/Address.php b/src/Provider/sl_SI/Address.php similarity index 100% rename from src/Faker/Provider/sl_SI/Address.php rename to src/Provider/sl_SI/Address.php diff --git a/src/Faker/Provider/sl_SI/Company.php b/src/Provider/sl_SI/Company.php similarity index 100% rename from src/Faker/Provider/sl_SI/Company.php rename to src/Provider/sl_SI/Company.php diff --git a/src/Faker/Provider/sl_SI/Internet.php b/src/Provider/sl_SI/Internet.php similarity index 100% rename from src/Faker/Provider/sl_SI/Internet.php rename to src/Provider/sl_SI/Internet.php diff --git a/src/Faker/Provider/sl_SI/Payment.php b/src/Provider/sl_SI/Payment.php similarity index 100% rename from src/Faker/Provider/sl_SI/Payment.php rename to src/Provider/sl_SI/Payment.php diff --git a/src/Faker/Provider/sl_SI/Person.php b/src/Provider/sl_SI/Person.php similarity index 100% rename from src/Faker/Provider/sl_SI/Person.php rename to src/Provider/sl_SI/Person.php diff --git a/src/Faker/Provider/sl_SI/PhoneNumber.php b/src/Provider/sl_SI/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/sl_SI/PhoneNumber.php rename to src/Provider/sl_SI/PhoneNumber.php diff --git a/src/Faker/Provider/sr_Cyrl_RS/Address.php b/src/Provider/sr_Cyrl_RS/Address.php similarity index 100% rename from src/Faker/Provider/sr_Cyrl_RS/Address.php rename to src/Provider/sr_Cyrl_RS/Address.php diff --git a/src/Faker/Provider/sr_Cyrl_RS/Payment.php b/src/Provider/sr_Cyrl_RS/Payment.php similarity index 100% rename from src/Faker/Provider/sr_Cyrl_RS/Payment.php rename to src/Provider/sr_Cyrl_RS/Payment.php diff --git a/src/Faker/Provider/sr_Cyrl_RS/Person.php b/src/Provider/sr_Cyrl_RS/Person.php similarity index 100% rename from src/Faker/Provider/sr_Cyrl_RS/Person.php rename to src/Provider/sr_Cyrl_RS/Person.php diff --git a/src/Faker/Provider/sr_Latn_RS/Address.php b/src/Provider/sr_Latn_RS/Address.php similarity index 100% rename from src/Faker/Provider/sr_Latn_RS/Address.php rename to src/Provider/sr_Latn_RS/Address.php diff --git a/src/Faker/Provider/sr_Latn_RS/Payment.php b/src/Provider/sr_Latn_RS/Payment.php similarity index 100% rename from src/Faker/Provider/sr_Latn_RS/Payment.php rename to src/Provider/sr_Latn_RS/Payment.php diff --git a/src/Faker/Provider/sr_Latn_RS/Person.php b/src/Provider/sr_Latn_RS/Person.php similarity index 100% rename from src/Faker/Provider/sr_Latn_RS/Person.php rename to src/Provider/sr_Latn_RS/Person.php diff --git a/src/Faker/Provider/sr_RS/Address.php b/src/Provider/sr_RS/Address.php similarity index 100% rename from src/Faker/Provider/sr_RS/Address.php rename to src/Provider/sr_RS/Address.php diff --git a/src/Faker/Provider/sr_RS/Payment.php b/src/Provider/sr_RS/Payment.php similarity index 100% rename from src/Faker/Provider/sr_RS/Payment.php rename to src/Provider/sr_RS/Payment.php diff --git a/src/Faker/Provider/sr_RS/Person.php b/src/Provider/sr_RS/Person.php similarity index 100% rename from src/Faker/Provider/sr_RS/Person.php rename to src/Provider/sr_RS/Person.php diff --git a/src/Faker/Provider/sv_SE/Address.php b/src/Provider/sv_SE/Address.php similarity index 100% rename from src/Faker/Provider/sv_SE/Address.php rename to src/Provider/sv_SE/Address.php diff --git a/src/Faker/Provider/sv_SE/Company.php b/src/Provider/sv_SE/Company.php similarity index 100% rename from src/Faker/Provider/sv_SE/Company.php rename to src/Provider/sv_SE/Company.php diff --git a/src/Faker/Provider/sv_SE/Municipality.php b/src/Provider/sv_SE/Municipality.php similarity index 100% rename from src/Faker/Provider/sv_SE/Municipality.php rename to src/Provider/sv_SE/Municipality.php diff --git a/src/Faker/Provider/sv_SE/Payment.php b/src/Provider/sv_SE/Payment.php similarity index 100% rename from src/Faker/Provider/sv_SE/Payment.php rename to src/Provider/sv_SE/Payment.php diff --git a/src/Faker/Provider/sv_SE/Person.php b/src/Provider/sv_SE/Person.php similarity index 100% rename from src/Faker/Provider/sv_SE/Person.php rename to src/Provider/sv_SE/Person.php diff --git a/src/Faker/Provider/sv_SE/PhoneNumber.php b/src/Provider/sv_SE/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/sv_SE/PhoneNumber.php rename to src/Provider/sv_SE/PhoneNumber.php diff --git a/src/Faker/Provider/th_TH/Address.php b/src/Provider/th_TH/Address.php similarity index 100% rename from src/Faker/Provider/th_TH/Address.php rename to src/Provider/th_TH/Address.php diff --git a/src/Faker/Provider/th_TH/Color.php b/src/Provider/th_TH/Color.php similarity index 100% rename from src/Faker/Provider/th_TH/Color.php rename to src/Provider/th_TH/Color.php diff --git a/src/Faker/Provider/th_TH/Company.php b/src/Provider/th_TH/Company.php similarity index 100% rename from src/Faker/Provider/th_TH/Company.php rename to src/Provider/th_TH/Company.php diff --git a/src/Faker/Provider/th_TH/Internet.php b/src/Provider/th_TH/Internet.php similarity index 100% rename from src/Faker/Provider/th_TH/Internet.php rename to src/Provider/th_TH/Internet.php diff --git a/src/Faker/Provider/th_TH/Payment.php b/src/Provider/th_TH/Payment.php similarity index 100% rename from src/Faker/Provider/th_TH/Payment.php rename to src/Provider/th_TH/Payment.php diff --git a/src/Faker/Provider/th_TH/Person.php b/src/Provider/th_TH/Person.php similarity index 100% rename from src/Faker/Provider/th_TH/Person.php rename to src/Provider/th_TH/Person.php diff --git a/src/Faker/Provider/th_TH/PhoneNumber.php b/src/Provider/th_TH/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/th_TH/PhoneNumber.php rename to src/Provider/th_TH/PhoneNumber.php diff --git a/src/Faker/Provider/tr_TR/Address.php b/src/Provider/tr_TR/Address.php similarity index 100% rename from src/Faker/Provider/tr_TR/Address.php rename to src/Provider/tr_TR/Address.php diff --git a/src/Faker/Provider/tr_TR/Color.php b/src/Provider/tr_TR/Color.php similarity index 100% rename from src/Faker/Provider/tr_TR/Color.php rename to src/Provider/tr_TR/Color.php diff --git a/src/Faker/Provider/tr_TR/Company.php b/src/Provider/tr_TR/Company.php similarity index 100% rename from src/Faker/Provider/tr_TR/Company.php rename to src/Provider/tr_TR/Company.php diff --git a/src/Faker/Provider/tr_TR/DateTime.php b/src/Provider/tr_TR/DateTime.php similarity index 100% rename from src/Faker/Provider/tr_TR/DateTime.php rename to src/Provider/tr_TR/DateTime.php diff --git a/src/Faker/Provider/tr_TR/Internet.php b/src/Provider/tr_TR/Internet.php similarity index 100% rename from src/Faker/Provider/tr_TR/Internet.php rename to src/Provider/tr_TR/Internet.php diff --git a/src/Faker/Provider/tr_TR/Payment.php b/src/Provider/tr_TR/Payment.php similarity index 100% rename from src/Faker/Provider/tr_TR/Payment.php rename to src/Provider/tr_TR/Payment.php diff --git a/src/Faker/Provider/tr_TR/Person.php b/src/Provider/tr_TR/Person.php similarity index 100% rename from src/Faker/Provider/tr_TR/Person.php rename to src/Provider/tr_TR/Person.php diff --git a/src/Faker/Provider/tr_TR/PhoneNumber.php b/src/Provider/tr_TR/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/tr_TR/PhoneNumber.php rename to src/Provider/tr_TR/PhoneNumber.php diff --git a/src/Faker/Provider/uk_UA/Address.php b/src/Provider/uk_UA/Address.php similarity index 100% rename from src/Faker/Provider/uk_UA/Address.php rename to src/Provider/uk_UA/Address.php diff --git a/src/Faker/Provider/uk_UA/Color.php b/src/Provider/uk_UA/Color.php similarity index 100% rename from src/Faker/Provider/uk_UA/Color.php rename to src/Provider/uk_UA/Color.php diff --git a/src/Faker/Provider/uk_UA/Company.php b/src/Provider/uk_UA/Company.php similarity index 100% rename from src/Faker/Provider/uk_UA/Company.php rename to src/Provider/uk_UA/Company.php diff --git a/src/Faker/Provider/uk_UA/Internet.php b/src/Provider/uk_UA/Internet.php similarity index 100% rename from src/Faker/Provider/uk_UA/Internet.php rename to src/Provider/uk_UA/Internet.php diff --git a/src/Faker/Provider/uk_UA/Payment.php b/src/Provider/uk_UA/Payment.php similarity index 100% rename from src/Faker/Provider/uk_UA/Payment.php rename to src/Provider/uk_UA/Payment.php diff --git a/src/Faker/Provider/uk_UA/Person.php b/src/Provider/uk_UA/Person.php similarity index 100% rename from src/Faker/Provider/uk_UA/Person.php rename to src/Provider/uk_UA/Person.php diff --git a/src/Faker/Provider/uk_UA/PhoneNumber.php b/src/Provider/uk_UA/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/uk_UA/PhoneNumber.php rename to src/Provider/uk_UA/PhoneNumber.php diff --git a/src/Faker/Provider/uk_UA/Text.php b/src/Provider/uk_UA/Text.php similarity index 100% rename from src/Faker/Provider/uk_UA/Text.php rename to src/Provider/uk_UA/Text.php diff --git a/src/Faker/Provider/vi_VN/Address.php b/src/Provider/vi_VN/Address.php similarity index 100% rename from src/Faker/Provider/vi_VN/Address.php rename to src/Provider/vi_VN/Address.php diff --git a/src/Faker/Provider/vi_VN/Color.php b/src/Provider/vi_VN/Color.php similarity index 100% rename from src/Faker/Provider/vi_VN/Color.php rename to src/Provider/vi_VN/Color.php diff --git a/src/Faker/Provider/vi_VN/Internet.php b/src/Provider/vi_VN/Internet.php similarity index 100% rename from src/Faker/Provider/vi_VN/Internet.php rename to src/Provider/vi_VN/Internet.php diff --git a/src/Faker/Provider/vi_VN/Person.php b/src/Provider/vi_VN/Person.php similarity index 100% rename from src/Faker/Provider/vi_VN/Person.php rename to src/Provider/vi_VN/Person.php diff --git a/src/Faker/Provider/vi_VN/PhoneNumber.php b/src/Provider/vi_VN/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/vi_VN/PhoneNumber.php rename to src/Provider/vi_VN/PhoneNumber.php diff --git a/src/Faker/Provider/zh_CN/Address.php b/src/Provider/zh_CN/Address.php similarity index 100% rename from src/Faker/Provider/zh_CN/Address.php rename to src/Provider/zh_CN/Address.php diff --git a/src/Faker/Provider/zh_CN/Color.php b/src/Provider/zh_CN/Color.php similarity index 100% rename from src/Faker/Provider/zh_CN/Color.php rename to src/Provider/zh_CN/Color.php diff --git a/src/Faker/Provider/zh_CN/Company.php b/src/Provider/zh_CN/Company.php similarity index 100% rename from src/Faker/Provider/zh_CN/Company.php rename to src/Provider/zh_CN/Company.php diff --git a/src/Faker/Provider/zh_CN/DateTime.php b/src/Provider/zh_CN/DateTime.php similarity index 100% rename from src/Faker/Provider/zh_CN/DateTime.php rename to src/Provider/zh_CN/DateTime.php diff --git a/src/Faker/Provider/zh_CN/Internet.php b/src/Provider/zh_CN/Internet.php similarity index 100% rename from src/Faker/Provider/zh_CN/Internet.php rename to src/Provider/zh_CN/Internet.php diff --git a/src/Faker/Provider/zh_CN/Payment.php b/src/Provider/zh_CN/Payment.php similarity index 100% rename from src/Faker/Provider/zh_CN/Payment.php rename to src/Provider/zh_CN/Payment.php diff --git a/src/Faker/Provider/zh_CN/Person.php b/src/Provider/zh_CN/Person.php similarity index 100% rename from src/Faker/Provider/zh_CN/Person.php rename to src/Provider/zh_CN/Person.php diff --git a/src/Faker/Provider/zh_CN/PhoneNumber.php b/src/Provider/zh_CN/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/zh_CN/PhoneNumber.php rename to src/Provider/zh_CN/PhoneNumber.php diff --git a/src/Faker/Provider/zh_TW/Address.php b/src/Provider/zh_TW/Address.php similarity index 100% rename from src/Faker/Provider/zh_TW/Address.php rename to src/Provider/zh_TW/Address.php diff --git a/src/Faker/Provider/zh_TW/Color.php b/src/Provider/zh_TW/Color.php similarity index 100% rename from src/Faker/Provider/zh_TW/Color.php rename to src/Provider/zh_TW/Color.php diff --git a/src/Faker/Provider/zh_TW/Company.php b/src/Provider/zh_TW/Company.php similarity index 100% rename from src/Faker/Provider/zh_TW/Company.php rename to src/Provider/zh_TW/Company.php diff --git a/src/Faker/Provider/zh_TW/DateTime.php b/src/Provider/zh_TW/DateTime.php similarity index 100% rename from src/Faker/Provider/zh_TW/DateTime.php rename to src/Provider/zh_TW/DateTime.php diff --git a/src/Faker/Provider/zh_TW/Internet.php b/src/Provider/zh_TW/Internet.php similarity index 100% rename from src/Faker/Provider/zh_TW/Internet.php rename to src/Provider/zh_TW/Internet.php diff --git a/src/Faker/Provider/zh_TW/Payment.php b/src/Provider/zh_TW/Payment.php similarity index 100% rename from src/Faker/Provider/zh_TW/Payment.php rename to src/Provider/zh_TW/Payment.php diff --git a/src/Faker/Provider/zh_TW/Person.php b/src/Provider/zh_TW/Person.php similarity index 100% rename from src/Faker/Provider/zh_TW/Person.php rename to src/Provider/zh_TW/Person.php diff --git a/src/Faker/Provider/zh_TW/PhoneNumber.php b/src/Provider/zh_TW/PhoneNumber.php similarity index 100% rename from src/Faker/Provider/zh_TW/PhoneNumber.php rename to src/Provider/zh_TW/PhoneNumber.php diff --git a/src/Faker/Provider/zh_TW/Text.php b/src/Provider/zh_TW/Text.php similarity index 100% rename from src/Faker/Provider/zh_TW/Text.php rename to src/Provider/zh_TW/Text.php diff --git a/src/Faker/UniqueGenerator.php b/src/UniqueGenerator.php similarity index 100% rename from src/Faker/UniqueGenerator.php rename to src/UniqueGenerator.php diff --git a/src/Faker/ValidGenerator.php b/src/ValidGenerator.php similarity index 100% rename from src/Faker/ValidGenerator.php rename to src/ValidGenerator.php diff --git a/test/Faker/Calculator/EanTest.php b/test/Calculator/EanTest.php similarity index 100% rename from test/Faker/Calculator/EanTest.php rename to test/Calculator/EanTest.php diff --git a/test/Faker/Calculator/IbanTest.php b/test/Calculator/IbanTest.php similarity index 100% rename from test/Faker/Calculator/IbanTest.php rename to test/Calculator/IbanTest.php diff --git a/test/Faker/Calculator/IsbnTest.php b/test/Calculator/IsbnTest.php similarity index 100% rename from test/Faker/Calculator/IsbnTest.php rename to test/Calculator/IsbnTest.php diff --git a/test/Faker/Calculator/LuhnTest.php b/test/Calculator/LuhnTest.php similarity index 100% rename from test/Faker/Calculator/LuhnTest.php rename to test/Calculator/LuhnTest.php diff --git a/test/Faker/Core/BarcodeTest.php b/test/Core/BarcodeTest.php similarity index 100% rename from test/Faker/Core/BarcodeTest.php rename to test/Core/BarcodeTest.php diff --git a/test/Faker/Core/BloodTest.php b/test/Core/BloodTest.php similarity index 100% rename from test/Faker/Core/BloodTest.php rename to test/Core/BloodTest.php diff --git a/test/Faker/Core/ColorTest.php b/test/Core/ColorTest.php similarity index 100% rename from test/Faker/Core/ColorTest.php rename to test/Core/ColorTest.php diff --git a/test/Faker/Core/DateTimeTest.php b/test/Core/DateTimeTest.php similarity index 100% rename from test/Faker/Core/DateTimeTest.php rename to test/Core/DateTimeTest.php diff --git a/test/Faker/Core/NumberTest.php b/test/Core/NumberTest.php similarity index 100% rename from test/Faker/Core/NumberTest.php rename to test/Core/NumberTest.php diff --git a/test/Faker/Core/UuidTest.php b/test/Core/UuidTest.php similarity index 100% rename from test/Faker/Core/UuidTest.php rename to test/Core/UuidTest.php diff --git a/test/Faker/Core/VersionTest.php b/test/Core/VersionTest.php similarity index 100% rename from test/Faker/Core/VersionTest.php rename to test/Core/VersionTest.php diff --git a/test/Faker/DefaultGeneratorTest.php b/test/DefaultGeneratorTest.php similarity index 100% rename from test/Faker/DefaultGeneratorTest.php rename to test/DefaultGeneratorTest.php diff --git a/test/Faker/Extension/ContainerBuilderTest.php b/test/Extension/ContainerBuilderTest.php similarity index 100% rename from test/Faker/Extension/ContainerBuilderTest.php rename to test/Extension/ContainerBuilderTest.php diff --git a/test/Faker/Extension/ContainerTest.php b/test/Extension/ContainerTest.php similarity index 100% rename from test/Faker/Extension/ContainerTest.php rename to test/Extension/ContainerTest.php diff --git a/test/Faker/Extension/GeneratorAwareExtensionTest.php b/test/Extension/GeneratorAwareExtensionTest.php similarity index 100% rename from test/Faker/Extension/GeneratorAwareExtensionTest.php rename to test/Extension/GeneratorAwareExtensionTest.php diff --git a/test/Faker/Extension/HelperTest.php b/test/Extension/HelperTest.php similarity index 100% rename from test/Faker/Extension/HelperTest.php rename to test/Extension/HelperTest.php diff --git a/test/Faker/GeneratorTest.php b/test/GeneratorTest.php similarity index 100% rename from test/Faker/GeneratorTest.php rename to test/GeneratorTest.php diff --git a/test/Faker/Provider/AddressTest.php b/test/Provider/AddressTest.php similarity index 100% rename from test/Faker/Provider/AddressTest.php rename to test/Provider/AddressTest.php diff --git a/test/Faker/Provider/BarcodeTest.php b/test/Provider/BarcodeTest.php similarity index 100% rename from test/Faker/Provider/BarcodeTest.php rename to test/Provider/BarcodeTest.php diff --git a/test/Faker/Provider/BaseTest.php b/test/Provider/BaseTest.php similarity index 100% rename from test/Faker/Provider/BaseTest.php rename to test/Provider/BaseTest.php diff --git a/test/Faker/Provider/BiasedTest.php b/test/Provider/BiasedTest.php similarity index 100% rename from test/Faker/Provider/BiasedTest.php rename to test/Provider/BiasedTest.php diff --git a/test/Faker/Provider/ColorTest.php b/test/Provider/ColorTest.php similarity index 100% rename from test/Faker/Provider/ColorTest.php rename to test/Provider/ColorTest.php diff --git a/test/Faker/Provider/CompanyTest.php b/test/Provider/CompanyTest.php similarity index 100% rename from test/Faker/Provider/CompanyTest.php rename to test/Provider/CompanyTest.php diff --git a/test/Faker/Provider/DateTimeTest.php b/test/Provider/DateTimeTest.php similarity index 100% rename from test/Faker/Provider/DateTimeTest.php rename to test/Provider/DateTimeTest.php diff --git a/test/Faker/Provider/HtmlLoremTest.php b/test/Provider/HtmlLoremTest.php similarity index 100% rename from test/Faker/Provider/HtmlLoremTest.php rename to test/Provider/HtmlLoremTest.php diff --git a/test/Faker/Provider/ImageTest.php b/test/Provider/ImageTest.php similarity index 100% rename from test/Faker/Provider/ImageTest.php rename to test/Provider/ImageTest.php diff --git a/test/Faker/Provider/InternetTest.php b/test/Provider/InternetTest.php similarity index 100% rename from test/Faker/Provider/InternetTest.php rename to test/Provider/InternetTest.php diff --git a/test/Faker/Provider/LocalizationTest.php b/test/Provider/LocalizationTest.php similarity index 100% rename from test/Faker/Provider/LocalizationTest.php rename to test/Provider/LocalizationTest.php diff --git a/test/Faker/Provider/LoremTest.php b/test/Provider/LoremTest.php similarity index 100% rename from test/Faker/Provider/LoremTest.php rename to test/Provider/LoremTest.php diff --git a/test/Faker/Provider/MedicalTest.php b/test/Provider/MedicalTest.php similarity index 100% rename from test/Faker/Provider/MedicalTest.php rename to test/Provider/MedicalTest.php diff --git a/test/Faker/Provider/MiscellaneousTest.php b/test/Provider/MiscellaneousTest.php similarity index 100% rename from test/Faker/Provider/MiscellaneousTest.php rename to test/Provider/MiscellaneousTest.php diff --git a/test/Faker/Provider/PaymentTest.php b/test/Provider/PaymentTest.php similarity index 100% rename from test/Faker/Provider/PaymentTest.php rename to test/Provider/PaymentTest.php diff --git a/test/Faker/Provider/PersonTest.php b/test/Provider/PersonTest.php similarity index 100% rename from test/Faker/Provider/PersonTest.php rename to test/Provider/PersonTest.php diff --git a/test/Faker/Provider/PhoneNumberTest.php b/test/Provider/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/PhoneNumberTest.php rename to test/Provider/PhoneNumberTest.php diff --git a/test/Faker/Provider/ProviderOverrideTest.php b/test/Provider/ProviderOverrideTest.php similarity index 100% rename from test/Faker/Provider/ProviderOverrideTest.php rename to test/Provider/ProviderOverrideTest.php diff --git a/test/Faker/Provider/TextTest.php b/test/Provider/TextTest.php similarity index 100% rename from test/Faker/Provider/TextTest.php rename to test/Provider/TextTest.php diff --git a/test/Faker/Provider/UserAgentTest.php b/test/Provider/UserAgentTest.php similarity index 100% rename from test/Faker/Provider/UserAgentTest.php rename to test/Provider/UserAgentTest.php diff --git a/test/Faker/Provider/UuidTest.php b/test/Provider/UuidTest.php similarity index 100% rename from test/Faker/Provider/UuidTest.php rename to test/Provider/UuidTest.php diff --git a/test/Faker/Provider/ar_EG/CompanyTest.php b/test/Provider/ar_EG/CompanyTest.php similarity index 100% rename from test/Faker/Provider/ar_EG/CompanyTest.php rename to test/Provider/ar_EG/CompanyTest.php diff --git a/test/Faker/Provider/ar_EG/InternetTest.php b/test/Provider/ar_EG/InternetTest.php similarity index 100% rename from test/Faker/Provider/ar_EG/InternetTest.php rename to test/Provider/ar_EG/InternetTest.php diff --git a/test/Faker/Provider/ar_EG/PersonTest.php b/test/Provider/ar_EG/PersonTest.php similarity index 100% rename from test/Faker/Provider/ar_EG/PersonTest.php rename to test/Provider/ar_EG/PersonTest.php diff --git a/test/Faker/Provider/ar_EG/TextTest.php b/test/Provider/ar_EG/TextTest.php similarity index 100% rename from test/Faker/Provider/ar_EG/TextTest.php rename to test/Provider/ar_EG/TextTest.php diff --git a/test/Faker/Provider/ar_JO/InternetTest.php b/test/Provider/ar_JO/InternetTest.php similarity index 100% rename from test/Faker/Provider/ar_JO/InternetTest.php rename to test/Provider/ar_JO/InternetTest.php diff --git a/test/Faker/Provider/ar_SA/CompanyTest.php b/test/Provider/ar_SA/CompanyTest.php similarity index 100% rename from test/Faker/Provider/ar_SA/CompanyTest.php rename to test/Provider/ar_SA/CompanyTest.php diff --git a/test/Faker/Provider/ar_SA/InternetTest.php b/test/Provider/ar_SA/InternetTest.php similarity index 100% rename from test/Faker/Provider/ar_SA/InternetTest.php rename to test/Provider/ar_SA/InternetTest.php diff --git a/test/Faker/Provider/ar_SA/PersonTest.php b/test/Provider/ar_SA/PersonTest.php similarity index 100% rename from test/Faker/Provider/ar_SA/PersonTest.php rename to test/Provider/ar_SA/PersonTest.php diff --git a/test/Faker/Provider/bg_BG/PaymentTest.php b/test/Provider/bg_BG/PaymentTest.php similarity index 100% rename from test/Faker/Provider/bg_BG/PaymentTest.php rename to test/Provider/bg_BG/PaymentTest.php diff --git a/test/Faker/Provider/bn_BD/PersonTest.php b/test/Provider/bn_BD/PersonTest.php similarity index 100% rename from test/Faker/Provider/bn_BD/PersonTest.php rename to test/Provider/bn_BD/PersonTest.php diff --git a/test/Faker/Provider/cs_CZ/PersonTest.php b/test/Provider/cs_CZ/PersonTest.php similarity index 100% rename from test/Faker/Provider/cs_CZ/PersonTest.php rename to test/Provider/cs_CZ/PersonTest.php diff --git a/test/Faker/Provider/da_DK/InternetTest.php b/test/Provider/da_DK/InternetTest.php similarity index 100% rename from test/Faker/Provider/da_DK/InternetTest.php rename to test/Provider/da_DK/InternetTest.php diff --git a/test/Faker/Provider/de_AT/AddressTest.php b/test/Provider/de_AT/AddressTest.php similarity index 100% rename from test/Faker/Provider/de_AT/AddressTest.php rename to test/Provider/de_AT/AddressTest.php diff --git a/test/Faker/Provider/de_AT/InternetTest.php b/test/Provider/de_AT/InternetTest.php similarity index 100% rename from test/Faker/Provider/de_AT/InternetTest.php rename to test/Provider/de_AT/InternetTest.php diff --git a/test/Faker/Provider/de_AT/PaymentTest.php b/test/Provider/de_AT/PaymentTest.php similarity index 100% rename from test/Faker/Provider/de_AT/PaymentTest.php rename to test/Provider/de_AT/PaymentTest.php diff --git a/test/Faker/Provider/de_AT/PersonTest.php b/test/Provider/de_AT/PersonTest.php similarity index 100% rename from test/Faker/Provider/de_AT/PersonTest.php rename to test/Provider/de_AT/PersonTest.php diff --git a/test/Faker/Provider/de_AT/PhoneNumberTest.php b/test/Provider/de_AT/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/de_AT/PhoneNumberTest.php rename to test/Provider/de_AT/PhoneNumberTest.php diff --git a/test/Faker/Provider/de_CH/AddressTest.php b/test/Provider/de_CH/AddressTest.php similarity index 100% rename from test/Faker/Provider/de_CH/AddressTest.php rename to test/Provider/de_CH/AddressTest.php diff --git a/test/Faker/Provider/de_CH/InternetTest.php b/test/Provider/de_CH/InternetTest.php similarity index 100% rename from test/Faker/Provider/de_CH/InternetTest.php rename to test/Provider/de_CH/InternetTest.php diff --git a/test/Faker/Provider/de_CH/PersonTest.php b/test/Provider/de_CH/PersonTest.php similarity index 100% rename from test/Faker/Provider/de_CH/PersonTest.php rename to test/Provider/de_CH/PersonTest.php diff --git a/test/Faker/Provider/de_CH/PhoneNumberTest.php b/test/Provider/de_CH/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/de_CH/PhoneNumberTest.php rename to test/Provider/de_CH/PhoneNumberTest.php diff --git a/test/Faker/Provider/de_DE/InternetTest.php b/test/Provider/de_DE/InternetTest.php similarity index 100% rename from test/Faker/Provider/de_DE/InternetTest.php rename to test/Provider/de_DE/InternetTest.php diff --git a/test/Faker/Provider/de_DE/PhoneNumberTest.php b/test/Provider/de_DE/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/de_DE/PhoneNumberTest.php rename to test/Provider/de_DE/PhoneNumberTest.php diff --git a/test/Faker/Provider/el_GR/PhoneNumberTest.php b/test/Provider/el_GR/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/el_GR/PhoneNumberTest.php rename to test/Provider/el_GR/PhoneNumberTest.php diff --git a/test/Faker/Provider/el_GR/TextTest.php b/test/Provider/el_GR/TextTest.php similarity index 100% rename from test/Faker/Provider/el_GR/TextTest.php rename to test/Provider/el_GR/TextTest.php diff --git a/test/Faker/Provider/en_AU/AddressTest.php b/test/Provider/en_AU/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_AU/AddressTest.php rename to test/Provider/en_AU/AddressTest.php diff --git a/test/Faker/Provider/en_CA/AddressTest.php b/test/Provider/en_CA/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_CA/AddressTest.php rename to test/Provider/en_CA/AddressTest.php diff --git a/test/Faker/Provider/en_GB/AddressTest.php b/test/Provider/en_GB/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_GB/AddressTest.php rename to test/Provider/en_GB/AddressTest.php diff --git a/test/Faker/Provider/en_GB/CompanyTest.php b/test/Provider/en_GB/CompanyTest.php similarity index 100% rename from test/Faker/Provider/en_GB/CompanyTest.php rename to test/Provider/en_GB/CompanyTest.php diff --git a/test/Faker/Provider/en_GB/PersonTest.php b/test/Provider/en_GB/PersonTest.php similarity index 100% rename from test/Faker/Provider/en_GB/PersonTest.php rename to test/Provider/en_GB/PersonTest.php diff --git a/test/Faker/Provider/en_GB/PhoneNumberTest.php b/test/Provider/en_GB/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/en_GB/PhoneNumberTest.php rename to test/Provider/en_GB/PhoneNumberTest.php diff --git a/test/Faker/Provider/en_IN/AddressTest.php b/test/Provider/en_IN/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_IN/AddressTest.php rename to test/Provider/en_IN/AddressTest.php diff --git a/test/Faker/Provider/en_NG/AddressTest.php b/test/Provider/en_NG/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_NG/AddressTest.php rename to test/Provider/en_NG/AddressTest.php diff --git a/test/Faker/Provider/en_NG/InternetTest.php b/test/Provider/en_NG/InternetTest.php similarity index 100% rename from test/Faker/Provider/en_NG/InternetTest.php rename to test/Provider/en_NG/InternetTest.php diff --git a/test/Faker/Provider/en_NG/PersonTest.php b/test/Provider/en_NG/PersonTest.php similarity index 100% rename from test/Faker/Provider/en_NG/PersonTest.php rename to test/Provider/en_NG/PersonTest.php diff --git a/test/Faker/Provider/en_NG/PhoneNumberTest.php b/test/Provider/en_NG/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/en_NG/PhoneNumberTest.php rename to test/Provider/en_NG/PhoneNumberTest.php diff --git a/test/Faker/Provider/en_NZ/PhoneNumberTest.php b/test/Provider/en_NZ/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/en_NZ/PhoneNumberTest.php rename to test/Provider/en_NZ/PhoneNumberTest.php diff --git a/test/Faker/Provider/en_PH/AddressTest.php b/test/Provider/en_PH/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_PH/AddressTest.php rename to test/Provider/en_PH/AddressTest.php diff --git a/test/Faker/Provider/en_SG/AddressTest.php b/test/Provider/en_SG/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_SG/AddressTest.php rename to test/Provider/en_SG/AddressTest.php diff --git a/test/Faker/Provider/en_SG/PersonTest.php b/test/Provider/en_SG/PersonTest.php similarity index 100% rename from test/Faker/Provider/en_SG/PersonTest.php rename to test/Provider/en_SG/PersonTest.php diff --git a/test/Faker/Provider/en_SG/PhoneNumberTest.php b/test/Provider/en_SG/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/en_SG/PhoneNumberTest.php rename to test/Provider/en_SG/PhoneNumberTest.php diff --git a/test/Faker/Provider/en_UG/AddressTest.php b/test/Provider/en_UG/AddressTest.php similarity index 100% rename from test/Faker/Provider/en_UG/AddressTest.php rename to test/Provider/en_UG/AddressTest.php diff --git a/test/Faker/Provider/en_US/CompanyTest.php b/test/Provider/en_US/CompanyTest.php similarity index 100% rename from test/Faker/Provider/en_US/CompanyTest.php rename to test/Provider/en_US/CompanyTest.php diff --git a/test/Faker/Provider/en_US/PaymentTest.php b/test/Provider/en_US/PaymentTest.php similarity index 100% rename from test/Faker/Provider/en_US/PaymentTest.php rename to test/Provider/en_US/PaymentTest.php diff --git a/test/Faker/Provider/en_US/PersonTest.php b/test/Provider/en_US/PersonTest.php similarity index 100% rename from test/Faker/Provider/en_US/PersonTest.php rename to test/Provider/en_US/PersonTest.php diff --git a/test/Faker/Provider/en_US/PhoneNumberTest.php b/test/Provider/en_US/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/en_US/PhoneNumberTest.php rename to test/Provider/en_US/PhoneNumberTest.php diff --git a/test/Faker/Provider/en_ZA/CompanyTest.php b/test/Provider/en_ZA/CompanyTest.php similarity index 100% rename from test/Faker/Provider/en_ZA/CompanyTest.php rename to test/Provider/en_ZA/CompanyTest.php diff --git a/test/Faker/Provider/en_ZA/InternetTest.php b/test/Provider/en_ZA/InternetTest.php similarity index 100% rename from test/Faker/Provider/en_ZA/InternetTest.php rename to test/Provider/en_ZA/InternetTest.php diff --git a/test/Faker/Provider/en_ZA/PersonTest.php b/test/Provider/en_ZA/PersonTest.php similarity index 100% rename from test/Faker/Provider/en_ZA/PersonTest.php rename to test/Provider/en_ZA/PersonTest.php diff --git a/test/Faker/Provider/en_ZA/PhoneNumberTest.php b/test/Provider/en_ZA/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/en_ZA/PhoneNumberTest.php rename to test/Provider/en_ZA/PhoneNumberTest.php diff --git a/test/Faker/Provider/es_ES/PaymentTest.php b/test/Provider/es_ES/PaymentTest.php similarity index 100% rename from test/Faker/Provider/es_ES/PaymentTest.php rename to test/Provider/es_ES/PaymentTest.php diff --git a/test/Faker/Provider/es_ES/PersonTest.php b/test/Provider/es_ES/PersonTest.php similarity index 100% rename from test/Faker/Provider/es_ES/PersonTest.php rename to test/Provider/es_ES/PersonTest.php diff --git a/test/Faker/Provider/es_ES/PhoneNumberTest.php b/test/Provider/es_ES/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/es_ES/PhoneNumberTest.php rename to test/Provider/es_ES/PhoneNumberTest.php diff --git a/test/Faker/Provider/es_ES/TextTest.php b/test/Provider/es_ES/TextTest.php similarity index 100% rename from test/Faker/Provider/es_ES/TextTest.php rename to test/Provider/es_ES/TextTest.php diff --git a/test/Faker/Provider/es_PE/CompanyTest.php b/test/Provider/es_PE/CompanyTest.php similarity index 100% rename from test/Faker/Provider/es_PE/CompanyTest.php rename to test/Provider/es_PE/CompanyTest.php diff --git a/test/Faker/Provider/es_PE/PersonTest.php b/test/Provider/es_PE/PersonTest.php similarity index 100% rename from test/Faker/Provider/es_PE/PersonTest.php rename to test/Provider/es_PE/PersonTest.php diff --git a/test/Faker/Provider/es_VE/CompanyTest.php b/test/Provider/es_VE/CompanyTest.php similarity index 100% rename from test/Faker/Provider/es_VE/CompanyTest.php rename to test/Provider/es_VE/CompanyTest.php diff --git a/test/Faker/Provider/es_VE/PersonTest.php b/test/Provider/es_VE/PersonTest.php similarity index 100% rename from test/Faker/Provider/es_VE/PersonTest.php rename to test/Provider/es_VE/PersonTest.php diff --git a/test/Faker/Provider/fa_IR/PersonTest.php b/test/Provider/fa_IR/PersonTest.php similarity index 100% rename from test/Faker/Provider/fa_IR/PersonTest.php rename to test/Provider/fa_IR/PersonTest.php diff --git a/test/Faker/Provider/fi_FI/InternetTest.php b/test/Provider/fi_FI/InternetTest.php similarity index 100% rename from test/Faker/Provider/fi_FI/InternetTest.php rename to test/Provider/fi_FI/InternetTest.php diff --git a/test/Faker/Provider/fi_FI/PersonTest.php b/test/Provider/fi_FI/PersonTest.php similarity index 100% rename from test/Faker/Provider/fi_FI/PersonTest.php rename to test/Provider/fi_FI/PersonTest.php diff --git a/test/Faker/Provider/fr_BE/PaymentTest.php b/test/Provider/fr_BE/PaymentTest.php similarity index 100% rename from test/Faker/Provider/fr_BE/PaymentTest.php rename to test/Provider/fr_BE/PaymentTest.php diff --git a/test/Faker/Provider/fr_CH/AddressTest.php b/test/Provider/fr_CH/AddressTest.php similarity index 100% rename from test/Faker/Provider/fr_CH/AddressTest.php rename to test/Provider/fr_CH/AddressTest.php diff --git a/test/Faker/Provider/fr_CH/InternetTest.php b/test/Provider/fr_CH/InternetTest.php similarity index 100% rename from test/Faker/Provider/fr_CH/InternetTest.php rename to test/Provider/fr_CH/InternetTest.php diff --git a/test/Faker/Provider/fr_CH/PersonTest.php b/test/Provider/fr_CH/PersonTest.php similarity index 100% rename from test/Faker/Provider/fr_CH/PersonTest.php rename to test/Provider/fr_CH/PersonTest.php diff --git a/test/Faker/Provider/fr_CH/PhoneNumberTest.php b/test/Provider/fr_CH/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/fr_CH/PhoneNumberTest.php rename to test/Provider/fr_CH/PhoneNumberTest.php diff --git a/test/Faker/Provider/fr_FR/AddressTest.php b/test/Provider/fr_FR/AddressTest.php similarity index 100% rename from test/Faker/Provider/fr_FR/AddressTest.php rename to test/Provider/fr_FR/AddressTest.php diff --git a/test/Faker/Provider/fr_FR/ColorTest.php b/test/Provider/fr_FR/ColorTest.php similarity index 100% rename from test/Faker/Provider/fr_FR/ColorTest.php rename to test/Provider/fr_FR/ColorTest.php diff --git a/test/Faker/Provider/fr_FR/CompanyTest.php b/test/Provider/fr_FR/CompanyTest.php similarity index 100% rename from test/Faker/Provider/fr_FR/CompanyTest.php rename to test/Provider/fr_FR/CompanyTest.php diff --git a/test/Faker/Provider/fr_FR/PaymentTest.php b/test/Provider/fr_FR/PaymentTest.php similarity index 100% rename from test/Faker/Provider/fr_FR/PaymentTest.php rename to test/Provider/fr_FR/PaymentTest.php diff --git a/test/Faker/Provider/fr_FR/PersonTest.php b/test/Provider/fr_FR/PersonTest.php similarity index 100% rename from test/Faker/Provider/fr_FR/PersonTest.php rename to test/Provider/fr_FR/PersonTest.php diff --git a/test/Faker/Provider/fr_FR/PhoneNumberTest.php b/test/Provider/fr_FR/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/fr_FR/PhoneNumberTest.php rename to test/Provider/fr_FR/PhoneNumberTest.php diff --git a/test/Faker/Provider/fr_FR/TextTest.php b/test/Provider/fr_FR/TextTest.php similarity index 100% rename from test/Faker/Provider/fr_FR/TextTest.php rename to test/Provider/fr_FR/TextTest.php diff --git a/test/Faker/Provider/hu_HU/PersonTest.php b/test/Provider/hu_HU/PersonTest.php similarity index 100% rename from test/Faker/Provider/hu_HU/PersonTest.php rename to test/Provider/hu_HU/PersonTest.php diff --git a/test/Faker/Provider/id_ID/PersonTest.php b/test/Provider/id_ID/PersonTest.php similarity index 100% rename from test/Faker/Provider/id_ID/PersonTest.php rename to test/Provider/id_ID/PersonTest.php diff --git a/test/Faker/Provider/it_CH/AddressTest.php b/test/Provider/it_CH/AddressTest.php similarity index 100% rename from test/Faker/Provider/it_CH/AddressTest.php rename to test/Provider/it_CH/AddressTest.php diff --git a/test/Faker/Provider/it_CH/InternetTest.php b/test/Provider/it_CH/InternetTest.php similarity index 100% rename from test/Faker/Provider/it_CH/InternetTest.php rename to test/Provider/it_CH/InternetTest.php diff --git a/test/Faker/Provider/it_CH/PersonTest.php b/test/Provider/it_CH/PersonTest.php similarity index 100% rename from test/Faker/Provider/it_CH/PersonTest.php rename to test/Provider/it_CH/PersonTest.php diff --git a/test/Faker/Provider/it_CH/PhoneNumberTest.php b/test/Provider/it_CH/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/it_CH/PhoneNumberTest.php rename to test/Provider/it_CH/PhoneNumberTest.php diff --git a/test/Faker/Provider/it_IT/CompanyTest.php b/test/Provider/it_IT/CompanyTest.php similarity index 100% rename from test/Faker/Provider/it_IT/CompanyTest.php rename to test/Provider/it_IT/CompanyTest.php diff --git a/test/Faker/Provider/it_IT/PersonTest.php b/test/Provider/it_IT/PersonTest.php similarity index 100% rename from test/Faker/Provider/it_IT/PersonTest.php rename to test/Provider/it_IT/PersonTest.php diff --git a/test/Faker/Provider/ja_JP/InternetTest.php b/test/Provider/ja_JP/InternetTest.php similarity index 100% rename from test/Faker/Provider/ja_JP/InternetTest.php rename to test/Provider/ja_JP/InternetTest.php diff --git a/test/Faker/Provider/ja_JP/PersonTest.php b/test/Provider/ja_JP/PersonTest.php similarity index 100% rename from test/Faker/Provider/ja_JP/PersonTest.php rename to test/Provider/ja_JP/PersonTest.php diff --git a/test/Faker/Provider/ja_JP/PhoneNumberTest.php b/test/Provider/ja_JP/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/ja_JP/PhoneNumberTest.php rename to test/Provider/ja_JP/PhoneNumberTest.php diff --git a/test/Faker/Provider/ka_GE/TextTest.php b/test/Provider/ka_GE/TextTest.php similarity index 100% rename from test/Faker/Provider/ka_GE/TextTest.php rename to test/Provider/ka_GE/TextTest.php diff --git a/test/Faker/Provider/kk_KZ/CompanyTest.php b/test/Provider/kk_KZ/CompanyTest.php similarity index 100% rename from test/Faker/Provider/kk_KZ/CompanyTest.php rename to test/Provider/kk_KZ/CompanyTest.php diff --git a/test/Faker/Provider/kk_KZ/PersonTest.php b/test/Provider/kk_KZ/PersonTest.php similarity index 100% rename from test/Faker/Provider/kk_KZ/PersonTest.php rename to test/Provider/kk_KZ/PersonTest.php diff --git a/test/Faker/Provider/kk_KZ/TextTest.php b/test/Provider/kk_KZ/TextTest.php similarity index 100% rename from test/Faker/Provider/kk_KZ/TextTest.php rename to test/Provider/kk_KZ/TextTest.php diff --git a/test/Faker/Provider/ko_KR/TextTest.php b/test/Provider/ko_KR/TextTest.php similarity index 100% rename from test/Faker/Provider/ko_KR/TextTest.php rename to test/Provider/ko_KR/TextTest.php diff --git a/test/Faker/Provider/lt_LT/AddressTest.php b/test/Provider/lt_LT/AddressTest.php similarity index 100% rename from test/Faker/Provider/lt_LT/AddressTest.php rename to test/Provider/lt_LT/AddressTest.php diff --git a/test/Faker/Provider/lv_LV/AddressTest.php b/test/Provider/lv_LV/AddressTest.php similarity index 100% rename from test/Faker/Provider/lv_LV/AddressTest.php rename to test/Provider/lv_LV/AddressTest.php diff --git a/test/Faker/Provider/lv_LV/PersonTest.php b/test/Provider/lv_LV/PersonTest.php similarity index 100% rename from test/Faker/Provider/lv_LV/PersonTest.php rename to test/Provider/lv_LV/PersonTest.php diff --git a/test/Faker/Provider/mn_MN/PersonTest.php b/test/Provider/mn_MN/PersonTest.php similarity index 100% rename from test/Faker/Provider/mn_MN/PersonTest.php rename to test/Provider/mn_MN/PersonTest.php diff --git a/test/Faker/Provider/ms_MY/PersonTest.php b/test/Provider/ms_MY/PersonTest.php similarity index 100% rename from test/Faker/Provider/ms_MY/PersonTest.php rename to test/Provider/ms_MY/PersonTest.php diff --git a/test/Faker/Provider/nb_NO/PhoneNumberTest.php b/test/Provider/nb_NO/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/nb_NO/PhoneNumberTest.php rename to test/Provider/nb_NO/PhoneNumberTest.php diff --git a/test/Faker/Provider/ne_NP/PaymentTest.php b/test/Provider/ne_NP/PaymentTest.php similarity index 100% rename from test/Faker/Provider/ne_NP/PaymentTest.php rename to test/Provider/ne_NP/PaymentTest.php diff --git a/test/Faker/Provider/nl_BE/PaymentTest.php b/test/Provider/nl_BE/PaymentTest.php similarity index 100% rename from test/Faker/Provider/nl_BE/PaymentTest.php rename to test/Provider/nl_BE/PaymentTest.php diff --git a/test/Faker/Provider/nl_BE/PersonTest.php b/test/Provider/nl_BE/PersonTest.php similarity index 100% rename from test/Faker/Provider/nl_BE/PersonTest.php rename to test/Provider/nl_BE/PersonTest.php diff --git a/test/Faker/Provider/nl_NL/CompanyTest.php b/test/Provider/nl_NL/CompanyTest.php similarity index 100% rename from test/Faker/Provider/nl_NL/CompanyTest.php rename to test/Provider/nl_NL/CompanyTest.php diff --git a/test/Faker/Provider/nl_NL/PersonTest.php b/test/Provider/nl_NL/PersonTest.php similarity index 100% rename from test/Faker/Provider/nl_NL/PersonTest.php rename to test/Provider/nl_NL/PersonTest.php diff --git a/test/Faker/Provider/pl_PL/AddressTest.php b/test/Provider/pl_PL/AddressTest.php similarity index 100% rename from test/Faker/Provider/pl_PL/AddressTest.php rename to test/Provider/pl_PL/AddressTest.php diff --git a/test/Faker/Provider/pl_PL/ColorTest.php b/test/Provider/pl_PL/ColorTest.php similarity index 100% rename from test/Faker/Provider/pl_PL/ColorTest.php rename to test/Provider/pl_PL/ColorTest.php diff --git a/test/Faker/Provider/pl_PL/LicensePlateTest.php b/test/Provider/pl_PL/LicensePlateTest.php similarity index 100% rename from test/Faker/Provider/pl_PL/LicensePlateTest.php rename to test/Provider/pl_PL/LicensePlateTest.php diff --git a/test/Faker/Provider/pl_PL/PersonTest.php b/test/Provider/pl_PL/PersonTest.php similarity index 100% rename from test/Faker/Provider/pl_PL/PersonTest.php rename to test/Provider/pl_PL/PersonTest.php diff --git a/test/Faker/Provider/pt_BR/CompanyTest.php b/test/Provider/pt_BR/CompanyTest.php similarity index 100% rename from test/Faker/Provider/pt_BR/CompanyTest.php rename to test/Provider/pt_BR/CompanyTest.php diff --git a/test/Faker/Provider/pt_BR/PersonTest.php b/test/Provider/pt_BR/PersonTest.php similarity index 100% rename from test/Faker/Provider/pt_BR/PersonTest.php rename to test/Provider/pt_BR/PersonTest.php diff --git a/test/Faker/Provider/pt_BR/TextTest.php b/test/Provider/pt_BR/TextTest.php similarity index 100% rename from test/Faker/Provider/pt_BR/TextTest.php rename to test/Provider/pt_BR/TextTest.php diff --git a/test/Faker/Provider/pt_PT/AddressTest.php b/test/Provider/pt_PT/AddressTest.php similarity index 100% rename from test/Faker/Provider/pt_PT/AddressTest.php rename to test/Provider/pt_PT/AddressTest.php diff --git a/test/Faker/Provider/pt_PT/PersonTest.php b/test/Provider/pt_PT/PersonTest.php similarity index 100% rename from test/Faker/Provider/pt_PT/PersonTest.php rename to test/Provider/pt_PT/PersonTest.php diff --git a/test/Faker/Provider/pt_PT/PhoneNumberTest.php b/test/Provider/pt_PT/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/pt_PT/PhoneNumberTest.php rename to test/Provider/pt_PT/PhoneNumberTest.php diff --git a/test/Faker/Provider/ro_RO/PersonTest.php b/test/Provider/ro_RO/PersonTest.php similarity index 100% rename from test/Faker/Provider/ro_RO/PersonTest.php rename to test/Provider/ro_RO/PersonTest.php diff --git a/test/Faker/Provider/ro_RO/PhoneNumberTest.php b/test/Provider/ro_RO/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/ro_RO/PhoneNumberTest.php rename to test/Provider/ro_RO/PhoneNumberTest.php diff --git a/test/Faker/Provider/ru_RU/CompanyTest.php b/test/Provider/ru_RU/CompanyTest.php similarity index 100% rename from test/Faker/Provider/ru_RU/CompanyTest.php rename to test/Provider/ru_RU/CompanyTest.php diff --git a/test/Faker/Provider/ru_RU/PersonTest.php b/test/Provider/ru_RU/PersonTest.php similarity index 100% rename from test/Faker/Provider/ru_RU/PersonTest.php rename to test/Provider/ru_RU/PersonTest.php diff --git a/test/Faker/Provider/ru_RU/TextTest.php b/test/Provider/ru_RU/TextTest.php similarity index 100% rename from test/Faker/Provider/ru_RU/TextTest.php rename to test/Provider/ru_RU/TextTest.php diff --git a/test/Faker/Provider/sv_SE/MunicipalityTest.php b/test/Provider/sv_SE/MunicipalityTest.php similarity index 100% rename from test/Faker/Provider/sv_SE/MunicipalityTest.php rename to test/Provider/sv_SE/MunicipalityTest.php diff --git a/test/Faker/Provider/sv_SE/PersonTest.php b/test/Provider/sv_SE/PersonTest.php similarity index 100% rename from test/Faker/Provider/sv_SE/PersonTest.php rename to test/Provider/sv_SE/PersonTest.php diff --git a/test/Faker/Provider/sv_SE/PhoneNumberTest.php b/test/Provider/sv_SE/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/sv_SE/PhoneNumberTest.php rename to test/Provider/sv_SE/PhoneNumberTest.php diff --git a/test/Faker/Provider/tr_TR/CompanyTest.php b/test/Provider/tr_TR/CompanyTest.php similarity index 100% rename from test/Faker/Provider/tr_TR/CompanyTest.php rename to test/Provider/tr_TR/CompanyTest.php diff --git a/test/Faker/Provider/tr_TR/PaymentTest.php b/test/Provider/tr_TR/PaymentTest.php similarity index 100% rename from test/Faker/Provider/tr_TR/PaymentTest.php rename to test/Provider/tr_TR/PaymentTest.php diff --git a/test/Faker/Provider/tr_TR/PersonTest.php b/test/Provider/tr_TR/PersonTest.php similarity index 100% rename from test/Faker/Provider/tr_TR/PersonTest.php rename to test/Provider/tr_TR/PersonTest.php diff --git a/test/Faker/Provider/tr_TR/PhoneNumberTest.php b/test/Provider/tr_TR/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/tr_TR/PhoneNumberTest.php rename to test/Provider/tr_TR/PhoneNumberTest.php diff --git a/test/Faker/Provider/uk_UA/AddressTest.php b/test/Provider/uk_UA/AddressTest.php similarity index 100% rename from test/Faker/Provider/uk_UA/AddressTest.php rename to test/Provider/uk_UA/AddressTest.php diff --git a/test/Faker/Provider/uk_UA/PersonTest.php b/test/Provider/uk_UA/PersonTest.php similarity index 100% rename from test/Faker/Provider/uk_UA/PersonTest.php rename to test/Provider/uk_UA/PersonTest.php diff --git a/test/Faker/Provider/uk_UA/PhoneNumberTest.php b/test/Provider/uk_UA/PhoneNumberTest.php similarity index 100% rename from test/Faker/Provider/uk_UA/PhoneNumberTest.php rename to test/Provider/uk_UA/PhoneNumberTest.php diff --git a/test/Faker/Provider/zh_TW/CompanyTest.php b/test/Provider/zh_TW/CompanyTest.php similarity index 100% rename from test/Faker/Provider/zh_TW/CompanyTest.php rename to test/Provider/zh_TW/CompanyTest.php diff --git a/test/Faker/Provider/zh_TW/PersonTest.php b/test/Provider/zh_TW/PersonTest.php similarity index 100% rename from test/Faker/Provider/zh_TW/PersonTest.php rename to test/Provider/zh_TW/PersonTest.php diff --git a/test/Faker/Provider/zh_TW/TextTest.php b/test/Provider/zh_TW/TextTest.php similarity index 100% rename from test/Faker/Provider/zh_TW/TextTest.php rename to test/Provider/zh_TW/TextTest.php diff --git a/test/Faker/TestCase.php b/test/TestCase.php similarity index 100% rename from test/Faker/TestCase.php rename to test/TestCase.php diff --git a/test/Faker/UniqueGeneratorTest.php b/test/UniqueGeneratorTest.php similarity index 100% rename from test/Faker/UniqueGeneratorTest.php rename to test/UniqueGeneratorTest.php diff --git a/test/Faker/ValidGeneratorTest.php b/test/ValidGeneratorTest.php similarity index 100% rename from test/Faker/ValidGeneratorTest.php rename to test/ValidGeneratorTest.php From 25a8f139e4f9aa6812d5df99357af0ac0d035e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 21 Sep 2023 14:59:36 +0200 Subject: [PATCH 197/229] Fix: Declare strict types in examples (#777) --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index d09712ae15..2bc7790073 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,9 @@ Use `Faker\Factory::create()` to create and initialize a Faker generator, which ```php name()` yields a different (random) result. This is becaus ```php name() . "\n"; } From 5de3d139daf7f0b36ecf2fbae64d07821599cd86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Thu, 21 Sep 2023 15:38:26 +0200 Subject: [PATCH 198/229] Fix: Add DocBlock (#776) --- src/Container/Container.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Container/Container.php b/src/Container/Container.php index 9460b17a4f..2b68607af4 100644 --- a/src/Container/Container.php +++ b/src/Container/Container.php @@ -18,6 +18,9 @@ final class Container implements ContainerInterface */ private array $definitions; + /** + * @var array + */ private array $services = []; /** From c19aaf111d1c1de1982aacf55bcc64e7c4c8421d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 22 Sep 2023 07:14:14 +0200 Subject: [PATCH 199/229] Fix: Namespace (#774) --- test/{Extension => Container}/ContainerBuilderTest.php | 2 +- test/{Extension => Container}/ContainerTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename test/{Extension => Container}/ContainerBuilderTest.php (99%) rename test/{Extension => Container}/ContainerTest.php (99%) diff --git a/test/Extension/ContainerBuilderTest.php b/test/Container/ContainerBuilderTest.php similarity index 99% rename from test/Extension/ContainerBuilderTest.php rename to test/Container/ContainerBuilderTest.php index b6b9a22600..6208b79bb5 100644 --- a/test/Extension/ContainerBuilderTest.php +++ b/test/Container/ContainerBuilderTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Faker\Test\Extension; +namespace Faker\Test\Container; use Faker\Container\ContainerBuilder; use Faker\Core\File; diff --git a/test/Extension/ContainerTest.php b/test/Container/ContainerTest.php similarity index 99% rename from test/Extension/ContainerTest.php rename to test/Container/ContainerTest.php index 3a6932905b..4ce392382d 100644 --- a/test/Extension/ContainerTest.php +++ b/test/Container/ContainerTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Faker\Test\Extension; +namespace Faker\Test\Container; use Faker\Container\Container; use Faker\Container\ContainerException; From 550cd893d344b5fa31b5d12e0d2fbb17c1101ff5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Sep 2023 09:27:09 +0200 Subject: [PATCH 200/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#779) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.34 to 1.10.35. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.34...1.10.35) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index f5cd512290..f224ad1efe 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.34", + "phpstan/phpstan": "^1.10.35", "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 085a4e0406..3b72224f15 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "b0fb02f9d2117da81e255625a923633e", + "content-hash": "84f6f43a9c2d255e22eaf0e0130eeabc", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.34", + "version": "1.10.35", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901" + "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7f806b6f1403e6914c778140e2ba07c293cb4901", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3", + "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-09-13T09:49:47+00:00" + "time": "2023-09-19T15:27:56+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From a734bf0716adf434813c2f86b950acb51b65a65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 22 Sep 2023 10:21:29 +0200 Subject: [PATCH 201/229] Enhancement: Declare strict types in `test/` (#780) * Enhancement: Require code in test/ to declare strict types * Fix: Run 'make cs' * Fix: Cast values to expected types --- .gitattributes | 2 + .github/workflows/coding-standards.yaml | 4 + .php-cs-fixer.dist.php | 221 +----------------- .php-cs-fixer.rules.php | 216 +++++++++++++++++ .php-cs-fixer.test.php | 26 +++ Makefile | 1 + test/Calculator/EanTest.php | 2 + test/Calculator/IbanTest.php | 2 + test/Calculator/IsbnTest.php | 2 + test/Calculator/LuhnTest.php | 6 +- test/Core/UuidTest.php | 2 + test/Core/VersionTest.php | 2 + test/DefaultGeneratorTest.php | 2 + .../Extension/GeneratorAwareExtensionTest.php | 2 + test/Extension/HelperTest.php | 2 + test/Fixture/Provider/BarProvider.php | 2 + test/Fixture/Provider/FooProvider.php | 2 + test/GeneratorTest.php | 2 + test/Provider/AddressTest.php | 2 + test/Provider/BarcodeTest.php | 2 + test/Provider/BaseTest.php | 4 +- test/Provider/BiasedTest.php | 2 + test/Provider/ColorTest.php | 2 + test/Provider/CompanyTest.php | 2 + test/Provider/DateTimeTest.php | 2 + test/Provider/HtmlLoremTest.php | 2 + test/Provider/ImageTest.php | 2 + test/Provider/InternetTest.php | 2 + test/Provider/LocalizationTest.php | 2 + test/Provider/LoremTest.php | 2 + test/Provider/MedicalTest.php | 2 + test/Provider/MiscellaneousTest.php | 2 + test/Provider/PaymentTest.php | 2 + test/Provider/PersonTest.php | 2 + test/Provider/PhoneNumberTest.php | 2 + test/Provider/ProviderOverrideTest.php | 2 + test/Provider/TextTest.php | 2 + test/Provider/UserAgentTest.php | 2 + test/Provider/UuidTest.php | 2 + test/Provider/ar_EG/CompanyTest.php | 2 + test/Provider/ar_EG/InternetTest.php | 2 + test/Provider/ar_EG/PersonTest.php | 2 + test/Provider/ar_EG/TextTest.php | 2 + test/Provider/ar_JO/InternetTest.php | 2 + test/Provider/ar_SA/CompanyTest.php | 2 + test/Provider/ar_SA/InternetTest.php | 2 + test/Provider/ar_SA/PersonTest.php | 2 + test/Provider/bg_BG/PaymentTest.php | 2 + test/Provider/bn_BD/PersonTest.php | 2 + test/Provider/cs_CZ/PersonTest.php | 2 + test/Provider/da_DK/InternetTest.php | 2 + test/Provider/de_AT/AddressTest.php | 2 + test/Provider/de_AT/InternetTest.php | 2 + test/Provider/de_AT/PaymentTest.php | 2 + test/Provider/de_AT/PersonTest.php | 2 + test/Provider/de_AT/PhoneNumberTest.php | 2 + test/Provider/de_CH/AddressTest.php | 2 + test/Provider/de_CH/InternetTest.php | 2 + test/Provider/de_CH/PersonTest.php | 2 + test/Provider/de_CH/PhoneNumberTest.php | 2 + test/Provider/de_DE/InternetTest.php | 2 + test/Provider/de_DE/PhoneNumberTest.php | 2 + test/Provider/el_GR/PhoneNumberTest.php | 2 + test/Provider/el_GR/TextTest.php | 2 + test/Provider/en_AU/AddressTest.php | 2 + test/Provider/en_CA/AddressTest.php | 2 + test/Provider/en_GB/AddressTest.php | 2 + test/Provider/en_GB/CompanyTest.php | 2 + test/Provider/en_GB/PersonTest.php | 2 + test/Provider/en_GB/PhoneNumberTest.php | 2 + test/Provider/en_IN/AddressTest.php | 2 + test/Provider/en_NG/AddressTest.php | 2 + test/Provider/en_NG/InternetTest.php | 2 + test/Provider/en_NG/PersonTest.php | 2 + test/Provider/en_NG/PhoneNumberTest.php | 2 + test/Provider/en_NZ/PhoneNumberTest.php | 2 + test/Provider/en_PH/AddressTest.php | 2 + test/Provider/en_SG/AddressTest.php | 2 + test/Provider/en_SG/PersonTest.php | 2 + test/Provider/en_SG/PhoneNumberTest.php | 2 + test/Provider/en_UG/AddressTest.php | 2 + test/Provider/en_US/CompanyTest.php | 2 + test/Provider/en_US/PaymentTest.php | 2 + test/Provider/en_US/PersonTest.php | 2 + test/Provider/en_US/PhoneNumberTest.php | 2 + test/Provider/en_ZA/CompanyTest.php | 2 + test/Provider/en_ZA/InternetTest.php | 2 + test/Provider/en_ZA/PersonTest.php | 2 + test/Provider/en_ZA/PhoneNumberTest.php | 2 + test/Provider/es_ES/PaymentTest.php | 2 + test/Provider/es_ES/PersonTest.php | 2 + test/Provider/es_ES/PhoneNumberTest.php | 2 + test/Provider/es_ES/TextTest.php | 2 + test/Provider/es_PE/CompanyTest.php | 2 + test/Provider/es_PE/PersonTest.php | 2 + test/Provider/es_VE/CompanyTest.php | 2 + test/Provider/es_VE/PersonTest.php | 2 + test/Provider/fa_IR/PersonTest.php | 2 + test/Provider/fi_FI/InternetTest.php | 2 + test/Provider/fi_FI/PersonTest.php | 2 + test/Provider/fr_BE/PaymentTest.php | 2 + test/Provider/fr_CH/AddressTest.php | 2 + test/Provider/fr_CH/InternetTest.php | 2 + test/Provider/fr_CH/PersonTest.php | 2 + test/Provider/fr_CH/PhoneNumberTest.php | 2 + test/Provider/fr_FR/AddressTest.php | 2 + test/Provider/fr_FR/ColorTest.php | 2 + test/Provider/fr_FR/CompanyTest.php | 2 + test/Provider/fr_FR/PaymentTest.php | 2 + test/Provider/fr_FR/PersonTest.php | 2 + test/Provider/fr_FR/PhoneNumberTest.php | 2 + test/Provider/fr_FR/TextTest.php | 2 + test/Provider/hu_HU/PersonTest.php | 2 + test/Provider/id_ID/PersonTest.php | 2 + test/Provider/it_CH/AddressTest.php | 2 + test/Provider/it_CH/InternetTest.php | 2 + test/Provider/it_CH/PersonTest.php | 2 + test/Provider/it_CH/PhoneNumberTest.php | 2 + test/Provider/it_IT/CompanyTest.php | 2 + test/Provider/it_IT/PersonTest.php | 2 + test/Provider/ja_JP/InternetTest.php | 2 + test/Provider/ja_JP/PersonTest.php | 2 + test/Provider/ja_JP/PhoneNumberTest.php | 2 + test/Provider/ka_GE/TextTest.php | 2 + test/Provider/kk_KZ/CompanyTest.php | 2 + test/Provider/kk_KZ/PersonTest.php | 2 + test/Provider/kk_KZ/TextTest.php | 2 + test/Provider/ko_KR/TextTest.php | 2 + test/Provider/lt_LT/AddressTest.php | 2 + test/Provider/lv_LV/AddressTest.php | 2 + test/Provider/lv_LV/PersonTest.php | 2 + test/Provider/mn_MN/PersonTest.php | 2 + test/Provider/ms_MY/PersonTest.php | 2 + test/Provider/nb_NO/PhoneNumberTest.php | 2 + test/Provider/ne_NP/PaymentTest.php | 2 + test/Provider/nl_BE/PaymentTest.php | 4 +- test/Provider/nl_BE/PersonTest.php | 2 + test/Provider/nl_NL/CompanyTest.php | 2 + test/Provider/nl_NL/PersonTest.php | 2 + test/Provider/pl_PL/AddressTest.php | 2 + test/Provider/pl_PL/ColorTest.php | 2 + test/Provider/pl_PL/LicensePlateTest.php | 2 + test/Provider/pl_PL/PersonTest.php | 2 + test/Provider/pt_BR/CompanyTest.php | 2 + test/Provider/pt_BR/PersonTest.php | 2 + test/Provider/pt_BR/TextTest.php | 2 + test/Provider/pt_PT/AddressTest.php | 2 + test/Provider/pt_PT/PersonTest.php | 2 + test/Provider/pt_PT/PhoneNumberTest.php | 2 + test/Provider/ro_RO/PersonTest.php | 4 +- test/Provider/ro_RO/PhoneNumberTest.php | 2 + test/Provider/ru_RU/CompanyTest.php | 2 + test/Provider/ru_RU/PersonTest.php | 2 + test/Provider/ru_RU/TextTest.php | 2 + test/Provider/sv_SE/MunicipalityTest.php | 2 + test/Provider/sv_SE/PersonTest.php | 2 + test/Provider/sv_SE/PhoneNumberTest.php | 2 + test/Provider/tr_TR/CompanyTest.php | 2 + test/Provider/tr_TR/PaymentTest.php | 2 + test/Provider/tr_TR/PersonTest.php | 2 + test/Provider/tr_TR/PhoneNumberTest.php | 2 + test/Provider/uk_UA/AddressTest.php | 2 + test/Provider/uk_UA/PersonTest.php | 2 + test/Provider/uk_UA/PhoneNumberTest.php | 2 + test/Provider/zh_TW/CompanyTest.php | 2 + test/Provider/zh_TW/PersonTest.php | 2 + test/Provider/zh_TW/TextTest.php | 2 + test/TestCase.php | 2 + test/UniqueGeneratorTest.php | 2 + test/ValidGeneratorTest.php | 2 + test/documentor.php | 3 +- test/test.php | 3 +- 172 files changed, 590 insertions(+), 224 deletions(-) create mode 100644 .php-cs-fixer.rules.php create mode 100644 .php-cs-fixer.test.php diff --git a/.gitattributes b/.gitattributes index 5634d98c1b..fabcbf77fe 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,6 +5,8 @@ /.gitattributes export-ignore /.gitignore export-ignore /.php-cs-fixer.dist.php export-ignore +/.php-cs-fixer.rules.php export-ignore +/.php-cs-fixer.test.php export-ignore /.yamllint.yaml export-ignore /codecov.yml export-ignore /Makefile export-ignore diff --git a/.github/workflows/coding-standards.yaml b/.github/workflows/coding-standards.yaml index 45055acb01..2c256a9a4a 100644 --- a/.github/workflows/coding-standards.yaml +++ b/.github/workflows/coding-standards.yaml @@ -60,6 +60,10 @@ jobs: run: | vendor/bin/php-cs-fixer fix --ansi --diff --dry-run --verbose + - name: "Run php-cs-fixer for test code" + run: | + vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.test.php --diff --dry-run --verbose + yamllint: name: "yamllint" diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index f6ebd33afd..84e7551121 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -6,11 +6,9 @@ ->exclude([ '.build/', '.github/', + 'test/', 'vendor-bin/', ]) - ->notPath([ - 'test/Fixture/Enum/BackedEnum.php', - ]) ->ignoreDotFiles(false) ->in(__DIR__); @@ -20,221 +18,10 @@ mkdir('.build/php-cs-fixer', 0755, true); } +$rules = require __DIR__ . '/.php-cs-fixer.rules.php'; + return $config ->setCacheFile('.build/php-cs-fixer/cache') ->setFinder($finder) ->setRiskyAllowed(true) - ->setRules([ - '@PSR2' => true, - 'array_indentation' => true, - 'array_syntax' => [ - 'syntax' => 'short', - ], - 'binary_operator_spaces' => true, - 'blank_line_after_opening_tag' => true, - 'blank_line_before_statement' => [ - 'statements' => [ - 'break', - 'continue', - 'default', - 'do', - 'exit', - 'for', - 'foreach', - 'if', - 'include', - 'include_once', - 'require', - 'require_once', - 'return', - 'switch', - 'throw', - 'try', - 'while', - 'yield', - ], - ], - 'blank_lines_before_namespace' => [ - 'max_line_breaks' => 2, - 'min_line_breaks' => 2, - ], - 'cast_spaces' => true, - 'class_attributes_separation' => [ - 'elements' => [ - 'method' => 'one', - ], - ], - 'combine_nested_dirname' => true, - 'compact_nullable_typehint' => true, - 'concat_space' => [ - 'spacing' => 'one', - ], - 'control_structure_braces' => true, - 'control_structure_continuation_position' => true, - 'curly_braces_position' => true, - 'declare_equal_normalize' => true, - 'declare_parentheses' => true, - 'general_phpdoc_annotation_remove' => [ - 'annotations' => [ - 'author', - ], - ], - 'global_namespace_import' => [ - 'import_classes' => false, - 'import_constants' => false, - 'import_functions' => false, - ], - 'implode_call' => true, - 'increment_style' => true, - 'is_null' => true, - 'lambda_not_used_import' => true, - 'list_syntax' => [ - 'syntax' => 'short', - ], - 'lowercase_cast' => true, - 'lowercase_static_reference' => true, - 'magic_constant_casing' => true, - 'magic_method_casing' => true, - 'modernize_types_casting' => true, - 'multiline_comment_opening_closing' => true, - 'new_with_braces' => true, - 'no_alias_functions' => true, - 'no_blank_lines_after_class_opening' => true, - 'no_blank_lines_after_phpdoc' => true, - 'no_empty_phpdoc' => true, - 'no_empty_statement' => true, - 'no_extra_blank_lines' => true, - 'no_leading_import_slash' => true, - 'no_leading_namespace_whitespace' => true, - 'no_multiple_statements_per_line' => true, - 'no_spaces_around_offset' => true, - 'no_superfluous_elseif' => true, - 'no_superfluous_phpdoc_tags' => true, - 'no_trailing_comma_in_singleline' => [ - 'elements' => [ - 'array', - ], - ], - 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, - 'no_unneeded_final_method' => true, - 'no_unreachable_default_argument_value' => true, - 'no_unset_cast' => true, - 'no_unused_imports' => true, - 'no_useless_else' => true, - 'no_whitespace_before_comma_in_array' => true, - 'no_whitespace_in_blank_line' => true, - 'non_printable_character' => true, - 'normalize_index_brace' => true, - 'operator_linebreak' => [ - 'only_booleans' => true, - 'position' => 'beginning', - ], - 'ordered_imports' => true, - 'php_unit_construct' => true, - 'php_unit_dedicate_assert' => true, - 'php_unit_dedicate_assert_internal_type' => true, - 'php_unit_expectation' => true, - 'php_unit_fqcn_annotation' => true, - 'php_unit_method_casing' => true, - 'php_unit_mock' => true, - 'php_unit_mock_short_will_return' => true, - 'php_unit_namespaced' => true, - 'php_unit_no_expectation_annotation' => true, - 'php_unit_set_up_tear_down_visibility' => true, - 'php_unit_test_case_static_method_calls' => [ - 'call_type' => 'self', - ], - 'phpdoc_align' => true, - 'phpdoc_indent' => true, - 'phpdoc_inline_tag_normalizer' => true, - 'phpdoc_line_span' => true, - 'phpdoc_no_access' => true, - 'phpdoc_no_alias_tag' => [ - 'replacements' => [ - 'link' => 'see', - 'type' => 'var', - ], - ], - 'phpdoc_no_empty_return' => true, - 'phpdoc_no_package' => true, - 'phpdoc_order' => true, - 'phpdoc_order_by_value' => [ - 'annotations' => [ - 'covers', - 'dataProvider', - 'group', - 'requires', - 'throws', - 'uses', - ], - ], - 'phpdoc_return_self_reference' => true, - 'phpdoc_scalar' => true, - 'phpdoc_separation' => true, - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_trim' => true, - 'phpdoc_trim_consecutive_blank_line_separation' => true, - 'phpdoc_types' => true, - 'phpdoc_types_order' => [ - 'null_adjustment' => 'always_last', - 'sort_algorithm' => 'alpha', - ], - 'phpdoc_var_without_name' => true, - 'pow_to_exponentiation' => true, - 'protected_to_private' => true, - 'psr_autoloading' => true, - 'random_api_migration' => true, - 'return_assignment' => true, - 'return_type_declaration' => true, - 'self_static_accessor' => true, - 'semicolon_after_instruction' => true, - 'short_scalar_cast' => true, - 'single_line_comment_style' => true, - 'single_quote' => true, - 'single_space_around_construct' => [ - 'constructs_contain_a_single_space' => [], - 'constructs_followed_by_a_single_space' => [ - 'elseif', - 'for', - 'foreach', - 'if', - 'match', - 'while', - 'use_lambda', - ], - 'constructs_preceded_by_a_single_space' => [ - 'use_lambda', - ], - ], - 'single_trait_insert_per_statement' => true, - 'standardize_not_equals' => true, - 'statement_indentation' => true, - 'static_lambda' => true, - 'strict_param' => true, - 'switch_case_space' => true, - 'ternary_operator_spaces' => true, - 'ternary_to_null_coalescing' => true, - 'trailing_comma_in_multiline' => [ - 'elements' => [ - 'arguments', - 'arrays', - ], - ], - 'trim_array_spaces' => true, - 'type_declaration_spaces' => [ - 'elements' => [ - 'function', - ], - ], - 'unary_operator_spaces' => true, - 'visibility_required' => [ - 'elements' => [ - 'const', - 'method', - 'property', - ], - ], - 'void_return' => false, - 'whitespace_after_comma_in_array' => true, - ]); + ->setRules($rules); diff --git a/.php-cs-fixer.rules.php b/.php-cs-fixer.rules.php new file mode 100644 index 0000000000..c533b3896f --- /dev/null +++ b/.php-cs-fixer.rules.php @@ -0,0 +1,216 @@ + true, + 'array_indentation' => true, + 'array_syntax' => [ + 'syntax' => 'short', + ], + 'binary_operator_spaces' => true, + 'blank_line_after_opening_tag' => true, + 'blank_line_before_statement' => [ + 'statements' => [ + 'break', + 'continue', + 'default', + 'do', + 'exit', + 'for', + 'foreach', + 'if', + 'include', + 'include_once', + 'require', + 'require_once', + 'return', + 'switch', + 'throw', + 'try', + 'while', + 'yield', + ], + ], + 'blank_lines_before_namespace' => [ + 'max_line_breaks' => 2, + 'min_line_breaks' => 2, + ], + 'cast_spaces' => true, + 'class_attributes_separation' => [ + 'elements' => [ + 'method' => 'one', + ], + ], + 'combine_nested_dirname' => true, + 'compact_nullable_typehint' => true, + 'concat_space' => [ + 'spacing' => 'one', + ], + 'control_structure_braces' => true, + 'control_structure_continuation_position' => true, + 'curly_braces_position' => true, + 'declare_equal_normalize' => true, + 'declare_parentheses' => true, + 'general_phpdoc_annotation_remove' => [ + 'annotations' => [ + 'author', + ], + ], + 'global_namespace_import' => [ + 'import_classes' => false, + 'import_constants' => false, + 'import_functions' => false, + ], + 'implode_call' => true, + 'increment_style' => true, + 'is_null' => true, + 'lambda_not_used_import' => true, + 'list_syntax' => [ + 'syntax' => 'short', + ], + 'lowercase_cast' => true, + 'lowercase_static_reference' => true, + 'magic_constant_casing' => true, + 'magic_method_casing' => true, + 'modernize_types_casting' => true, + 'multiline_comment_opening_closing' => true, + 'new_with_braces' => true, + 'no_alias_functions' => true, + 'no_blank_lines_after_class_opening' => true, + 'no_blank_lines_after_phpdoc' => true, + 'no_empty_phpdoc' => true, + 'no_empty_statement' => true, + 'no_extra_blank_lines' => true, + 'no_leading_import_slash' => true, + 'no_leading_namespace_whitespace' => true, + 'no_multiple_statements_per_line' => true, + 'no_spaces_around_offset' => true, + 'no_superfluous_elseif' => true, + 'no_superfluous_phpdoc_tags' => true, + 'no_trailing_comma_in_singleline' => [ + 'elements' => [ + 'array', + ], + ], + 'no_unneeded_control_parentheses' => true, + 'no_unneeded_curly_braces' => true, + 'no_unneeded_final_method' => true, + 'no_unreachable_default_argument_value' => true, + 'no_unset_cast' => true, + 'no_unused_imports' => true, + 'no_useless_else' => true, + 'no_whitespace_before_comma_in_array' => true, + 'no_whitespace_in_blank_line' => true, + 'non_printable_character' => true, + 'normalize_index_brace' => true, + 'operator_linebreak' => [ + 'only_booleans' => true, + 'position' => 'beginning', + ], + 'ordered_imports' => true, + 'php_unit_construct' => true, + 'php_unit_dedicate_assert' => true, + 'php_unit_dedicate_assert_internal_type' => true, + 'php_unit_expectation' => true, + 'php_unit_fqcn_annotation' => true, + 'php_unit_method_casing' => true, + 'php_unit_mock' => true, + 'php_unit_mock_short_will_return' => true, + 'php_unit_namespaced' => true, + 'php_unit_no_expectation_annotation' => true, + 'php_unit_set_up_tear_down_visibility' => true, + 'php_unit_test_case_static_method_calls' => [ + 'call_type' => 'self', + ], + 'phpdoc_align' => true, + 'phpdoc_indent' => true, + 'phpdoc_inline_tag_normalizer' => true, + 'phpdoc_line_span' => true, + 'phpdoc_no_access' => true, + 'phpdoc_no_alias_tag' => [ + 'replacements' => [ + 'link' => 'see', + 'type' => 'var', + ], + ], + 'phpdoc_no_empty_return' => true, + 'phpdoc_no_package' => true, + 'phpdoc_order' => true, + 'phpdoc_order_by_value' => [ + 'annotations' => [ + 'covers', + 'dataProvider', + 'group', + 'requires', + 'throws', + 'uses', + ], + ], + 'phpdoc_return_self_reference' => true, + 'phpdoc_scalar' => true, + 'phpdoc_separation' => true, + 'phpdoc_single_line_var_spacing' => true, + 'phpdoc_trim' => true, + 'phpdoc_trim_consecutive_blank_line_separation' => true, + 'phpdoc_types' => true, + 'phpdoc_types_order' => [ + 'null_adjustment' => 'always_last', + 'sort_algorithm' => 'alpha', + ], + 'phpdoc_var_without_name' => true, + 'pow_to_exponentiation' => true, + 'protected_to_private' => true, + 'psr_autoloading' => true, + 'random_api_migration' => true, + 'return_assignment' => true, + 'return_type_declaration' => true, + 'self_static_accessor' => true, + 'semicolon_after_instruction' => true, + 'short_scalar_cast' => true, + 'single_line_comment_style' => true, + 'single_quote' => true, + 'single_space_around_construct' => [ + 'constructs_contain_a_single_space' => [], + 'constructs_followed_by_a_single_space' => [ + 'elseif', + 'for', + 'foreach', + 'if', + 'match', + 'while', + 'use_lambda', + ], + 'constructs_preceded_by_a_single_space' => [ + 'use_lambda', + ], + ], + 'single_trait_insert_per_statement' => true, + 'standardize_not_equals' => true, + 'statement_indentation' => true, + 'static_lambda' => true, + 'strict_param' => true, + 'switch_case_space' => true, + 'ternary_operator_spaces' => true, + 'ternary_to_null_coalescing' => true, + 'trailing_comma_in_multiline' => [ + 'elements' => [ + 'arguments', + 'arrays', + ], + ], + 'trim_array_spaces' => true, + 'type_declaration_spaces' => [ + 'elements' => [ + 'function', + ], + ], + 'unary_operator_spaces' => true, + 'visibility_required' => [ + 'elements' => [ + 'const', + 'method', + 'property', + ], + ], + 'void_return' => false, + 'whitespace_after_comma_in_array' => true, +]; diff --git a/.php-cs-fixer.test.php b/.php-cs-fixer.test.php new file mode 100644 index 0000000000..a210c37464 --- /dev/null +++ b/.php-cs-fixer.test.php @@ -0,0 +1,26 @@ +notPath([ + 'Fixture/Enum/BackedEnum.php', + ]) + ->ignoreDotFiles(false) + ->in(__DIR__ . '/test'); + +$config = new PhpCsFixer\Config('faker'); + +if (!is_dir('.build/php-cs-fixer')) { + mkdir('.build/php-cs-fixer', 0755, true); +} + +$rules = require __DIR__ . '/.php-cs-fixer.rules.php'; + +return $config + ->setCacheFile('.build/php-cs-fixer/cache.test') + ->setFinder($finder) + ->setRiskyAllowed(true) + ->setRules(array_merge($rules, [ + 'declare_strict_types' => true, + ])); diff --git a/Makefile b/Makefile index 6765bbcffc..d53588eaf0 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ help: .PHONY: cs cs: vendor ## Fixes coding standard issues with php-cs-fixer vendor/bin/php-cs-fixer fix --diff --verbose + vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.test.php --diff --verbose .PHONY: coverage coverage: vendor ## Collects coverage with phpunit diff --git a/test/Calculator/EanTest.php b/test/Calculator/EanTest.php index f611285b9b..a6d9cdef60 100644 --- a/test/Calculator/EanTest.php +++ b/test/Calculator/EanTest.php @@ -1,5 +1,7 @@ seed(5); From 00e61a075009a71ff5e54f37a27bd228fc1256a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 22 Sep 2023 10:54:32 +0200 Subject: [PATCH 202/229] Enhancement: Allow defining services that resolve to object instead of Extension (#771) --- roave-bc-check.yaml | 1 + src/Container/Container.php | 9 +++--- test/Container/ContainerTest.php | 54 ++++++++++++++++++++------------ 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/roave-bc-check.yaml b/roave-bc-check.yaml index 76e34786e8..255c82fa6e 100644 --- a/roave-bc-check.yaml +++ b/roave-bc-check.yaml @@ -31,6 +31,7 @@ parameters: - '#\[BC\] CHANGED: The parameter \$partialValue of Faker\\Calculator\\Luhn::generateLuhnNumber\(\) changed from no type to a non-contravariant string#' - '#\[BC\] CHANGED: The parameter \$partialValue of Faker\\Calculator\\Luhn::generateLuhnNumber\(\) changed from no type to string#' - '#\[BC\] CHANGED: The parameter \$value of Faker\\Container\\ContainerBuilder\#add\(\) changed from no type to a non-contravariant string#' + - '#\[BC\] CHANGED: The return type of Faker\\Container\\Container\#get\(\) changed from Faker\\Extension\\Extension to the non-covariant object#' - '#\[BC\] CHANGED: The return type of Faker\\Extension\\PersonExtension\#name\(\) changed from no type to string#' - '#\[BC\] CHANGED: Type documentation for property Faker\\Provider\\en_ZA\\Internet::\$tld changed from having no type to array#' - '#\[BC\] REMOVED: Class Faker\\Extension\\Container has been deleted#' diff --git a/src/Container/Container.php b/src/Container/Container.php index 2b68607af4..df483534a9 100644 --- a/src/Container/Container.php +++ b/src/Container/Container.php @@ -19,7 +19,7 @@ final class Container implements ContainerInterface private array $definitions; /** - * @var array + * @var array */ private array $services = []; @@ -44,7 +44,7 @@ public function __construct(array $definitions) * @throws ContainerException * @throws NotInContainerException */ - public function get($id): Extension + public function get($id): object { if (!is_string($id)) { throw new \InvalidArgumentException(sprintf( @@ -68,11 +68,10 @@ public function get($id): Extension $service = $this->getService($id, $definition); - if (!$service instanceof Extension) { + if (!is_object($service)) { throw new \RuntimeException(sprintf( - 'Service resolved for identifier "%s" does not implement the %s" interface.', + 'Service resolved for identifier "%s" is not an object.', $id, - Extension::class, )); } diff --git a/test/Container/ContainerTest.php b/test/Container/ContainerTest.php index 4ce392382d..b7c758b954 100644 --- a/test/Container/ContainerTest.php +++ b/test/Container/ContainerTest.php @@ -7,7 +7,6 @@ use Faker\Container\Container; use Faker\Container\ContainerException; use Faker\Core\File; -use Faker\Extension\Extension; use Faker\Test; use PHPUnit\Framework\TestCase; use Psr\Container\ContainerExceptionInterface; @@ -100,9 +99,9 @@ public function testGetThrowsRuntimeExceptionWhenServiceCouldNotBeResolvedFromCl } /** - * @dataProvider provideDefinitionThatDoesNotResolveToExtension + * @dataProvider provideDefinitionThatDoesNotResolveToObject */ - public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsNotAnExtension($definition): void + public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsNotAnObject(\Closure $definition): void { $id = 'file'; @@ -112,18 +111,17 @@ public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsN $this->expectException(\RuntimeException::class); $this->expectExceptionMessage(sprintf( - 'Service resolved for identifier "%s" does not implement the %s" interface.', + 'Service resolved for identifier "%s" is not an object.', $id, - Extension::class, )); $container->get($id); } /** - * @dataProvider provideDefinitionThatDoesNotResolveToExtension + * @dataProvider provideDefinitionThatDoesNotResolveToObject */ - public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsNotAnExtensionOnSecondTry($definition): void + public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsNotAnObjectOnSecondTry(\Closure $definition): void { $id = 'file'; @@ -139,30 +137,34 @@ public function testGetThrowsRuntimeExceptionWhenServiceResolvedForIdentifierIsN $this->expectException(\RuntimeException::class); $this->expectExceptionMessage(sprintf( - 'Service resolved for identifier "%s" does not implement the %s" interface.', + 'Service resolved for identifier "%s" is not an object.', $id, - Extension::class, )); $container->get($id); } /** - * @return \Generator + * @return \Generator */ - public function provideDefinitionThatDoesNotResolveToExtension(): \Generator + public function provideDefinitionThatDoesNotResolveToObject(): \Generator { - $definitions = [ - 'callable' => static function (): \stdClass { - return new \stdClass(); - }, - 'object' => new \stdClass(), - 'string' => \stdClass::class, + $values = [ + 'array' => [], + 'bool-false' => false, + 'bool-true' => true, + 'float' => 3.14, + 'int' => 9000, + 'null' => null, + 'resource' => fopen(__FILE__, 'r'), + 'string' => 'foo-bar-baz', ]; - foreach ($definitions as $key => $definition) { + foreach ($values as $key => $value) { yield $key => [ - $definition, + static function () use ($value) { + return $value; + }, ]; } } @@ -191,7 +193,7 @@ public function testGetFromCallable(): void self::assertInstanceOf(File::class, $object); } - public function testGetFromObject(): void + public function testGetFromObjectThatIsAnExtension(): void { $container = new Container([ 'file' => new File(), @@ -202,6 +204,18 @@ public function testGetFromObject(): void self::assertInstanceOf(File::class, $object); } + public function testGetFromObjectThatIsNotAnExtension(): void + { + $object = new \stdClass(); + + $container = new Container([ + 'file' => $object, + ]); + + self::assertSame($object, $container->get('file')); + + } + public function testGetFromNull(): void { $container = new Container([ From 46d55a7caf42162779c54dc8727992e5ac7bba9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 22 Sep 2023 11:03:38 +0200 Subject: [PATCH 203/229] Fix: Explicitly reference configuration for friendsofphp/php-cs-fixer (#781) --- .github/workflows/coding-standards.yaml | 2 +- Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coding-standards.yaml b/.github/workflows/coding-standards.yaml index 2c256a9a4a..0d2dceecc6 100644 --- a/.github/workflows/coding-standards.yaml +++ b/.github/workflows/coding-standards.yaml @@ -58,7 +58,7 @@ jobs: - name: "Run php-cs-fixer" run: | - vendor/bin/php-cs-fixer fix --ansi --diff --dry-run --verbose + vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.dist.php --diff --dry-run --verbose - name: "Run php-cs-fixer for test code" run: | diff --git a/Makefile b/Makefile index d53588eaf0..750e65bc1f 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ help: .PHONY: cs cs: vendor ## Fixes coding standard issues with php-cs-fixer - vendor/bin/php-cs-fixer fix --diff --verbose + vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --diff --verbose vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.test.php --diff --verbose .PHONY: coverage From d852dd1b580a0ce9d0e7da51f89af32e86cdf616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 22 Sep 2023 11:30:04 +0200 Subject: [PATCH 204/229] Fix: Typo (#782) --- src/Container/Container.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Container/Container.php b/src/Container/Container.php index df483534a9..77876446fa 100644 --- a/src/Container/Container.php +++ b/src/Container/Container.php @@ -59,7 +59,7 @@ public function get($id): object if (!$this->has($id)) { throw new NotInContainerException(sprintf( - 'There is not service with id "%s" in the container.', + 'There is no service with id "%s" in the container.', $id, )); } From d56235bd53baf37db1cbe29692f9b9fc9b031c7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 24 Sep 2023 09:43:10 +0200 Subject: [PATCH 205/229] Fix: Badge (#783) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2bc7790073..8466fe0c35 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # Faker [![Packagist Downloads](https://img.shields.io/packagist/dm/FakerPHP/Faker)](https://packagist.org/packages/fakerphp/faker) -[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/FakerPHP/Faker/Tests/main)](https://github.com/FakerPHP/Faker/actions) +[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/FakerPHP/Faker/tests.yaml?branch=2.0)](https://github.com/FakerPHP/Faker/actions) [![Type Coverage](https://shepherd.dev/github/FakerPHP/Faker/coverage.svg)](https://shepherd.dev/github/FakerPHP/Faker) [![Code Coverage](https://codecov.io/gh/FakerPHP/Faker/branch/main/graph/badge.svg)](https://codecov.io/gh/FakerPHP/Faker) From 16037e0663f1b8c0435f7a5f6c4cf68c0592c309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 25 Sep 2023 10:43:14 +0200 Subject: [PATCH 206/229] Fix: Remove scripts (#778) --- test/documentor.php | 17 ----------------- test/test.php | 39 --------------------------------------- 2 files changed, 56 deletions(-) delete mode 100644 test/documentor.php delete mode 100644 test/test.php diff --git a/test/documentor.php b/test/documentor.php deleted file mode 100644 index f026b7773e..0000000000 --- a/test/documentor.php +++ /dev/null @@ -1,17 +0,0 @@ -seed(1); -$documentor = new Faker\Documentor($generator); -?> -getFormatters() as $provider => $formatters): ?> - -### `` - - $example): ?> - // - - -seed(5); - -echo ''; -?> - - - - -boolean(25)): ?> - - -
- streetAddress; ?> - city; ?> - postcode; ?> - state; ?> -
- -boolean(33)): ?> - bs; ?> - -boolean(33)): ?> - - - -boolean(15)): ?> -
-text(400); ?> -]]> -
- -
- -
From 526967508a876540ab50539876f0f9aa906f6b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Tue, 26 Sep 2023 14:00:42 +0200 Subject: [PATCH 207/229] Fix: Do not use `static` in callables (#785) (#786) * Fix: Add tests * Fix: Do not use static in callables --- CHANGELOG.md | 1 + src/Provider/pt_BR/PhoneNumber.php | 6 +-- test/Provider/pt_BR/PhoneNumberTest.php | 51 +++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 test/Provider/pt_BR/PhoneNumberTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 98fc9f9695..102ca35f71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Removed legacy autoloader (#762) - Removed functionality for populating ORM entities and models (#764) - Added a PHP version support policy (#752) +- Stopped using `static` in callables in `Provider\pt_BR\PhoneNumber` (#785) ## [2023-06-12, v1.23.0](https://github.com/FakerPHP/Faker/compare/v1.22.0..v1.23.0) diff --git a/src/Provider/pt_BR/PhoneNumber.php b/src/Provider/pt_BR/PhoneNumber.php index 6717def5a5..6601658306 100644 --- a/src/Provider/pt_BR/PhoneNumber.php +++ b/src/Provider/pt_BR/PhoneNumber.php @@ -83,7 +83,7 @@ public static function phone($formatted = true) ['landline', null], ]); - return call_user_func("static::{$options[0]}", $formatted, $options[1]); + return call_user_func([static::class, $options[0]], $formatted, $options[1]); } /** @@ -135,7 +135,7 @@ public function phoneNumber() { $method = static::randomElement(['cellphoneNumber', 'landlineNumber']); - return call_user_func("static::$method", true); + return call_user_func([static::class, $method], true); } /** @@ -145,6 +145,6 @@ public static function phoneNumberCleared() { $method = static::randomElement(['cellphoneNumber', 'landlineNumber']); - return call_user_func("static::$method", false); + return call_user_func([static::class, $method], false); } } diff --git a/test/Provider/pt_BR/PhoneNumberTest.php b/test/Provider/pt_BR/PhoneNumberTest.php new file mode 100644 index 0000000000..e9118049a2 --- /dev/null +++ b/test/Provider/pt_BR/PhoneNumberTest.php @@ -0,0 +1,51 @@ +faker->phone(false); + + self::assertIsString($phoneNumber); + self::assertNotEmpty($phoneNumber); + } + + public function testPhoneReturnsPhoneNumberWhenArgumentIsTrue(): void + { + $phoneNumber = $this->faker->phone(true); + + self::assertIsString($phoneNumber); + self::assertNotEmpty($phoneNumber); + } + + public function testPhoneNumberReturnsPhoneNumber(): void + { + $phoneNumber = $this->faker->phoneNumber(); + + self::assertIsString($phoneNumber); + self::assertNotEmpty($phoneNumber); + } + + public function testPhoneNumberClearedReturnsPhoneNumber(): void + { + $phoneNumber = $this->faker->phoneNumberCleared(); + + self::assertIsString($phoneNumber); + self::assertNotEmpty($phoneNumber); + } + + protected function getProviders(): iterable + { + yield new Provider\pt_BR\PhoneNumber($this->faker); + } +} From 82f1468cb6112a4c6f1776da482dca3125643332 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Sep 2023 13:54:37 +0200 Subject: [PATCH 208/229] composer(deps): bump rector/rector in /vendor-bin/rector (#789) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.18.3 to 0.18.4. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.18.3...0.18.4) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 61c2a0ec4b..bc0dc5e6b6 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.18.3" + "rector/rector": "^0.18.4" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 17a3723052..71b3161484 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "b0698e9822f0374d79d37bd009ca25d7", + "content-hash": "728e6525a33e9c65363cd69b64f3e892", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.34", + "version": "1.10.35", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901" + "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7f806b6f1403e6914c778140e2ba07c293cb4901", - "reference": "7f806b6f1403e6914c778140e2ba07c293cb4901", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3", + "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3", "shasum": "" }, "require": { @@ -66,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-09-13T09:49:47+00:00" + "time": "2023-09-19T15:27:56+00:00" }, { "name": "rector/rector", - "version": "0.18.3", + "version": "0.18.4", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "ba7988e3e028e68e07191d75b0d5473ac320c5e7" + "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/ba7988e3e028e68e07191d75b0d5473ac320c5e7", - "reference": "ba7988e3e028e68e07191d75b0d5473ac320c5e7", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/d99a91176b7eb7f2b6d509a6486b3661c6dfd370", + "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370", "shasum": "" }, "require": { @@ -114,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.3" + "source": "https://github.com/rectorphp/rector/tree/0.18.4" }, "funding": [ { @@ -122,7 +122,7 @@ "type": "github" } ], - "time": "2023-09-12T20:18:14+00:00" + "time": "2023-09-25T17:07:54+00:00" } ], "packages-dev": [], From 2e92289e48d33df6722f0f6f3fa80188a15ffee8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Sep 2023 13:54:53 +0200 Subject: [PATCH 209/229] composer(deps): bump friendsofphp/php-cs-fixer (#790) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.27.0 to 3.30.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.27.0...v3.30.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index d16d4c30cb..2690ce7bec 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.27.0" + "friendsofphp/php-cs-fixer": "^3.30.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 694dd9705c..69a0928121 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "6e0313d2fb5468ec60eecd216d602fec", + "content-hash": "505d1c3f5d1b20eb8e96e05adc71ff86", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.27.0", + "version": "v3.30.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "e73ccaae1208f017bb7860986eebb3da48bd25d6" + "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/e73ccaae1208f017bb7860986eebb3da48bd25d6", - "reference": "e73ccaae1208f017bb7860986eebb3da48bd25d6", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/95c64693b2f149966a2bc05a7a4981b0343ea52f", + "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f", "shasum": "" }, "require": { @@ -309,7 +309,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.27.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.30.0" }, "funding": [ { @@ -317,7 +317,7 @@ "type": "github" } ], - "time": "2023-09-17T14:37:54+00:00" + "time": "2023-09-26T22:10:43+00:00" }, { "name": "psr/container", From 6239bd1c555df34d7adce4724262e4c3a926d2de Mon Sep 17 00:00:00 2001 From: Danny van der Sluijs Date: Fri, 29 Sep 2023 13:55:55 +0200 Subject: [PATCH 210/229] Correct return type of `Generator::unique()` (#787) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Correct return type of Generator::unique() * Fix: Run 'make baseline' --------- Co-authored-by: Andreas Möller --- phpstan-baseline.neon | 5 ----- psalm.baseline.xml | 2 -- src/Generator.php | 2 +- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 08f087ba4c..d8b1fb9e47 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -25,11 +25,6 @@ parameters: count: 1 path: src/Generator.php - - - message: "#^Method Faker\\\\Generator\\:\\:unique\\(\\) should return Faker\\\\Generator but returns Faker\\\\UniqueGenerator\\.$#" - count: 1 - path: src/Generator.php - - message: "#^Method Faker\\\\Generator\\:\\:valid\\(\\) should return Faker\\\\Generator but returns Faker\\\\ValidGenerator\\.$#" count: 1 diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 1768d99c65..7838a93299 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -2,14 +2,12 @@ - uniqueGenerator]]> new ChanceGenerator($this, $weight, $default) new ValidGenerator($this, $validator, $maxRetries) self self - self diff --git a/src/Generator.php b/src/Generator.php index ee58be35f4..42021c3d32 100644 --- a/src/Generator.php +++ b/src/Generator.php @@ -624,7 +624,7 @@ public function getProviders() * * @throws \OverflowException When no unique value can be found by iterating $maxRetries times * - * @return self A proxy class returning only non-existing values + * @return UniqueGenerator A proxy class returning only non-existing values */ public function unique($reset = false, $maxRetries = 10000) { From 27da0b226f22a215e3ea8242e87d6fa5534f1c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Fri, 29 Sep 2023 23:48:29 +0200 Subject: [PATCH 211/229] Enhancement: Enable `long_to_shorthand_operator` fixer (#791) --- .php-cs-fixer.rules.php | 1 + phpstan-baseline.neon | 2 +- src/Calculator/Isbn.php | 2 +- src/Generator.php | 2 +- src/Provider/ar_EG/Person.php | 4 ++-- src/Provider/en_GB/Company.php | 4 ++-- src/Provider/ms_MY/Person.php | 4 ++-- src/Provider/pl_PL/Payment.php | 2 +- src/Provider/ro_RO/Person.php | 2 +- 9 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.php-cs-fixer.rules.php b/.php-cs-fixer.rules.php index c533b3896f..50d0b58864 100644 --- a/.php-cs-fixer.rules.php +++ b/.php-cs-fixer.rules.php @@ -67,6 +67,7 @@ 'list_syntax' => [ 'syntax' => 'short', ], + 'long_to_shorthand_operator' => true, 'lowercase_cast' => true, 'lowercase_static_reference' => true, 'magic_constant_casing' => true, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index d8b1fb9e47..363959fe61 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -6,7 +6,7 @@ parameters: path: src/Calculator/Iban.php - - message: "#^Binary operation \"\\*\" between int and string results in an error\\.$#" + message: "#^Binary operation \"\\*\\=\" between string and int results in an error\\.$#" count: 1 path: src/Calculator/Isbn.php diff --git a/src/Calculator/Isbn.php b/src/Calculator/Isbn.php index df2f59d721..525281b139 100644 --- a/src/Calculator/Isbn.php +++ b/src/Calculator/Isbn.php @@ -35,7 +35,7 @@ public static function checksum(string $input): string array_walk( $digits, static function (&$digit, $position): void { - $digit = (10 - $position) * $digit; + $digit *= (10 - $position) ; }, ); $result = (11 - array_sum($digits) % 11) % 11; diff --git a/src/Generator.php b/src/Generator.php index 42021c3d32..ee01a41e94 100644 --- a/src/Generator.php +++ b/src/Generator.php @@ -646,7 +646,7 @@ public function optional(float $weight = 0.5, $default = null) { if ($weight > 1) { trigger_deprecation('fakerphp/faker', '1.16', 'First argument ($weight) to method "optional()" must be between 0 and 1. You passed %f, we assume you meant %f.', $weight, $weight / 100); - $weight = $weight / 100; + $weight /= 100; } return new ChanceGenerator($this, $weight, $default); diff --git a/src/Provider/ar_EG/Person.php b/src/Provider/ar_EG/Person.php index f77113a275..a07e1b36c6 100644 --- a/src/Provider/ar_EG/Person.php +++ b/src/Provider/ar_EG/Person.php @@ -96,9 +96,9 @@ public static function nationalIdNumber($gender = null) $birthRegistrationSequence = Extension\Helper::randomNumberBetween(1, 500); if ($gender === static::GENDER_MALE) { - $birthRegistrationSequence = $birthRegistrationSequence | 1; // Convert to the nearest odd number + $birthRegistrationSequence |= 1; // Convert to the nearest odd number } elseif ($gender === static::GENDER_FEMALE) { - $birthRegistrationSequence = $birthRegistrationSequence & ~1; // Convert to the nearest even number + $birthRegistrationSequence &= ~1; // Convert to the nearest even number } $birthRegistrationSequence = str_pad((string) $birthRegistrationSequence, 4, '0', STR_PAD_LEFT); diff --git a/src/Provider/en_GB/Company.php b/src/Provider/en_GB/Company.php index 17fe07da0b..969f9bcc5f 100644 --- a/src/Provider/en_GB/Company.php +++ b/src/Provider/en_GB/Company.php @@ -117,13 +117,13 @@ public static function calculateModulus97(string $input, bool $use9755 = true): } if ($use9755) { - $sum = $sum + 55; + $sum += 55; } while ($sum > 0) { $sum -= 97; } - $sum = $sum * -1; + $sum *= -1; return str_pad((string) $sum, 2, '0', STR_PAD_LEFT); } diff --git a/src/Provider/ms_MY/Person.php b/src/Provider/ms_MY/Person.php index d685715d8f..2494639c8b 100644 --- a/src/Provider/ms_MY/Person.php +++ b/src/Provider/ms_MY/Person.php @@ -795,9 +795,9 @@ public static function myKadNumber($gender = null, $hyphen = false) //Credit: https://gist.github.com/mauris/3629548 if ($gender === static::GENDER_MALE) { - $g = $g | 1; + $g |= 1; } elseif ($gender === static::GENDER_FEMALE) { - $g = $g & ~1; + $g &= ~1; } // formatting with hyphen diff --git a/src/Provider/pl_PL/Payment.php b/src/Provider/pl_PL/Payment.php index f2a6030746..84246e5eb7 100644 --- a/src/Provider/pl_PL/Payment.php +++ b/src/Provider/pl_PL/Payment.php @@ -113,7 +113,7 @@ protected static function addBankCodeChecksum($iban, $countryCode = 'PL') for ($i = 0; $i < 7; ++$i) { $checksum += $weights[$i] * (int) $iban[$i]; } - $checksum = $checksum % 10; + $checksum %= 10; return substr($iban, 0, 7) . $checksum . substr($iban, 8); } diff --git a/src/Provider/ro_RO/Person.php b/src/Provider/ro_RO/Person.php index 9077004135..233be37c45 100644 --- a/src/Provider/ro_RO/Person.php +++ b/src/Provider/ro_RO/Person.php @@ -244,7 +244,7 @@ protected function getChecksumDigit($value) foreach (range(0, 11) as $digit) { $checksum += (int) substr($value, $digit, 1) * (int) substr($checkNumber, $digit, 1); } - $checksum = $checksum % 11; + $checksum %= 11; return $checksum == 10 ? 1 : $checksum; } From 9636de7c183163efbc6c18a013a3d1777642d842 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Sep 2023 09:03:24 +0200 Subject: [PATCH 212/229] composer(deps): bump friendsofphp/php-cs-fixer from 3.30.0 to 3.34.0 in /vendor-bin/php-cs-fixer (#792) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump friendsofphp/php-cs-fixer Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.30.0 to 3.34.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.30.0...v3.34.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Configure newly added instead of deprecated fixers --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- .php-cs-fixer.rules.php | 8 ++++---- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 29 +++++++++++++++------------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/.php-cs-fixer.rules.php b/.php-cs-fixer.rules.php index 50d0b58864..7d97f00de3 100644 --- a/.php-cs-fixer.rules.php +++ b/.php-cs-fixer.rules.php @@ -34,6 +34,7 @@ 'max_line_breaks' => 2, 'min_line_breaks' => 2, ], + 'braces_position' => true, 'cast_spaces' => true, 'class_attributes_separation' => [ 'elements' => [ @@ -41,13 +42,12 @@ ], ], 'combine_nested_dirname' => true, - 'compact_nullable_typehint' => true, + 'compact_nullable_type_declaration' => true, 'concat_space' => [ 'spacing' => 'one', ], 'control_structure_braces' => true, 'control_structure_continuation_position' => true, - 'curly_braces_position' => true, 'declare_equal_normalize' => true, 'declare_parentheses' => true, 'general_phpdoc_annotation_remove' => [ @@ -74,7 +74,7 @@ 'magic_method_casing' => true, 'modernize_types_casting' => true, 'multiline_comment_opening_closing' => true, - 'new_with_braces' => true, + 'new_with_parentheses' => true, 'no_alias_functions' => true, 'no_blank_lines_after_class_opening' => true, 'no_blank_lines_after_phpdoc' => true, @@ -92,8 +92,8 @@ 'array', ], ], + 'no_unneeded_braces' => true, 'no_unneeded_control_parentheses' => true, - 'no_unneeded_curly_braces' => true, 'no_unneeded_final_method' => true, 'no_unreachable_default_argument_value' => true, 'no_unset_cast' => true, diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 2690ce7bec..7363a494f6 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.30.0" + "friendsofphp/php-cs-fixer": "^3.34.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 69a0928121..fdd8eb84b0 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "505d1c3f5d1b20eb8e96e05adc71ff86", + "content-hash": "7101e30178264663a3b44dd59e5b6d6f", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.30.0", + "version": "v3.34.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f" + "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/95c64693b2f149966a2bc05a7a4981b0343ea52f", - "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7c7a4ad2ed8fe50df3e25528218b13d383608f23", + "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23", "shasum": "" }, "require": { @@ -256,6 +256,9 @@ "symfony/process": "^5.4 || ^6.0", "symfony/stopwatch": "^5.4 || ^6.0" }, + "conflict": { + "stevebauman/unfinalize": "*" + }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", @@ -309,7 +312,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.30.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.34.0" }, "funding": [ { @@ -317,7 +320,7 @@ "type": "github" } ], - "time": "2023-09-26T22:10:43+00:00" + "time": "2023-09-29T15:34:26+00:00" }, { "name": "psr/container", @@ -1839,16 +1842,16 @@ }, { "name": "symfony/string", - "version": "v5.4.26", + "version": "v5.4.29", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "1181fe9270e373537475e826873b5867b863883c" + "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", - "reference": "1181fe9270e373537475e826873b5867b863883c", + "url": "https://api.github.com/repos/symfony/string/zipball/e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", + "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", "shasum": "" }, "require": { @@ -1905,7 +1908,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.26" + "source": "https://github.com/symfony/string/tree/v5.4.29" }, "funding": [ { @@ -1921,7 +1924,7 @@ "type": "tidelift" } ], - "time": "2023-06-28T12:46:07+00:00" + "time": "2023-09-13T11:47:41+00:00" } ], "packages-dev": [], From 6f601fe839c001f26f2856508bf817f8e9256d76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 30 Sep 2023 09:06:18 +0200 Subject: [PATCH 213/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#793) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.35 to 1.10.36. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.35...1.10.36) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index f224ad1efe..0fb8bca6de 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.35", + "phpstan/phpstan": "^1.10.36", "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 3b72224f15..f60d0822ec 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "84f6f43a9c2d255e22eaf0e0130eeabc", + "content-hash": "59b7ac78e08928e4fefc631c68e7e731", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.35", + "version": "1.10.36", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3" + "reference": "ffa3089511121a672e62969404e4fddc753f9b15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3", - "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ffa3089511121a672e62969404e4fddc753f9b15", + "reference": "ffa3089511121a672e62969404e4fddc753f9b15", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-09-19T15:27:56+00:00" + "time": "2023-09-29T14:07:45+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 62eefcdece3c1463820fb8503fe38f7c55049cb2 Mon Sep 17 00:00:00 2001 From: Daniel Chodusov Date: Thu, 5 Oct 2023 08:21:47 +0200 Subject: [PATCH 214/229] Fixed incorrect female name among male names (#794) --- src/Provider/cs_CZ/Person.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Provider/cs_CZ/Person.php b/src/Provider/cs_CZ/Person.php index e962fb6d9e..f0bca49e0b 100644 --- a/src/Provider/cs_CZ/Person.php +++ b/src/Provider/cs_CZ/Person.php @@ -28,7 +28,7 @@ class Person extends \Faker\Provider\Person protected static $firstNameMale = [ 'Adam', 'Aleš', 'Alois', 'Antonín', 'Bohumil', 'Bohuslav', 'Dagmar', 'Dalibor', 'Daniel', 'David', 'Dominik', 'Dušan', 'Eduard', 'Emil', - 'Filip', 'František', 'Ilona', 'Ivan', 'Ivo', 'Jakub', 'Jan', 'Ján', + 'Filip', 'František', 'Igor', 'Ivan', 'Ivo', 'Jakub', 'Jan', 'Ján', 'Jaromír', 'Jaroslav', 'Jindřich', 'Jiří', 'Josef', 'Jozef', 'Kamil', 'Karel', 'Kryštof', 'Ladislav', 'Libor', 'Lubomír', 'Luboš', 'Luděk', 'Ludvík', 'Lukáš', 'Marcel', 'Marek', 'Martin', 'Matěj', 'Matyáš', From b12d23b85714f256ad1dcd7413770f7aee137f30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 19:59:29 +0200 Subject: [PATCH 215/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#798) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.36 to 1.10.38. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.36...1.10.38) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 0fb8bca6de..0401a881c5 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.36", + "phpstan/phpstan": "^1.10.38", "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index f60d0822ec..28c805f18d 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "59b7ac78e08928e4fefc631c68e7e731", + "content-hash": "c7b9308f22a66f9593ebb17b0668abcb", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.36", + "version": "1.10.38", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "ffa3089511121a672e62969404e4fddc753f9b15" + "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ffa3089511121a672e62969404e4fddc753f9b15", - "reference": "ffa3089511121a672e62969404e4fddc753f9b15", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5302bb402c57f00fb3c2c015bac86e0827e4b691", + "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T14:07:45+00:00" + "time": "2023-10-06T14:19:14+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 6c13f03b38cf988590773c3301b93b6bced2c44d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 20:00:42 +0200 Subject: [PATCH 216/229] composer(deps): bump friendsofphp/php-cs-fixer (#799) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.34.0 to 3.35.1. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.34.0...v3.35.1) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 31 +++++++++++---------------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 7363a494f6..e9af22ea0d 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.34.0" + "friendsofphp/php-cs-fixer": "^3.35.1" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index fdd8eb84b0..28f51e5b28 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "7101e30178264663a3b44dd59e5b6d6f", + "content-hash": "87065fefec540c7d65e69a9109e420cc", "packages": [ { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -59,7 +59,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -75,7 +75,7 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.34.0", + "version": "v3.35.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23" + "reference": "ec1ccc264994b6764882669973ca435cf05bab08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7c7a4ad2ed8fe50df3e25528218b13d383608f23", - "reference": "7c7a4ad2ed8fe50df3e25528218b13d383608f23", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/ec1ccc264994b6764882669973ca435cf05bab08", + "reference": "ec1ccc264994b6764882669973ca435cf05bab08", "shasum": "" }, "require": { @@ -256,9 +256,6 @@ "symfony/process": "^5.4 || ^6.0", "symfony/stopwatch": "^5.4 || ^6.0" }, - "conflict": { - "stevebauman/unfinalize": "*" - }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", @@ -271,8 +268,6 @@ "phpspec/prophecy": "^1.16", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", "symfony/phpunit-bridge": "^6.2.3", "symfony/yaml": "^5.4 || ^6.0" }, @@ -312,7 +307,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.34.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.35.1" }, "funding": [ { @@ -320,7 +315,7 @@ "type": "github" } ], - "time": "2023-09-29T15:34:26+00:00" + "time": "2023-10-12T13:47:26+00:00" }, { "name": "psr/container", From f02107fa23693cbe571e1f6358e58be68bb83167 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Oct 2023 20:01:36 +0200 Subject: [PATCH 217/229] composer(deps): bump rector/rector in /vendor-bin/rector (#800) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.18.4 to 0.18.5. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.18.4...0.18.5) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index bc0dc5e6b6..ebff0461e6 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.18.4" + "rector/rector": "^0.18.5" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 71b3161484..06a75ad630 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "728e6525a33e9c65363cd69b64f3e892", + "content-hash": "3386433b3294575dc4b71dffb7695073", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.35", + "version": "1.10.38", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3" + "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3", - "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5302bb402c57f00fb3c2c015bac86e0827e4b691", + "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691", "shasum": "" }, "require": { @@ -66,25 +66,25 @@ "type": "tidelift" } ], - "time": "2023-09-19T15:27:56+00:00" + "time": "2023-10-06T14:19:14+00:00" }, { "name": "rector/rector", - "version": "0.18.4", + "version": "0.18.5", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370" + "reference": "2a3b82f317e431fc142d21f3303891a4e64c96eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/d99a91176b7eb7f2b6d509a6486b3661c6dfd370", - "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/2a3b82f317e431fc142d21f3303891a4e64c96eb", + "reference": "2a3b82f317e431fc142d21f3303891a4e64c96eb", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.31" + "phpstan/phpstan": "^1.10.35" }, "conflict": { "rector/rector-doctrine": "*", @@ -114,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.4" + "source": "https://github.com/rectorphp/rector/tree/0.18.5" }, "funding": [ { @@ -122,7 +122,7 @@ "type": "github" } ], - "time": "2023-09-25T17:07:54+00:00" + "time": "2023-10-05T11:25:40+00:00" } ], "packages-dev": [], From 809545346920a1d38148be3443dafed4a5bf441b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 21:22:50 +0100 Subject: [PATCH 218/229] composer(deps): bump rector/rector in /vendor-bin/rector (#804) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.18.5 to 0.18.6. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.18.5...0.18.6) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index ebff0461e6..67d7c43843 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.18.5" + "rector/rector": "^0.18.6" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 06a75ad630..4e2b2b8e9f 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "3386433b3294575dc4b71dffb7695073", + "content-hash": "fefecdfa9d1924aa61563126992efff2", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.38", + "version": "1.10.40", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691" + "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5302bb402c57f00fb3c2c015bac86e0827e4b691", - "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93c84b5bf7669920d823631e39904d69b9c7dc5d", + "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d", "shasum": "" }, "require": { @@ -66,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-10-06T14:19:14+00:00" + "time": "2023-10-30T14:48:31+00:00" }, { "name": "rector/rector", - "version": "0.18.5", + "version": "0.18.6", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "2a3b82f317e431fc142d21f3303891a4e64c96eb" + "reference": "02041b220704b9cbe075f0310d0954b2fda5c40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/2a3b82f317e431fc142d21f3303891a4e64c96eb", - "reference": "2a3b82f317e431fc142d21f3303891a4e64c96eb", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/02041b220704b9cbe075f0310d0954b2fda5c40c", + "reference": "02041b220704b9cbe075f0310d0954b2fda5c40c", "shasum": "" }, "require": { @@ -114,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.5" + "source": "https://github.com/rectorphp/rector/tree/0.18.6" }, "funding": [ { @@ -122,7 +122,7 @@ "type": "github" } ], - "time": "2023-10-05T11:25:40+00:00" + "time": "2023-10-24T15:00:59+00:00" } ], "packages-dev": [], @@ -138,5 +138,5 @@ "platform-overrides": { "php": "8.1.12" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From dba622f5677c75c8a3990fb3db45690f21d79b1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 21:23:33 +0100 Subject: [PATCH 219/229] composer(deps): bump friendsofphp/php-cs-fixer (#803) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.35.1 to 3.37.1. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.35.1...v3.37.1) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index e9af22ea0d..9a62ffa11f 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.35.1" + "friendsofphp/php-cs-fixer": "^3.37.1" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 28f51e5b28..e2682ec393 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "87065fefec540c7d65e69a9109e420cc", + "content-hash": "782e75df3705b51daa813eb64042703c", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.35.1", + "version": "v3.37.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "ec1ccc264994b6764882669973ca435cf05bab08" + "reference": "c3fe76976081ab871aa654e872da588077e19679" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/ec1ccc264994b6764882669973ca435cf05bab08", - "reference": "ec1ccc264994b6764882669973ca435cf05bab08", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c3fe76976081ab871aa654e872da588077e19679", + "reference": "c3fe76976081ab871aa654e872da588077e19679", "shasum": "" }, "require": { @@ -307,7 +307,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.35.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.37.1" }, "funding": [ { @@ -315,7 +315,7 @@ "type": "github" } ], - "time": "2023-10-12T13:47:26+00:00" + "time": "2023-10-29T20:51:23+00:00" }, { "name": "psr/container", @@ -1935,5 +1935,5 @@ "platform-overrides": { "php": "7.4.32" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From 5d766d303cb10d1e40244e4f73967078dccf5744 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 21:24:05 +0100 Subject: [PATCH 220/229] composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan (#805) Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.38 to 1.10.40. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.38...1.10.40) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index 0401a881c5..f6155e28c7 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.38", + "phpstan/phpstan": "^1.10.40", "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index 28c805f18d..a54daae3ea 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "c7b9308f22a66f9593ebb17b0668abcb", + "content-hash": "834c92e6a869b7967a0384689442169a", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.38", + "version": "1.10.40", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691" + "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5302bb402c57f00fb3c2c015bac86e0827e4b691", - "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93c84b5bf7669920d823631e39904d69b9c7dc5d", + "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T14:19:14+00:00" + "time": "2023-10-30T14:48:31+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -174,5 +174,5 @@ "platform-overrides": { "php": "7.4.32" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From c9c4c26d9fb976b4b8785215ab3db98b9c955b28 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 12:14:19 +0100 Subject: [PATCH 221/229] composer(deps): bump friendsofphp/php-cs-fixer (#827) Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.37.1 to 3.40.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.37.1...v3.40.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 76 +++++++++++++-------------- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 9a62ffa11f..8dc1f4cc32 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.37.1" + "friendsofphp/php-cs-fixer": "^3.40.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index e2682ec393..7e48242fee 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "782e75df3705b51daa813eb64042703c", + "content-hash": "d5f62f2ae704dfd2cf9039d250499d39", "packages": [ { "name": "composer/pcre", @@ -226,50 +226,50 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.37.1", + "version": "v3.40.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "c3fe76976081ab871aa654e872da588077e19679" + "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c3fe76976081ab871aa654e872da588077e19679", - "reference": "c3fe76976081ab871aa654e872da588077e19679", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/27d2b3265b5d550ec411b4319967ae7cfddfb2e0", + "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpspec/prophecy": "^1.17", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -307,7 +307,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.37.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.0" }, "funding": [ { @@ -315,7 +315,7 @@ "type": "github" } ], - "time": "2023-10-29T20:51:23+00:00" + "time": "2023-11-26T09:25:53+00:00" }, { "name": "psr/container", @@ -533,16 +533,16 @@ }, { "name": "symfony/console", - "version": "v5.4.28", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827" + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827", + "url": "https://api.github.com/repos/symfony/console/zipball/c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", "shasum": "" }, "require": { @@ -612,7 +612,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.28" + "source": "https://github.com/symfony/console/tree/v5.4.32" }, "funding": [ { @@ -628,7 +628,7 @@ "type": "tidelift" } ], - "time": "2023-08-07T06:12:30+00:00" + "time": "2023-11-18T18:23:04+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1837,16 +1837,16 @@ }, { "name": "symfony/string", - "version": "v5.4.29", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d" + "reference": "91bf4453d65d8231688a04376c3a40efe0770f04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", - "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", + "url": "https://api.github.com/repos/symfony/string/zipball/91bf4453d65d8231688a04376c3a40efe0770f04", + "reference": "91bf4453d65d8231688a04376c3a40efe0770f04", "shasum": "" }, "require": { @@ -1903,7 +1903,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.29" + "source": "https://github.com/symfony/string/tree/v5.4.32" }, "funding": [ { @@ -1919,7 +1919,7 @@ "type": "tidelift" } ], - "time": "2023-09-13T11:47:41+00:00" + "time": "2023-11-26T13:43:46+00:00" } ], "packages-dev": [], From 5b613301d31af57ae5c6fbec2373c499b960154d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 12:14:56 +0100 Subject: [PATCH 222/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#824) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.15.0 to 5.16.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.15.0...5.16.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 85 +++++++++++++++++----------------- 2 files changed, 44 insertions(+), 43 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index 5ef8200c93..cfc2a419f4 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.15.0" + "vimeo/psalm": "^5.16.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index b99f2ec160..dce44f7a33 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "c92d54202d70caf9276f2ad5d3097955", + "content-hash": "734ce1273fe9512f0d7dac1414a15921", "packages": [ { "name": "amphp/amp", @@ -174,16 +174,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -225,7 +225,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -241,7 +241,7 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", @@ -429,16 +429,16 @@ }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { @@ -470,9 +470,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -913,16 +913,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.1", + "version": "1.24.4", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", "shasum": "" }, "require": { @@ -954,9 +954,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" }, - "time": "2023-08-03T16:32:59+00:00" + "time": "2023-11-26T18:29:22+00:00" }, { "name": "psr/container", @@ -1188,16 +1188,16 @@ }, { "name": "symfony/console", - "version": "v5.4.28", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827" + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827", + "url": "https://api.github.com/repos/symfony/console/zipball/c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", "shasum": "" }, "require": { @@ -1267,7 +1267,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.28" + "source": "https://github.com/symfony/console/tree/v5.4.32" }, "funding": [ { @@ -1283,7 +1283,7 @@ "type": "tidelift" } ], - "time": "2023-08-07T06:12:30+00:00" + "time": "2023-11-18T18:23:04+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1993,16 +1993,16 @@ }, { "name": "symfony/string", - "version": "v5.4.26", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "1181fe9270e373537475e826873b5867b863883c" + "reference": "91bf4453d65d8231688a04376c3a40efe0770f04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", - "reference": "1181fe9270e373537475e826873b5867b863883c", + "url": "https://api.github.com/repos/symfony/string/zipball/91bf4453d65d8231688a04376c3a40efe0770f04", + "reference": "91bf4453d65d8231688a04376c3a40efe0770f04", "shasum": "" }, "require": { @@ -2059,7 +2059,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.26" + "source": "https://github.com/symfony/string/tree/v5.4.32" }, "funding": [ { @@ -2075,20 +2075,20 @@ "type": "tidelift" } ], - "time": "2023-06-28T12:46:07+00:00" + "time": "2023-11-26T13:43:46+00:00" }, { "name": "vimeo/psalm", - "version": "5.15.0", + "version": "5.16.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" + "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", - "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/2897ba636551a8cb61601cc26f6ccfbba6c36591", + "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591", "shasum": "" }, "require": { @@ -2113,8 +2113,8 @@ "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "sebastian/diff": "^4.0 || ^5.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", - "symfony/console": "^4.1.6 || ^5.0 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0" + "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" }, "conflict": { "nikic/php-parser": "4.17.0" @@ -2136,7 +2136,7 @@ "psalm/plugin-phpunit": "^0.18", "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.6", - "symfony/process": "^4.4 || ^5.0 || ^6.0" + "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { "ext-curl": "In order to send data to shepherd", @@ -2149,7 +2149,7 @@ "psalm-refactor", "psalter" ], - "type": "library", + "type": "project", "extra": { "branch-alias": { "dev-master": "5.x-dev", @@ -2181,10 +2181,11 @@ "static analysis" ], "support": { + "docs": "https://psalm.dev/docs", "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.15.0" + "source": "https://github.com/vimeo/psalm" }, - "time": "2023-08-20T23:07:30+00:00" + "time": "2023-11-22T20:38:47+00:00" }, { "name": "webmozart/assert", @@ -2258,5 +2259,5 @@ "platform-overrides": { "php": "7.4.32" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From 11d6f6b1d9f65bee3329cc9d4dafbab8dcd72386 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 12:15:36 +0100 Subject: [PATCH 223/229] composer(deps): bump rector/rector in /vendor-bin/rector (#825) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.18.6 to 0.18.11. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.18.6...0.18.11) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 67d7c43843..105c0bce06 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.18.6" + "rector/rector": "^0.18.11" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index 4e2b2b8e9f..bdc6008b82 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "fefecdfa9d1924aa61563126992efff2", + "content-hash": "9369fa980a6f6abd8265f12e0a78d00d", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.40", + "version": "1.10.47", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d" + "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93c84b5bf7669920d823631e39904d69b9c7dc5d", - "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", + "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", "shasum": "" }, "require": { @@ -66,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-10-30T14:48:31+00:00" + "time": "2023-12-01T15:19:17+00:00" }, { "name": "rector/rector", - "version": "0.18.6", + "version": "0.18.11", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "02041b220704b9cbe075f0310d0954b2fda5c40c" + "reference": "9621124c860066f56a4ab841349cb7c284edfaee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/02041b220704b9cbe075f0310d0954b2fda5c40c", - "reference": "02041b220704b9cbe075f0310d0954b2fda5c40c", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/9621124c860066f56a4ab841349cb7c284edfaee", + "reference": "9621124c860066f56a4ab841349cb7c284edfaee", "shasum": "" }, "require": { @@ -114,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.6" + "source": "https://github.com/rectorphp/rector/tree/0.18.11" }, "funding": [ { @@ -122,7 +122,7 @@ "type": "github" } ], - "time": "2023-10-24T15:00:59+00:00" + "time": "2023-11-27T13:27:43+00:00" } ], "packages-dev": [], From e31eb368d24254a79ef905c58f40eaede8f1dd84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 10 Dec 2023 11:54:24 +0100 Subject: [PATCH 224/229] Fix: Do not fail fast (#829) --- .github/workflows/tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 64807579bb..c60da6509e 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -14,6 +14,7 @@ jobs: name: "PHPUnit (${{ matrix.php-version }})" strategy: + fail-fast: false matrix: experimental: - false From 3498cad6bba052c881b40e4af6e6aded3784b7b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 10 Dec 2023 11:55:00 +0100 Subject: [PATCH 225/229] Fix: Wrapping (#830) --- .github/workflows/static-analysis.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/static-analysis.yaml b/.github/workflows/static-analysis.yaml index 27b676cefd..a698d48840 100644 --- a/.github/workflows/static-analysis.yaml +++ b/.github/workflows/static-analysis.yaml @@ -14,7 +14,8 @@ jobs: strategy: matrix: - php-version: ["7.4"] + php-version: + - "7.4" steps: - name: "Checkout code" @@ -55,7 +56,8 @@ jobs: strategy: matrix: - php-version: ["7.4"] + php-version: + - "7.4" steps: - name: "Checkout" From e8715e964a97e15bf6780494b43b2c59610b8f3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:28:46 +0100 Subject: [PATCH 226/229] composer(deps): bump rector/rector in /vendor-bin/rector (#840) Bumps [rector/rector](https://github.com/rectorphp/rector) from 0.18.11 to 0.18.13. - [Release notes](https://github.com/rectorphp/rector/releases) - [Commits](https://github.com/rectorphp/rector/compare/0.18.11...0.18.13) --- updated-dependencies: - dependency-name: rector/rector dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/rector/composer.json | 2 +- vendor-bin/rector/composer.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/vendor-bin/rector/composer.json b/vendor-bin/rector/composer.json index 105c0bce06..351de1416d 100644 --- a/vendor-bin/rector/composer.json +++ b/vendor-bin/rector/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^8.1", - "rector/rector": "^0.18.11" + "rector/rector": "^0.18.13" }, "config": { "platform": { diff --git a/vendor-bin/rector/composer.lock b/vendor-bin/rector/composer.lock index bdc6008b82..9b5b99cdea 100644 --- a/vendor-bin/rector/composer.lock +++ b/vendor-bin/rector/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": "9369fa980a6f6abd8265f12e0a78d00d", + "content-hash": "dc4a80ce41729760c4e2fab35a1a8254", "packages": [ { "name": "phpstan/phpstan", - "version": "1.10.47", + "version": "1.10.50", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39" + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", - "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", "shasum": "" }, "require": { @@ -66,20 +66,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T15:19:17+00:00" + "time": "2023-12-13T10:59:42+00:00" }, { "name": "rector/rector", - "version": "0.18.11", + "version": "0.18.13", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "9621124c860066f56a4ab841349cb7c284edfaee" + "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/9621124c860066f56a4ab841349cb7c284edfaee", - "reference": "9621124c860066f56a4ab841349cb7c284edfaee", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/f8011a76d36aa4f839f60f3b4f97707d97176618", + "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618", "shasum": "" }, "require": { @@ -114,7 +114,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.11" + "source": "https://github.com/rectorphp/rector/tree/0.18.13" }, "funding": [ { @@ -122,7 +122,7 @@ "type": "github" } ], - "time": "2023-11-27T13:27:43+00:00" + "time": "2023-12-20T16:08:01+00:00" } ], "packages-dev": [], From 918e92e9d09490a108a55a151d45804090c9323a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:29:07 +0100 Subject: [PATCH 227/229] composer(deps): bump vimeo/psalm in /vendor-bin/psalm (#841) Bumps [vimeo/psalm](https://github.com/vimeo/psalm) from 5.16.0 to 5.18.0. - [Release notes](https://github.com/vimeo/psalm/releases) - [Commits](https://github.com/vimeo/psalm/compare/5.16.0...5.18.0) --- updated-dependencies: - dependency-name: vimeo/psalm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor-bin/psalm/composer.json | 2 +- vendor-bin/psalm/composer.lock | 78 +++++++++++++++++----------------- 2 files changed, 40 insertions(+), 40 deletions(-) diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json index cfc2a419f4..df860fafd6 100644 --- a/vendor-bin/psalm/composer.json +++ b/vendor-bin/psalm/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "vimeo/psalm": "^5.16.0" + "vimeo/psalm": "^5.18.0" }, "config": { "platform": { diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock index dce44f7a33..112316d331 100644 --- a/vendor-bin/psalm/composer.lock +++ b/vendor-bin/psalm/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": "734ce1273fe9512f0d7dac1414a15921", + "content-hash": "f6c3459730d42fdf4eda07fca3d204e1", "packages": [ { "name": "amphp/amp", @@ -577,16 +577,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "0.5.1", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", - "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", "shasum": "" }, "require": { @@ -594,13 +594,13 @@ }, "require-dev": { "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", "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", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", "webmozarts/strict-phpunit": "^7.5" }, "type": "library", @@ -626,7 +626,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" }, "funding": [ { @@ -634,7 +634,7 @@ "type": "github" } ], - "time": "2022-12-24T12:35:10+00:00" + "time": "2023-09-17T21:38:23+00:00" }, { "name": "netresearch/jsonmapper", @@ -689,16 +689,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -739,9 +739,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -913,16 +913,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.24.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc", "shasum": "" }, "require": { @@ -954,9 +954,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2023-12-16T09:33:33+00:00" }, { "name": "psr/container", @@ -1188,16 +1188,16 @@ }, { "name": "symfony/console", - "version": "v5.4.32", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7" + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", - "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", + "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c", + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c", "shasum": "" }, "require": { @@ -1267,7 +1267,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.32" + "source": "https://github.com/symfony/console/tree/v5.4.34" }, "funding": [ { @@ -1283,7 +1283,7 @@ "type": "tidelift" } ], - "time": "2023-11-18T18:23:04+00:00" + "time": "2023-12-08T13:33:03+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1993,16 +1993,16 @@ }, { "name": "symfony/string", - "version": "v5.4.32", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "91bf4453d65d8231688a04376c3a40efe0770f04" + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/91bf4453d65d8231688a04376c3a40efe0770f04", - "reference": "91bf4453d65d8231688a04376c3a40efe0770f04", + "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", "shasum": "" }, "require": { @@ -2059,7 +2059,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.32" + "source": "https://github.com/symfony/string/tree/v5.4.34" }, "funding": [ { @@ -2075,20 +2075,20 @@ "type": "tidelift" } ], - "time": "2023-11-26T13:43:46+00:00" + "time": "2023-12-09T13:20:28+00:00" }, { "name": "vimeo/psalm", - "version": "5.16.0", + "version": "5.18.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591" + "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/2897ba636551a8cb61601cc26f6ccfbba6c36591", - "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/b113f3ed0259fd6e212d87c3df80eec95a6abf19", + "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19", "shasum": "" }, "require": { @@ -2107,7 +2107,7 @@ "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", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.16", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", @@ -2185,7 +2185,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2023-11-22T20:38:47+00:00" + "time": "2023-12-16T09:37:35+00:00" }, { "name": "webmozart/assert", From f142bd822f55fd66f34f1633dcf7492e31899233 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:29:18 +0100 Subject: [PATCH 228/229] composer(deps): bump friendsofphp/php-cs-fixer from 3.40.0 to 3.45.0 in /vendor-bin/php-cs-fixer (#838) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump friendsofphp/php-cs-fixer Bumps [friendsofphp/php-cs-fixer](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) from 3.40.0 to 3.45.0. - [Release notes](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases) - [Changelog](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/CHANGELOG.md) - [Commits](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/compare/v3.40.0...v3.45.0) --- updated-dependencies: - dependency-name: friendsofphp/php-cs-fixer dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * Fix: Use --show-progress option to configure dots progress --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- .github/workflows/coding-standards.yaml | 4 +- Makefile | 4 +- vendor-bin/php-cs-fixer/composer.json | 2 +- vendor-bin/php-cs-fixer/composer.lock | 67 ++++++++++++------------- 4 files changed, 37 insertions(+), 40 deletions(-) diff --git a/.github/workflows/coding-standards.yaml b/.github/workflows/coding-standards.yaml index 0d2dceecc6..8e18e23131 100644 --- a/.github/workflows/coding-standards.yaml +++ b/.github/workflows/coding-standards.yaml @@ -58,11 +58,11 @@ jobs: - name: "Run php-cs-fixer" run: | - vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.dist.php --diff --dry-run --verbose + vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.dist.php --diff --dry-run --show-progress=dots --verbose - name: "Run php-cs-fixer for test code" run: | - vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.test.php --diff --dry-run --verbose + vendor/bin/php-cs-fixer fix --ansi --config=.php-cs-fixer.test.php --diff --dry-run --show-progress=dots --verbose yamllint: name: "yamllint" diff --git a/Makefile b/Makefile index 750e65bc1f..c945388b07 100644 --- a/Makefile +++ b/Makefile @@ -10,8 +10,8 @@ help: .PHONY: cs cs: vendor ## Fixes coding standard issues with php-cs-fixer - vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --diff --verbose - vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.test.php --diff --verbose + vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php --diff --show-progress=dots --verbose + vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.test.php --diff --show-progress=dots --verbose .PHONY: coverage coverage: vendor ## Collects coverage with phpunit diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json index 8dc1f4cc32..af1d1db677 100644 --- a/vendor-bin/php-cs-fixer/composer.json +++ b/vendor-bin/php-cs-fixer/composer.json @@ -1,7 +1,7 @@ { "require": { "php": "^7.4 || ^8.0", - "friendsofphp/php-cs-fixer": "^3.40.0" + "friendsofphp/php-cs-fixer": "^3.45.0" }, "config": { "platform": { diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index 7e48242fee..1954ad416c 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/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": "d5f62f2ae704dfd2cf9039d250499d39", + "content-hash": "f35a7c05fc3b2185f9ce88a791973671", "packages": [ { "name": "composer/pcre", @@ -226,16 +226,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.40.0", + "version": "v3.45.0", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0" + "reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/27d2b3265b5d550ec411b4319967ae7cfddfb2e0", - "reference": "27d2b3265b5d550ec411b4319967ae7cfddfb2e0", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", + "reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", "shasum": "" }, "require": { @@ -265,10 +265,7 @@ "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", - "phpspec/prophecy": "^1.17", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.6", - "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "phpunit/phpunit": "^9.6 || ^10.5.5", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { @@ -307,7 +304,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.40.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.45.0" }, "funding": [ { @@ -315,7 +312,7 @@ "type": "github" } ], - "time": "2023-11-26T09:25:53+00:00" + "time": "2023-12-30T02:07:07+00:00" }, { "name": "psr/container", @@ -533,16 +530,16 @@ }, { "name": "symfony/console", - "version": "v5.4.32", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7" + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", - "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", + "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c", + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c", "shasum": "" }, "require": { @@ -612,7 +609,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.32" + "source": "https://github.com/symfony/console/tree/v5.4.34" }, "funding": [ { @@ -628,7 +625,7 @@ "type": "tidelift" } ], - "time": "2023-11-18T18:23:04+00:00" + "time": "2023-12-08T13:33:03+00:00" }, { "name": "symfony/deprecation-contracts", @@ -699,16 +696,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.4.26", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac" + "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5dcc00e03413f05c1e7900090927bb7247cb0aac", - "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e3bca343efeb613f843c254e7718ef17c9bdf7a3", + "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3", "shasum": "" }, "require": { @@ -764,7 +761,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/v5.4.26" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.34" }, "funding": [ { @@ -780,7 +777,7 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:34:20+00:00" + "time": "2023-12-27T21:12:56+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1630,16 +1627,16 @@ }, { "name": "symfony/process", - "version": "v5.4.28", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b" + "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", + "url": "https://api.github.com/repos/symfony/process/zipball/8fa22178dfc368911dbd513b431cd9b06f9afe7a", + "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a", "shasum": "" }, "require": { @@ -1672,7 +1669,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.28" + "source": "https://github.com/symfony/process/tree/v5.4.34" }, "funding": [ { @@ -1688,7 +1685,7 @@ "type": "tidelift" } ], - "time": "2023-08-07T10:36:04+00:00" + "time": "2023-12-02T08:41:43+00:00" }, { "name": "symfony/service-contracts", @@ -1837,16 +1834,16 @@ }, { "name": "symfony/string", - "version": "v5.4.32", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "91bf4453d65d8231688a04376c3a40efe0770f04" + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/91bf4453d65d8231688a04376c3a40efe0770f04", - "reference": "91bf4453d65d8231688a04376c3a40efe0770f04", + "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", "shasum": "" }, "require": { @@ -1903,7 +1900,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.32" + "source": "https://github.com/symfony/string/tree/v5.4.34" }, "funding": [ { @@ -1919,7 +1916,7 @@ "type": "tidelift" } ], - "time": "2023-11-26T13:43:46+00:00" + "time": "2023-12-09T13:20:28+00:00" } ], "packages-dev": [], From 2114cc6a05b6e371368adfd4261378d7b0f87d84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:33:20 +0100 Subject: [PATCH 229/229] composer(deps): bump phpstan/phpstan from 1.10.40 to 1.10.50 in /vendor-bin/phpstan (#839) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * composer(deps): bump phpstan/phpstan in /vendor-bin/phpstan Bumps [phpstan/phpstan](https://github.com/phpstan/phpstan) from 1.10.40 to 1.10.50. - [Release notes](https://github.com/phpstan/phpstan/releases) - [Changelog](https://github.com/phpstan/phpstan/blob/1.11.x/CHANGELOG.md) - [Commits](https://github.com/phpstan/phpstan/compare/1.10.40...1.10.50) --- updated-dependencies: - dependency-name: phpstan/phpstan dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * Fix: Run 'make baseline' --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Andreas Möller --- phpstan-baseline.neon | 10 +++++----- vendor-bin/phpstan/composer.json | 2 +- vendor-bin/phpstan/composer.lock | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 363959fe61..6be7f3e05c 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -30,6 +30,11 @@ parameters: count: 1 path: src/Generator.php + - + message: "#^Call to an undefined static method UnitEnum\\:\\:cases\\(\\)\\.$#" + count: 2 + path: src/Provider/Base.php + - message: "#^Class UnitEnum not found\\.$#" count: 2 @@ -323,11 +328,6 @@ parameters: count: 1 path: src/Provider/pt_PT/Person.php - - - message: "#^Right side of \\|\\| is always false\\.$#" - count: 1 - path: src/Provider/pt_PT/Person.php - - message: "#^Parameter \\#1 \\$string of function substr expects string, int given\\.$#" count: 1 diff --git a/vendor-bin/phpstan/composer.json b/vendor-bin/phpstan/composer.json index f6155e28c7..d354c4283e 100644 --- a/vendor-bin/phpstan/composer.json +++ b/vendor-bin/phpstan/composer.json @@ -2,7 +2,7 @@ "require": { "php": "^7.4 || ^8.0", "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan": "^1.10.50", "phpstan/phpstan-deprecation-rules": "^1.1.4" }, "config": { diff --git a/vendor-bin/phpstan/composer.lock b/vendor-bin/phpstan/composer.lock index a54daae3ea..2e543e9e66 100644 --- a/vendor-bin/phpstan/composer.lock +++ b/vendor-bin/phpstan/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": "834c92e6a869b7967a0384689442169a", + "content-hash": "4d026fab191453b3b26f8c1a7a355422", "packages": [ { "name": "phpstan/extension-installer", @@ -52,16 +52,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.40", + "version": "1.10.50", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d" + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93c84b5bf7669920d823631e39904d69b9c7dc5d", - "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", "shasum": "" }, "require": { @@ -110,7 +110,7 @@ "type": "tidelift" } ], - "time": "2023-10-30T14:48:31+00:00" + "time": "2023-12-13T10:59:42+00:00" }, { "name": "phpstan/phpstan-deprecation-rules",