From 24b5e64c28ab416ec1165c214fa2984843498765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Sun, 7 Apr 2024 14:00:58 +0200 Subject: [PATCH] Enhancement: Add support for PHP 7.3 --- .github/workflows/integrate.yaml | 15 +- .github/workflows/release.yaml | 2 +- .php-cs-fixer.php | 2 +- CHANGELOG.md | 5 + composer.json | 6 +- composer.lock | 107 +++-------- psalm-baseline.xml | 54 +++++- rector.php | 4 +- src/Attribute/MaximumDuration.php | 5 +- src/Collector/DefaultCollector.php | 2 +- src/Count.php | 5 +- src/Duration.php | 21 ++- src/Extension.php | 25 ++- src/Formatter/DefaultDurationFormatter.php | 14 +- src/Phase.php | 23 ++- src/PhaseIdentifier.php | 5 +- src/PhaseStart.php | 11 +- src/Reporter/DefaultReporter.php | 23 ++- src/SlowTest.php | 17 +- src/Subscriber/Test/FinishedSubscriber.php | 17 +- .../Test/PreparationStartedSubscriber.php | 5 +- .../ExecutionFinishedSubscriber.php | 11 +- src/TestIdentifier.php | 5 +- src/Time.php | 15 +- src/TimeKeeper.php | 2 +- src/Version/Major.php | 5 +- src/Version/Series.php | 5 +- test/DataProvider/AbstractProvider.php | 85 +++++++++ test/DataProvider/IntProvider.php | 104 +++++++++++ test/DataProvider/StringProvider.php | 173 ++++++++++++++++++ test/Fixture/Sleeper.php | 5 +- test/Unit/Attribute/MaximumDurationTest.php | 4 +- test/Unit/Collector/DefaultCollectorTest.php | 4 +- test/Unit/Console/ColorTest.php | 4 +- test/Unit/CountTest.php | 6 +- test/Unit/DurationTest.php | 30 +-- .../DefaultDurationFormatterTest.php | 14 +- test/Unit/PhaseIdentifierTest.php | 4 +- test/Unit/PhaseStartTest.php | 2 +- test/Unit/PhaseTest.php | 4 +- test/Unit/Reporter/DefaultReporterTest.php | 17 +- test/Unit/TestIdentifierTest.php | 4 +- test/Unit/TimeKeeperTest.php | 6 +- test/Unit/TimeTest.php | 2 +- test/Unit/Version/MajorTest.php | 6 +- test/Unit/Version/SeriesTest.php | 2 +- 46 files changed, 683 insertions(+), 204 deletions(-) create mode 100644 test/DataProvider/AbstractProvider.php create mode 100644 test/DataProvider/IntProvider.php create mode 100644 test/DataProvider/StringProvider.php diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml index 0161b5cd..24db11c2 100644 --- a/.github/workflows/integrate.yaml +++ b/.github/workflows/integrate.yaml @@ -58,7 +58,7 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Remove incompatible dependencies with composer" - run: "composer remove ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" + run: "composer remove ergebnis/composer-normalize ergebnis/license ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" - name: "Require phpunit/phpunit:^${{ matrix.phpunit-version }}" run: "composer require phpunit/phpunit:^${{ matrix.phpunit-version }} --ansi --no-interaction --no-progress --update-with-all-dependencies" @@ -249,7 +249,7 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Remove incompatible dependencies with composer" - run: "composer remove ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" + run: "composer remove ergebnis/composer-normalize ergebnis/license ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" - name: "Remove phpunit/phpunit with composer" run: "composer remove phpunit/phpunit --ansi --no-interaction --ignore-platform-reqs --no-progress" @@ -461,6 +461,7 @@ jobs: - "9.0.0" php-version: + - "7.3" - "7.4" - "8.0" - "8.1" @@ -472,6 +473,14 @@ jobs: - "highest" include: + - phpunit-version: "7.5.0" + php-version: "7.3" + dependencies: "lowest" + + - phpunit-version: "7.5.0" + php-version: "7.3" + dependencies: "highest" + - phpunit-version: "7.5.0" php-version: "7.4" dependencies: "lowest" @@ -555,7 +564,7 @@ jobs: - name: "Remove incompatible dependencies with composer" if: "matrix.dependencies != 'locked'" - run: "composer remove ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" + run: "composer remove ergebnis/composer-normalize ergebnis/license ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" - name: "Remove platform configuration with composer" if: "matrix.dependencies != 'locked'" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 8cec5a19..5755db62 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -56,7 +56,7 @@ jobs: restore-keys: "php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-" - name: "Remove incompatible dependencies with composer" - run: "composer remove ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" + run: "composer remove ergebnis/composer-normalize ergebnis/license ergebnis/php-cs-fixer-config psalm/plugin-phpunit vimeo/psalm --ansi --dev --no-interaction --no-progress" - name: "Remove phpunit/phpunit with composer" run: "composer remove phpunit/phpunit --ansi --no-interaction --ignore-platform-reqs --no-progress" diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index d0ecd799..bb6d0272 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -26,7 +26,7 @@ $license->save(); -$ruleSet = PhpCsFixer\Config\RuleSet\Php74::create() +$ruleSet = PhpCsFixer\Config\RuleSet\Php73::create() ->withHeader($license->header()) ->withRules(PhpCsFixer\Config\Rules::fromArray([ 'mb_str_functions' => false, diff --git a/CHANGELOG.md b/CHANGELOG.md index adb874eb..4758df19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), For a full diff see [`2.10.0...main`][2.10.0...main]. +### Changed + +- Added support for PHP 7.3 ([#476]), by [@localheinz] + ## [`2.10.0`][2.10.0] For a full diff see [`2.9.0...2.10.0`][2.9.0...2.10.0]. @@ -276,6 +280,7 @@ For a full diff see [`7afa59c...1.0.0`][7afa59c...1.0.0]. [#396]: https://github.com/ergebnis/phpunit-slow-test-detector/pull/396 [#447]: https://github.com/ergebnis/phpunit-slow-test-detector/pull/447 [#448]: https://github.com/ergebnis/phpunit-slow-test-detector/pull/448 +[#476]: https://github.com/ergebnis/phpunit-slow-test-detector/pull/476 [#485]: https://github.com/ergebnis/phpunit-slow-test-detector/pull/485 [#491]: https://github.com/ergebnis/phpunit-slow-test-detector/pull/491 [#494]: https://github.com/ergebnis/phpunit-slow-test-detector/pull/494 diff --git a/composer.json b/composer.json index 3753947b..4c22e181 100644 --- a/composer.json +++ b/composer.json @@ -24,16 +24,16 @@ "security": "https://github.com/ergebnis/phpunit-slow-test-detector/blob/main/.github/SECURITY.md" }, "require": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "phpunit/phpunit": "^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0" }, "require-dev": { "ergebnis/composer-normalize": "^2.42.0", - "ergebnis/data-provider": "^3.2.0", "ergebnis/license": "^2.4.0", "ergebnis/php-cs-fixer-config": "^6.25.1", - "fakerphp/faker": "^1.23.1", + "fakerphp/faker": "~1.20.0", "psalm/plugin-phpunit": "~0.19.0", + "psr/container": "~1.0.0", "rector/rector": "^1.0.4", "vimeo/psalm": "^5.23.1" }, diff --git a/composer.lock b/composer.lock index ef05b650..878811c2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4c7a55ca78baf6695efa88d6867e5de2", + "content-hash": "9e54ff2ffdd11af6817f2f85e1da6aa4", "packages": [ { "name": "doctrine/instantiator", @@ -2358,69 +2358,6 @@ }, "time": "2024-01-30T11:54:02+00:00" }, - { - "name": "ergebnis/data-provider", - "version": "3.2.0", - "source": { - "type": "git", - "url": "https://github.com/ergebnis/data-provider.git", - "reference": "e2b0b79b833f5a5799f2ee52ebc8e08e8d52f9eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ergebnis/data-provider/zipball/e2b0b79b833f5a5799f2ee52ebc8e08e8d52f9eb", - "reference": "e2b0b79b833f5a5799f2ee52ebc8e08e8d52f9eb", - "shasum": "" - }, - "require": { - "fakerphp/faker": "^1.21.0", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.28.3", - "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.13.0", - "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.6.13", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.18.11", - "vimeo/psalm": "^5.16.0" - }, - "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" - } - }, - "autoload": { - "psr-4": { - "Ergebnis\\DataProvider\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com", - "homepage": "https://localheinz.com" - } - ], - "description": "Provides generic data providers for use with phpunit/phpunit.", - "homepage": "https://github.com/ergebnis/data-provider", - "keywords": [ - "data-provider", - "phpunit" - ], - "support": { - "issues": "https://github.com/ergebnis/data-provider/issues", - "source": "https://github.com/ergebnis/data-provider" - }, - "time": "2023-11-30T17:30:28+00:00" - }, { "name": "ergebnis/json", "version": "1.2.0", @@ -2948,20 +2885,20 @@ }, { "name": "fakerphp/faker", - "version": "v1.23.1", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/37f751c67a5372d4e26353bd9384bc03744ec77b", + "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", + "php": "^7.1 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -2972,8 +2909,7 @@ "bamarni/composer-bin-plugin": "^1.4.1", "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" + "symfony/phpunit-bridge": "^4.4 || ^5.2" }, "suggest": { "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", @@ -2983,6 +2919,11 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.20-dev" + } + }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -3005,9 +2946,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + "source": "https://github.com/FakerPHP/Faker/tree/v1.20.0" }, - "time": "2024-01-02T13:46:09+00:00" + "time": "2022-07-20T13:12:54+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -3829,25 +3770,25 @@ }, { "name": "psr/container", - "version": "2.0.2", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", "shasum": "" }, "require": { - "php": ">=7.4.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -3862,7 +3803,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -3876,9 +3817,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "source": "https://github.com/php-fig/container/tree/master" }, - "time": "2021-11-05T16:47:00+00:00" + "time": "2017-02-14T16:28:37+00:00" }, { "name": "psr/event-dispatcher", @@ -5625,7 +5566,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "platform-dev": [], "platform-overrides": { diff --git a/psalm-baseline.xml b/psalm-baseline.xml index a2d64a83..aa90aa56 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -13,12 +13,12 @@ - seconds() * 1_000 + $duration->nanoseconds() / 1_000_000]]> + seconds() * 1000 + $duration->nanoseconds() / 1000000]]> - + @@ -60,6 +60,51 @@ + + + + + + + + + + + + + + + + + ]]> + ]]> + ]]> + ]]> + ]]> + ]]> + ]]> + + + + + + + + + + ]]> + ]]> + ]]> + ]]> + ]]> + ]]> + + + + + + + @@ -409,9 +454,4 @@ milliseconds * 1000]]> - - - - - diff --git a/rector.php b/rector.php index 55be202e..a3730081 100644 --- a/rector.php +++ b/rector.php @@ -18,12 +18,10 @@ return static function (Config\RectorConfig $rectorConfig): void { $rectorConfig->cacheDirectory(__DIR__ . '/.build/rector/'); - $rectorConfig->import(__DIR__ . '/vendor/fakerphp/faker/rector-migrate.php'); - $rectorConfig->paths([ __DIR__ . '/src/', __DIR__ . '/test/', ]); - $rectorConfig->phpVersion(ValueObject\PhpVersion::PHP_74); + $rectorConfig->phpVersion(ValueObject\PhpVersion::PHP_73); }; diff --git a/src/Attribute/MaximumDuration.php b/src/Attribute/MaximumDuration.php index ec62436d..741dc46b 100644 --- a/src/Attribute/MaximumDuration.php +++ b/src/Attribute/MaximumDuration.php @@ -18,7 +18,10 @@ #[\Attribute(\Attribute::TARGET_METHOD)] final class MaximumDuration { - private int $milliseconds; + /** + * @var int + */ + private $milliseconds; /** * @throws Exception\InvalidMilliseconds diff --git a/src/Collector/DefaultCollector.php b/src/Collector/DefaultCollector.php index 6f7c07b4..3eab4cd3 100644 --- a/src/Collector/DefaultCollector.php +++ b/src/Collector/DefaultCollector.php @@ -23,7 +23,7 @@ final class DefaultCollector implements Collector /** * @var array */ - private array $slowTests = []; + private $slowTests = []; public function collect(SlowTest $slowTest): void { diff --git a/src/Count.php b/src/Count.php index 8edf02c4..d5da38b1 100644 --- a/src/Count.php +++ b/src/Count.php @@ -18,7 +18,10 @@ */ final class Count { - private int $value; + /** + * @var int + */ + private $value; private function __construct(int $value) { diff --git a/src/Duration.php b/src/Duration.php index 1b068c80..5f73bd93 100644 --- a/src/Duration.php +++ b/src/Duration.php @@ -18,8 +18,15 @@ */ final class Duration { - private int $seconds; - private int $nanoseconds; + /** + * @var int + */ + private $seconds; + + /** + * @var int + */ + private $nanoseconds; private function __construct( int $seconds, @@ -45,7 +52,7 @@ public static function fromSecondsAndNanoseconds( throw Exception\InvalidNanoseconds::notGreaterThanOrEqualToZero($nanoseconds); } - $maxNanoseconds = 999_999_999; + $maxNanoseconds = 999999999; if ($maxNanoseconds < $nanoseconds) { throw Exception\InvalidNanoseconds::notLessThanOrEqualTo( @@ -71,10 +78,10 @@ public static function fromMilliseconds(int $milliseconds): self $seconds = \intdiv( $milliseconds, - 1_000, + 1000, ); - $nanoseconds = ($milliseconds - $seconds * 1_000) * 1_000_000; + $nanoseconds = ($milliseconds - $seconds * 1000) * 1000000; return new self( $seconds, @@ -97,10 +104,10 @@ public function add(self $other): self $seconds = $this->seconds + $other->seconds; $nanoseconds = $this->nanoseconds + $other->nanoseconds; - if (999_999_999 < $nanoseconds) { + if (999999999 < $nanoseconds) { return new self( $seconds + 1, - $nanoseconds - 1_000_000_000, + $nanoseconds - 1000000000, ); } diff --git a/src/Extension.php b/src/Extension.php index bb8f8ec6..12646b0f 100644 --- a/src/Extension.php +++ b/src/Extension.php @@ -36,10 +36,25 @@ final class Extension implements Runner\AfterTestHook, Runner\BeforeFirstTestHook { - private int $suites = 0; - private Duration $maximumDuration; - private Collector\Collector $collector; - private Reporter\Reporter $reporter; + /** + * @var int + */ + private $suites = 0; + + /** + * @var Duration + */ + private $maximumDuration; + + /** + * @var Collector\Collector + */ + private $collector; + + /** + * @var Reporter\Reporter + */ + private $reporter; public function __construct(array $options = []) { @@ -86,7 +101,7 @@ public function executeAfterTest( float $time ): void { $seconds = (int) \floor($time); - $nanoseconds = (int) (($time - $seconds) * 1_000_000_000); + $nanoseconds = (int) (($time - $seconds) * 1000000000); $duration = Duration::fromSecondsAndNanoseconds( $seconds, diff --git a/src/Formatter/DefaultDurationFormatter.php b/src/Formatter/DefaultDurationFormatter.php index 2659c0ac..3c106aa4 100644 --- a/src/Formatter/DefaultDurationFormatter.php +++ b/src/Formatter/DefaultDurationFormatter.php @@ -27,16 +27,16 @@ final class DefaultDurationFormatter implements DurationFormatter */ public function format(Duration $duration): string { - $durationInMilliseconds = $duration->seconds() * 1_000 + $duration->nanoseconds() / 1_000_000; + $durationInMilliseconds = $duration->seconds() * 1000 + $duration->nanoseconds() / 1000000; - $hours = (int) \floor($durationInMilliseconds / 60 / 60 / 1_000); - $hoursInMilliseconds = $hours * 60 * 60 * 1_000; + $hours = (int) \floor($durationInMilliseconds / 60 / 60 / 1000); + $hoursInMilliseconds = $hours * 60 * 60 * 1000; - $minutes = ((int) \floor($durationInMilliseconds / 60 / 1_000)) % 60; - $minutesInMilliseconds = $minutes * 60 * 1_000; + $minutes = ((int) \floor($durationInMilliseconds / 60 / 1000)) % 60; + $minutesInMilliseconds = $minutes * 60 * 1000; - $seconds = (int) \floor(($durationInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds) / 1_000); - $secondsInMilliseconds = $seconds * 1_000; + $seconds = (int) \floor(($durationInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds) / 1000); + $secondsInMilliseconds = $seconds * 1000; $milliseconds = (int) ($durationInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds - $secondsInMilliseconds); diff --git a/src/Phase.php b/src/Phase.php index a1d14dd0..560b4650 100644 --- a/src/Phase.php +++ b/src/Phase.php @@ -18,10 +18,25 @@ */ final class Phase { - private PhaseIdentifier $phaseIdentifier; - private Time $startTime; - private Time $stopTime; - private Duration $duration; + /** + * @var PhaseIdentifier + */ + private $phaseIdentifier; + + /** + * @var Time + */ + private $startTime; + + /** + * @var Time + */ + private $stopTime; + + /** + * @var Duration + */ + private $duration; private function __construct( PhaseIdentifier $phaseIdentifier, diff --git a/src/PhaseIdentifier.php b/src/PhaseIdentifier.php index 6c15e8a7..1bbaa06f 100644 --- a/src/PhaseIdentifier.php +++ b/src/PhaseIdentifier.php @@ -18,7 +18,10 @@ */ final class PhaseIdentifier { - private string $value; + /** + * @var string + */ + private $value; private function __construct(string $value) { diff --git a/src/PhaseStart.php b/src/PhaseStart.php index 3f8308db..d06d99e5 100644 --- a/src/PhaseStart.php +++ b/src/PhaseStart.php @@ -18,8 +18,15 @@ */ final class PhaseStart { - private PhaseIdentifier $phaseIdentifier; - private Time $startTime; + /** + * @var PhaseIdentifier + */ + private $phaseIdentifier; + + /** + * @var Time + */ + private $startTime; private function __construct( PhaseIdentifier $phaseIdentifier, diff --git a/src/Reporter/DefaultReporter.php b/src/Reporter/DefaultReporter.php index b61e8a6a..af55c933 100644 --- a/src/Reporter/DefaultReporter.php +++ b/src/Reporter/DefaultReporter.php @@ -24,10 +24,25 @@ */ final class DefaultReporter implements Reporter { - private Formatter\DurationFormatter $durationFormatter; - private Duration $maximumDuration; - private Count $maximumCount; - private Comparator\DurationComparator $durationComparator; + /** + * @var Formatter\DurationFormatter + */ + private $durationFormatter; + + /** + * @var Duration + */ + private $maximumDuration; + + /** + * @var Count + */ + private $maximumCount; + + /** + * @var Comparator\DurationComparator + */ + private $durationComparator; public function __construct( Formatter\DurationFormatter $durationFormatter, diff --git a/src/SlowTest.php b/src/SlowTest.php index c9bfadb0..221b08e8 100644 --- a/src/SlowTest.php +++ b/src/SlowTest.php @@ -18,9 +18,20 @@ */ final class SlowTest { - private Duration $maximumDuration; - private Duration $duration; - private TestIdentifier $testIdentifier; + /** + * @var TestIdentifier + */ + private $testIdentifier; + + /** + * @var Duration + */ + private $duration; + + /** + * @var Duration + */ + private $maximumDuration; private function __construct( TestIdentifier $testIdentifier, diff --git a/src/Subscriber/Test/FinishedSubscriber.php b/src/Subscriber/Test/FinishedSubscriber.php index eb946019..4542c94b 100644 --- a/src/Subscriber/Test/FinishedSubscriber.php +++ b/src/Subscriber/Test/FinishedSubscriber.php @@ -29,9 +29,20 @@ */ final class FinishedSubscriber implements Event\Test\FinishedSubscriber { - private Duration $maximumDuration; - private TimeKeeper $timeKeeper; - private Collector\Collector $collector; + /** + * @var Duration + */ + private $maximumDuration; + + /** + * @var TimeKeeper + */ + private $timeKeeper; + + /** + * @var Collector\Collector + */ + private $collector; public function __construct( Duration $maximumDuration, diff --git a/src/Subscriber/Test/PreparationStartedSubscriber.php b/src/Subscriber/Test/PreparationStartedSubscriber.php index ca0071ec..4c13781e 100644 --- a/src/Subscriber/Test/PreparationStartedSubscriber.php +++ b/src/Subscriber/Test/PreparationStartedSubscriber.php @@ -23,7 +23,10 @@ */ final class PreparationStartedSubscriber implements Event\Test\PreparationStartedSubscriber { - private TimeKeeper $timeKeeper; + /** + * @var TimeKeeper + */ + private $timeKeeper; public function __construct(TimeKeeper $timeKeeper) { diff --git a/src/Subscriber/TestRunner/ExecutionFinishedSubscriber.php b/src/Subscriber/TestRunner/ExecutionFinishedSubscriber.php index 30808d88..77ed2224 100644 --- a/src/Subscriber/TestRunner/ExecutionFinishedSubscriber.php +++ b/src/Subscriber/TestRunner/ExecutionFinishedSubscriber.php @@ -22,8 +22,15 @@ */ final class ExecutionFinishedSubscriber implements Event\TestRunner\ExecutionFinishedSubscriber { - private Reporter\Reporter $reporter; - private Collector\Collector $collector; + /** + * @var Collector\Collector + */ + private $collector; + + /** + * @var Reporter\Reporter + */ + private $reporter; public function __construct( Collector\Collector $collector, diff --git a/src/TestIdentifier.php b/src/TestIdentifier.php index 4a311d1b..3303f0a3 100644 --- a/src/TestIdentifier.php +++ b/src/TestIdentifier.php @@ -18,7 +18,10 @@ */ final class TestIdentifier { - private string $value; + /** + * @var string + */ + private $value; private function __construct(string $value) { diff --git a/src/Time.php b/src/Time.php index b6489f77..c581f094 100644 --- a/src/Time.php +++ b/src/Time.php @@ -18,8 +18,15 @@ */ final class Time { - private int $nanoseconds; - private int $seconds; + /** + * @var int + */ + private $seconds; + + /** + * @var int + */ + private $nanoseconds; private function __construct( int $seconds, @@ -45,7 +52,7 @@ public static function fromSecondsAndNanoseconds( throw Exception\InvalidNanoseconds::notGreaterThanOrEqualToZero($nanoseconds); } - $maxNanoseconds = 999_999_999; + $maxNanoseconds = 999999999; if ($maxNanoseconds < $nanoseconds) { throw Exception\InvalidNanoseconds::notLessThanOrEqualTo( @@ -81,7 +88,7 @@ public function duration(self $start): Duration if (0 > $nanoseconds) { --$seconds; - $nanoseconds += 1_000_000_000; + $nanoseconds += 1000000000; } if (0 > $seconds) { diff --git a/src/TimeKeeper.php b/src/TimeKeeper.php index 7b1afd67..6db22bec 100644 --- a/src/TimeKeeper.php +++ b/src/TimeKeeper.php @@ -21,7 +21,7 @@ final class TimeKeeper /** * @var array */ - private array $phaseStarts = []; + private $phaseStarts = []; public function start( PhaseIdentifier $phaseIdentifier, diff --git a/src/Version/Major.php b/src/Version/Major.php index 01e7ecd2..817e22da 100644 --- a/src/Version/Major.php +++ b/src/Version/Major.php @@ -18,7 +18,10 @@ */ final class Major { - private int $value; + /** + * @var int + */ + private $value; private function __construct(int $value) { diff --git a/src/Version/Series.php b/src/Version/Series.php index ba5f2758..c2fc8128 100644 --- a/src/Version/Series.php +++ b/src/Version/Series.php @@ -18,7 +18,10 @@ */ final class Series { - private Major $major; + /** + * @var Major + */ + private $major; private function __construct(Major $major) { diff --git a/test/DataProvider/AbstractProvider.php b/test/DataProvider/AbstractProvider.php new file mode 100644 index 00000000..0b1d7a3d --- /dev/null +++ b/test/DataProvider/AbstractProvider.php @@ -0,0 +1,85 @@ + $fakers + */ + static $fakers = []; + + if (!\array_key_exists($locale, $fakers)) { + $faker = Factory::create($locale); + + $faker->seed(9001); + + $fakers[$locale] = $faker; + } + + return $fakers[$locale]; + } + + /** + * @param array $values + * + * @throws Exception\EmptyValues + * + * @return \Generator + */ + final protected static function provideDataForValues(array $values): \Generator + { + if ([] === $values) { + throw Exception\EmptyValues::create(); + } + + foreach ($values as $key => $value) { + yield $key => [ + $value, + ]; + } + } + + /** + * @param array $values + * + * @throws Exception\EmptyValues + * + * @return \Generator + */ + final protected static function provideDataForValuesWhere(array $values, \Closure $test): \Generator + { + if ([] === $values) { + throw Exception\EmptyValues::create(); + } + + $filtered = \array_filter($values, static function ($value) use ($test): bool { + return true === $test($value); + }); + + if ([] === $filtered) { + throw Exception\EmptyValues::filtered(); + } + + yield from self::provideDataForValues($filtered); + } +} diff --git a/test/DataProvider/IntProvider.php b/test/DataProvider/IntProvider.php new file mode 100644 index 00000000..ceefd085 --- /dev/null +++ b/test/DataProvider/IntProvider.php @@ -0,0 +1,104 @@ + + */ + public static function arbitrary(): \Generator + { + yield from self::provideDataForValues(self::values()); + } + + /** + * @return \Generator + */ + public static function lessThanZero(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (int $value): bool { + return 0 > $value; + }); + } + + /** + * @return \Generator + */ + public static function zero(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (int $value): bool { + return 0 === $value; + }); + } + + /** + * @return \Generator + */ + public static function greaterThanZero(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (int $value): bool { + return 0 < $value; + }); + } + + /** + * @return \Generator + */ + public static function lessThanOne(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (int $value): bool { + return 1 > $value; + }); + } + + /** + * @return \Generator + */ + public static function one(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (int $value): bool { + return 1 === $value; + }); + } + + /** + * @return \Generator + */ + public static function greaterThanOne(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (int $value): bool { + return 1 < $value; + }); + } + + /** + * @return array + */ + private static function values(): array + { + $faker = self::faker(); + + return [ + 'int-less-than-minus-one' => -1 * $faker->numberBetween(1), + 'int-minus-one' => -1, + 'int-zero' => 0, + 'int-plus-one' => 1, + 'int-greater-than-plus-one' => $faker->numberBetween(1), + ]; + } +} diff --git a/test/DataProvider/StringProvider.php b/test/DataProvider/StringProvider.php new file mode 100644 index 00000000..581f4101 --- /dev/null +++ b/test/DataProvider/StringProvider.php @@ -0,0 +1,173 @@ + + */ + public static function arbitrary(): \Generator + { + yield from self::provideDataForValues(self::values()); + } + + /** + * @return \Generator + */ + public static function blank(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (string $value): bool { + return '' === \trim($value) + && '' !== $value; + }); + } + + /** + * @return \Generator + */ + public static function empty(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (string $value): bool { + return '' === $value; + }); + } + + /** + * @return \Generator + */ + public static function trimmed(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (string $value): bool { + return \trim($value) === $value + && '' !== \trim($value); + }); + } + + /** + * @return \Generator + */ + public static function untrimmed(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (string $value): bool { + return \trim($value) !== $value + && '' !== \trim($value); + }); + } + + /** + * @return \Generator + */ + public static function withWhitespace(): \Generator + { + yield from self::provideDataForValuesWhere(self::values(), static function (string $value): bool { + return \trim($value) === $value + && 1 === \preg_match('/\s/', $value); + }); + } + + /** + * @return array + */ + private static function values(): array + { + $faker = self::faker(); + + $arbitraryValues = [ + 'string-arbitrary-sentence' => $faker->sentence(), + 'string-arbitrary-word' => $faker->word(), + ]; + + $whitespaceCharacters = self::whitespaceCharacters(); + + $blankValues = \array_combine( + \array_map(static function (string $key): string { + return \sprintf( + 'string-blank-%s', + $key, + ); + }, \array_keys($whitespaceCharacters)), + $whitespaceCharacters, + ); + + $emptyValues = [ + 'string-empty' => '', + ]; + + $untrimmedValues = \array_combine( + \array_map(static function (string $key): string { + return \sprintf( + 'string-untrimmed-%s', + $key, + ); + }, \array_keys($whitespaceCharacters)), + \array_map(static function (string $whitespaceCharacter) use ($faker): string { + return \sprintf( + '%s%s%s', + \str_repeat( + $whitespaceCharacter, + $faker->numberBetween(1, 5), + ), + $faker->word(), + \str_repeat( + $whitespaceCharacter, + $faker->numberBetween(1, 5), + ), + ); + }, $whitespaceCharacters), + ); + + $withWhitespaceValues = \array_combine( + \array_map(static function (string $key): string { + return \sprintf( + 'string-with-whitespace-%s', + $key, + ); + }, \array_keys($whitespaceCharacters)), + \array_map(static function (string $whitespaceCharacter) use ($faker): string { + /** @var list $words */ + $words = $faker->words($faker->numberBetween(2, 5)); + + return \implode( + $whitespaceCharacter, + $words, + ); + }, $whitespaceCharacters), + ); + + return \array_merge( + $arbitraryValues, + $blankValues, + $emptyValues, + $untrimmedValues, + $withWhitespaceValues, + ); + } + + /** + * @return array + */ + private static function whitespaceCharacters(): array + { + return [ + 'carriage-return' => "\r", + 'line-feed' => "\n", + 'space' => ' ', + 'tab' => "\t", + ]; + } +} diff --git a/test/Fixture/Sleeper.php b/test/Fixture/Sleeper.php index 2a1baa08..586beea4 100644 --- a/test/Fixture/Sleeper.php +++ b/test/Fixture/Sleeper.php @@ -15,7 +15,10 @@ final class Sleeper { - private int $milliseconds; + /** + * @var int + */ + private $milliseconds; private function __construct(int $milliseconds) { diff --git a/test/Unit/Attribute/MaximumDurationTest.php b/test/Unit/Attribute/MaximumDurationTest.php index f42edf58..fe4f85ed 100644 --- a/test/Unit/Attribute/MaximumDurationTest.php +++ b/test/Unit/Attribute/MaximumDurationTest.php @@ -29,8 +29,8 @@ final class MaximumDurationTest extends Framework\TestCase use Test\Util\Helper; /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::lessThanZero - * @dataProvider \Ergebnis\DataProvider\IntProvider::zero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::lessThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::zero */ public function testConstructorRejectsInvalidValue(int $milliseconds): void { diff --git a/test/Unit/Collector/DefaultCollectorTest.php b/test/Unit/Collector/DefaultCollectorTest.php index 64cc3bd4..0b862d79 100644 --- a/test/Unit/Collector/DefaultCollectorTest.php +++ b/test/Unit/Collector/DefaultCollectorTest.php @@ -67,7 +67,7 @@ public function testCollectCollectsSlowerTestWithSameTestIdentifier(): void $one = SlowTest::create( TestIdentifier::fromString($faker->word()), Duration::fromMilliseconds($faker->numberBetween(0)), - Duration::fromMilliseconds($faker->numberBetween(0, 999_999_999 - 1)), + Duration::fromMilliseconds($faker->numberBetween(0, 999999999 - 1)), ); $two = SlowTest::create( @@ -98,7 +98,7 @@ public function testCollectDoesNotCollectFasterTestWithSameTestIdentifier(): voi $one = SlowTest::create( TestIdentifier::fromString($faker->word()), Duration::fromMilliseconds($faker->numberBetween(0)), - Duration::fromMilliseconds($faker->numberBetween(1, 999_999_999)), + Duration::fromMilliseconds($faker->numberBetween(1, 999999999)), ); $two = SlowTest::create( diff --git a/test/Unit/Console/ColorTest.php b/test/Unit/Console/ColorTest.php index 65b71f9f..e16224c9 100644 --- a/test/Unit/Console/ColorTest.php +++ b/test/Unit/Console/ColorTest.php @@ -26,8 +26,8 @@ final class ColorTest extends Framework\TestCase use Test\Util\Helper; /** - * @dataProvider \Ergebnis\DataProvider\StringProvider::blank - * @dataProvider \Ergebnis\DataProvider\StringProvider::empty + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\StringProvider::blank + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\StringProvider::empty */ public function testDimReturnsOriginalStringWhenItIsWhitespaceOnly(string $output): void { diff --git a/test/Unit/CountTest.php b/test/Unit/CountTest.php index fa98414d..8a46c3f5 100644 --- a/test/Unit/CountTest.php +++ b/test/Unit/CountTest.php @@ -26,8 +26,8 @@ final class CountTest extends Framework\TestCase { /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::lessThanZero - * @dataProvider \Ergebnis\DataProvider\IntProvider::zero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::lessThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::zero */ public function testFromIntRejectsInvalidValue(int $value): void { @@ -37,7 +37,7 @@ public function testFromIntRejectsInvalidValue(int $value): void } /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::greaterThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::greaterThanZero */ public function testFromIntReturnsCount(int $value): void { diff --git a/test/Unit/DurationTest.php b/test/Unit/DurationTest.php index 03b8ac30..7faf840b 100644 --- a/test/Unit/DurationTest.php +++ b/test/Unit/DurationTest.php @@ -31,11 +31,11 @@ final class DurationTest extends Framework\TestCase use Test\Util\Helper; /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::lessThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::lessThanZero */ public function testFromSecondsAndNanosecondsRejectsSecondsLessThanZero(int $seconds): void { - $nanoseconds = self::faker()->numberBetween(0, 999_999_999); + $nanoseconds = self::faker()->numberBetween(0, 999999999); $this->expectException(Exception\InvalidSeconds::class); @@ -46,7 +46,7 @@ public function testFromSecondsAndNanosecondsRejectsSecondsLessThanZero(int $sec } /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::lessThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::lessThanZero */ public function testFromSecondsAndNanosecondsRejectsNanosecondsLessThanZero(int $nanoseconds): void { @@ -61,12 +61,12 @@ public function testFromSecondsAndNanosecondsRejectsNanosecondsLessThanZero(int } /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::greaterThanOne + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::greaterThanOne */ public function testFromSecondsAndNanosecondsRejectsNanosecondsGreaterThan999999999(int $offset): void { $seconds = self::faker()->numberBetween(0, 123); - $nanoseconds = 999_999_999 + $offset; + $nanoseconds = 999999999 + $offset; $this->expectException(Exception\InvalidNanoseconds::class); @@ -81,7 +81,7 @@ public function testFromSecondsAndNanosecondsReturnsDuration(): void $faker = self::faker(); $seconds = $faker->numberBetween(0, 999); - $nanoseconds = $faker->numberBetween(0, 999_999_999); + $nanoseconds = $faker->numberBetween(0, 999999999); $duration = Duration::fromSecondsAndNanoseconds( $seconds, @@ -93,7 +93,7 @@ public function testFromSecondsAndNanosecondsReturnsDuration(): void } /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::lessThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::lessThanZero */ public function testFromMillisecondsRejectsInvalidValue(int $milliseconds): void { @@ -130,22 +130,22 @@ public static function provideMillisecondsSecondsAndNanoseconds(): iterable 'one' => [ 1, 0, - 1_000_000, + 1000000, ], 'nine-hundred-ninety-nine' => [ 999, 0, - 999_000_000, + 999000000, ], 'one-thousand' => [ - 1_000, + 1000, 1, 0, ], 'one-thousand-and-something' => [ - 1_234, + 1234, 1, - 234_000_000, + 234000000, ], ]; @@ -188,15 +188,15 @@ public static function provideDurationDurationAndResultOfAddingDurations(): iter 'more-than-999999999-nanoseconds' => [ Duration::fromSecondsAndNanoseconds( 1, - 999_999_999, + 999999999, ), Duration::fromSecondsAndNanoseconds( 2, - 123_456_789, + 123456789, ), Duration::fromSecondsAndNanoseconds( 4, - 123_456_788, + 123456788, ), ], ]; diff --git a/test/Unit/Formatter/DefaultDurationFormatterTest.php b/test/Unit/Formatter/DefaultDurationFormatterTest.php index 9b1b3b2e..634669a4 100644 --- a/test/Unit/Formatter/DefaultDurationFormatterTest.php +++ b/test/Unit/Formatter/DefaultDurationFormatterTest.php @@ -52,49 +52,49 @@ public static function provideDurationAndFormattedDuration(): iterable 'milliseconds' => [ Duration::fromSecondsAndNanoseconds( 0, - 123_999_000, + 123999000, ), '0.123', ], 'seconds-digits-one' => [ Duration::fromSecondsAndNanoseconds( 1, - 234_456_789, + 234456789, ), '1.234', ], 'seconds-digits-two' => [ Duration::fromSecondsAndNanoseconds( 12, - 345_678_912, + 345678912, ), '12.345', ], 'minutes-digits-one' => [ Duration::fromSecondsAndNanoseconds( 1 * 60 + 23, - 456_789_012, + 456789012, ), '1:23.456', ], 'minutes-digits-two' => [ Duration::fromSecondsAndNanoseconds( 12 * 60 + 34, - 567_890_123, + 567890123, ), '12:34.567', ], 'hours-digits-one' => [ Duration::fromSecondsAndNanoseconds( 60 * 60 + 23 * 60 + 45, - 567_890_123, + 567890123, ), '1:23:45.567', ], 'hours-digits-two' => [ Duration::fromSecondsAndNanoseconds( 12 * 60 * 60 + 34 * 60 + 56, - 789_012_345, + 789012345, ), '12:34:56.789', ], diff --git a/test/Unit/PhaseIdentifierTest.php b/test/Unit/PhaseIdentifierTest.php index 088e7af3..c1ed6657 100644 --- a/test/Unit/PhaseIdentifierTest.php +++ b/test/Unit/PhaseIdentifierTest.php @@ -29,8 +29,8 @@ final class PhaseIdentifierTest extends Framework\TestCase use Test\Util\Helper; /** - * @dataProvider \Ergebnis\DataProvider\StringProvider::blank - * @dataProvider \Ergebnis\DataProvider\StringProvider::empty + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\StringProvider::blank + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\StringProvider::empty */ public function testFromStringRejectsInvalidValue(string $value): void { diff --git a/test/Unit/PhaseStartTest.php b/test/Unit/PhaseStartTest.php index 5b395ebb..167c1c47 100644 --- a/test/Unit/PhaseStartTest.php +++ b/test/Unit/PhaseStartTest.php @@ -36,7 +36,7 @@ public function testCreateReturnsPhaseStart(): void $phaseIdentifier = PhaseIdentifier::fromString($faker->word()); $startTime = Time::fromSecondsAndNanoseconds( $faker->numberBetween(0, 999), - $faker->numberBetween(0, 999_999_999), + $faker->numberBetween(0, 999999999), ); $phaseStart = PhaseStart::create( diff --git a/test/Unit/PhaseTest.php b/test/Unit/PhaseTest.php index 0aafb781..890eb816 100644 --- a/test/Unit/PhaseTest.php +++ b/test/Unit/PhaseTest.php @@ -38,11 +38,11 @@ public function testCreateReturnsPhase(): void $phaseIdentifier = PhaseIdentifier::fromString($faker->word()); $startTime = Time::fromSecondsAndNanoseconds( $faker->numberBetween(0, 100), - $faker->numberBetween(0, 999_999_999), + $faker->numberBetween(0, 999999999), ); $stopTime = Time::fromSecondsAndNanoseconds( $faker->numberBetween(101, 999), - $faker->numberBetween(0, 999_999_999), + $faker->numberBetween(0, 999999999), ); $phase = Phase::create( diff --git a/test/Unit/Reporter/DefaultReporterTest.php b/test/Unit/Reporter/DefaultReporterTest.php index 4d398ece..7ce63fef 100644 --- a/test/Unit/Reporter/DefaultReporterTest.php +++ b/test/Unit/Reporter/DefaultReporterTest.php @@ -53,12 +53,14 @@ public function testReportReturnsEmptyStringWhenThereAreNoSlowTests(): void /** * @dataProvider provideExpectedReportMaximumDurationMaximumCountAndSlowTests + * + * @param list $slowTests */ public function testReportReturnsReportWhenThereAreFewerSlowTestsThanMaximumCount( string $expectedReport, Duration $maximumDuration, Count $maximumCount, - SlowTest ...$slowTests + array $slowTests ): void { $reporter = new Reporter\DefaultReporter( new Formatter\DefaultDurationFormatter(), @@ -71,6 +73,9 @@ public function testReportReturnsReportWhenThereAreFewerSlowTestsThanMaximumCoun self::assertSame($expectedReport, $report); } + /** + * @return \Generator}> + */ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTests(): iterable { $values = [ @@ -188,13 +193,13 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe [ SlowTest::create( TestIdentifier::fromString('FooTest::test'), - Duration::fromMilliseconds(1_250_000), - Duration::fromMilliseconds(1_000_000), + Duration::fromMilliseconds(1250000), + Duration::fromMilliseconds(1000000), ), SlowTest::create( TestIdentifier::fromString('BarTest::test'), - Duration::fromMilliseconds(575_000), - Duration::fromMilliseconds(500_000), + Duration::fromMilliseconds(575000), + Duration::fromMilliseconds(500000), ), SlowTest::create( TestIdentifier::fromString('BazTest::test'), @@ -296,7 +301,7 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe $expected, $maximumDuration, $maximumCount, - ...$slowTests, + $slowTests, ]; } } diff --git a/test/Unit/TestIdentifierTest.php b/test/Unit/TestIdentifierTest.php index 5a2d0bce..12cab224 100644 --- a/test/Unit/TestIdentifierTest.php +++ b/test/Unit/TestIdentifierTest.php @@ -29,8 +29,8 @@ final class TestIdentifierTest extends Framework\TestCase use Test\Util\Helper; /** - * @dataProvider \Ergebnis\DataProvider\StringProvider::blank - * @dataProvider \Ergebnis\DataProvider\StringProvider::empty + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\StringProvider::blank + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\StringProvider::empty */ public function testFromStringRejectsInvalidValue(string $value): void { diff --git a/test/Unit/TimeKeeperTest.php b/test/Unit/TimeKeeperTest.php index 0b5a44d1..9d406e99 100644 --- a/test/Unit/TimeKeeperTest.php +++ b/test/Unit/TimeKeeperTest.php @@ -41,7 +41,7 @@ public function testStopThrowsPhaseNotStartedExceptionWhenPhaseHasNotBeenStarted $phaseIdentifier = PhaseIdentifier::fromString($faker->word()); $stopTime = Time::fromSecondsAndNanoseconds( $faker->numberBetween(0), - $faker->numberBetween(0, 999_999_999), + $faker->numberBetween(0, 999999999), ); $timeKeeper = new TimeKeeper(); @@ -61,11 +61,11 @@ public function testStopReturnsPhaseWhenPhaseHasBeenStarted(): void $phaseIdentifier = PhaseIdentifier::fromString($faker->word()); $startTime = Time::fromSecondsAndNanoseconds( $faker->numberBetween(0), - $faker->numberBetween(0, 999_999_999 - 1), + $faker->numberBetween(0, 999999999 - 1), ); $stopTime = Time::fromSecondsAndNanoseconds( $faker->numberBetween($startTime->seconds() + 1), - $faker->numberBetween($startTime->nanoseconds() + 1, 999_999_999), + $faker->numberBetween($startTime->nanoseconds() + 1, 999999999), ); $timeKeeper = new TimeKeeper(); diff --git a/test/Unit/TimeTest.php b/test/Unit/TimeTest.php index aafad901..6a3fe51c 100644 --- a/test/Unit/TimeTest.php +++ b/test/Unit/TimeTest.php @@ -66,7 +66,7 @@ public function testFromSecondsAndNanosecondsReturnsTime(): void $faker = self::faker(); $seconds = $faker->numberBetween(0, 999); - $nanoseconds = $faker->numberBetween(0, 999_999_999); + $nanoseconds = $faker->numberBetween(0, 999999999); $time = Time::fromSecondsAndNanoseconds( $seconds, diff --git a/test/Unit/Version/MajorTest.php b/test/Unit/Version/MajorTest.php index 3f6f1899..d811d145 100644 --- a/test/Unit/Version/MajorTest.php +++ b/test/Unit/Version/MajorTest.php @@ -26,7 +26,7 @@ final class MajorTest extends Framework\TestCase use Test\Util\Helper; /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::lessThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::lessThanZero */ public function testFromIntRejectsInvalidValue(int $value): void { @@ -40,8 +40,8 @@ public function testFromIntRejectsInvalidValue(int $value): void } /** - * @dataProvider \Ergebnis\DataProvider\IntProvider::greaterThanZero - * @dataProvider \Ergebnis\DataProvider\IntProvider::zero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::greaterThanZero + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\IntProvider::zero */ public function testFromStringReturnsMajor(int $value): void { diff --git a/test/Unit/Version/SeriesTest.php b/test/Unit/Version/SeriesTest.php index 9164faa5..2d0ce228 100644 --- a/test/Unit/Version/SeriesTest.php +++ b/test/Unit/Version/SeriesTest.php @@ -37,7 +37,7 @@ public function testCreateReturnsSeries(): void } /** - * @dataProvider \Ergebnis\DataProvider\StringProvider::arbitrary + * @dataProvider \Ergebnis\PHPUnit\SlowTestDetector\Test\DataProvider\StringProvider::arbitrary * @dataProvider provideInvalidValue */ public function testFromStringRejectsInvalidValue(string $value): void