From ffe4b33da964b89f6fc9c0421c95117afc3d0717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Vo=C5=99=C3=AD=C5=A1ek?= Date: Thu, 14 Dec 2023 13:13:03 +0100 Subject: [PATCH] Report global maximum duration only once --- README.md | 24 ++++++------- src/Reporter/DefaultReporter.php | 35 ++++++++++++------- .../Version10/CustomConfiguration/test.phpt | 8 ++--- .../Version10/DefaultConfiguration/test.phpt | 10 +++--- .../Version8/CustomConfiguration/test.phpt | 8 ++--- .../Version8/DefaultConfiguration/test.phpt | 14 ++++---- .../Version9/CustomConfiguration/test.phpt | 8 ++--- .../Version9/DefaultConfiguration/test.phpt | 14 ++++---- test/Unit/Reporter/DefaultReporterTest.php | 14 ++++---- 9 files changed, 73 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index a8e80191..fa04861a 100644 --- a/README.md +++ b/README.md @@ -296,18 +296,18 @@ Random Seed: 1676103726 ............. 13 / 13 (100%) -Detected 11 tests that took longer than expected. - - 1. 1.604 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#9 - 2. 1.505 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#8 - 3. 1.403 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#7 - 4. 1.303 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#6 - 5. 1.205 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#5 - 6. 1.103 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#4 - 7. 1.005 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#3 - 8. 0.905 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#2 - 9. 0.805 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#1 -10. 0.705 (0.500) Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#0 +Detected 11 tests that took longer than expected (0.500). + + 1. 1.604 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#9 + 2. 1.505 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#8 + 3. 1.403 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#7 + 4. 1.303 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#6 + 5. 1.205 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#5 + 6. 1.103 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#4 + 7. 1.005 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#3 + 8. 0.905 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#2 + 9. 0.805 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#1 +10. 0.705 Ergebnis\PHPUnit\SlowTestDetector\Test\EndToEnd\Default\SleeperTest::testSleeperSleepsLongerThanDefaultMaximumDurationWithDataProvider#0 There is 1 additional slow test that is not listed here. diff --git a/src/Reporter/DefaultReporter.php b/src/Reporter/DefaultReporter.php index affaa7b9..6a58cf96 100644 --- a/src/Reporter/DefaultReporter.php +++ b/src/Reporter/DefaultReporter.php @@ -68,15 +68,18 @@ private function header(SlowTest ...$slowTests): string { $count = \count($slowTests); + $durationFormatter = $this->durationFormatter; + $formattedMaximumDuration = $durationFormatter->format($this->maximumDuration); + if (1 === $count) { return <<format($slowestTest->duration())); $maximumDurationWidth = \strlen($durationFormatter->format($longestMaximumDuration)); - $items = \array_map(static function (int $number, SlowTest $slowTest) use ($numberWidth, $durationFormatter, $durationWidth, $maximumDurationWidth): string { + $formattedMaximumGlobalDuration = \str_pad( + $durationFormatter->format($this->maximumDuration), + $maximumDurationWidth, + ' ', + \STR_PAD_LEFT, + ); + + $items = \array_map(static function (int $number, SlowTest $slowTest) use ($numberWidth, $durationFormatter, $durationWidth, $formattedMaximumGlobalDuration, $maximumDurationWidth): string { $formattedNumber = \str_pad( (string) $number, $numberWidth, @@ -134,20 +144,21 @@ static function (Duration $maximumDuration, SlowTest $slowTest): Duration { \STR_PAD_LEFT, ); - $formattedMaximumDuration = \sprintf( - '(%s)', - \str_pad( - $durationFormatter->format($slowTest->maximumDuration()), - $maximumDurationWidth, - ' ', - \STR_PAD_LEFT, - ), + $formattedMaximumDuration = \str_pad( + $durationFormatter->format($slowTest->maximumDuration()), + $maximumDurationWidth, + ' ', + \STR_PAD_LEFT, ); + $formattedMaximumDurationIfNotGlobal = $formattedMaximumDuration === $formattedMaximumGlobalDuration + ? '' + : \sprintf(' (%s)', $formattedMaximumDuration); + $testName = $slowTest->testIdentifier()->toString(); return << [ <<<'TXT' -Detected 1 test that took longer than expected. +Detected 1 test that took longer than expected (0.500). 1. 0.300 (0.100) FooTest::test TXT, @@ -92,7 +92,7 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe ], 'header-plural' => [ <<<'TXT' -Detected 2 tests that took longer than expected. +Detected 2 tests that took longer than expected (0.500). 1. 0.300 (0.100) FooTest::test 2. 0.275 (0.100) BarTest::test @@ -114,7 +114,7 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe ], 'list-sorted' => [ <<<'TXT' -Detected 3 tests that took longer than expected. +Detected 3 tests that took longer than expected (0.500). 1. 0.300 (0.100) FooTest::test 2. 0.275 (0.100) BarTest::test @@ -142,7 +142,7 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe ], 'list-unsorted' => [ <<<'TXT' -Detected 3 tests that took longer than expected. +Detected 3 tests that took longer than expected (0.500). 1. 0.300 (0.100) FooTest::test 2. 0.275 (0.100) BarTest::test @@ -170,7 +170,7 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe ], 'list-different-maximum-duration' => [ <<<'TXT' -Detected 10 tests that took longer than expected. +Detected 10 tests that took longer than expected (0.500). 1. 20:50.000 (16:40.000) FooTest::test 2. 9:35.000 ( 8:20.000) BarTest::test @@ -240,7 +240,7 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe ], 'footer-singular' => [ <<<'TXT' -Detected 2 tests that took longer than expected. +Detected 2 tests that took longer than expected (0.500). 1. 0.300 (0.100) FooTest::test @@ -263,7 +263,7 @@ public static function provideExpectedReportMaximumDurationMaximumCountAndSlowTe ], 'footer-plural' => [ <<<'TXT' -Detected 3 tests that took longer than expected. +Detected 3 tests that took longer than expected (0.500). 1. 0.300 (0.100) FooTest::test