diff --git a/composer.json b/composer.json index 23989940..84953cd4 100644 --- a/composer.json +++ b/composer.json @@ -18,16 +18,16 @@ ], "require": { "php": "^8.1.0", - "brianium/paratest": "^7.2.3", - "nunomaduro/collision": "^7.7.0", + "brianium/paratest": "^7.2.4", + "nunomaduro/collision": "^7.8.0", "nunomaduro/termwind": "^1.15.1", "pestphp/pest-plugin": "^2.0.1", "pestphp/pest-plugin-arch": "^2.2.3", - "phpunit/phpunit": "^10.2.7" + "phpunit/phpunit": "^10.3.1" }, "conflict": { "webmozart/assert": "<1.11.0", - "phpunit/phpunit": ">10.2.7" + "phpunit/phpunit": ">10.3.1" }, "autoload": { "psr-4": { diff --git a/src/Plugins/Parallel/Paratest/WrapperRunner.php b/src/Plugins/Parallel/Paratest/WrapperRunner.php index 2a1db6bb..248c1bc5 100644 --- a/src/Plugins/Parallel/Paratest/WrapperRunner.php +++ b/src/Plugins/Parallel/Paratest/WrapperRunner.php @@ -13,6 +13,7 @@ use const DIRECTORY_SEPARATOR; use function dirname; use function file_get_contents; use function max; +use NunoMaduro\Collision\Adapters\Phpunit\Support\ResultReflection; use ParaTest\Coverage\CoverageMerger; use ParaTest\JUnit\LogMerger; use ParaTest\JUnit\Writer; @@ -273,7 +274,7 @@ final class WrapperRunner implements RunnerInterface assert($testResult instanceof TestResult); $testResultSum = new TestResult( - $testResultSum->numberOfTests() + $testResult->numberOfTests(), + (int) $testResultSum->hasTests() + (int) $testResult->hasTests(), $testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(), $testResultSum->numberOfAssertions() + $testResult->numberOfAssertions(), array_merge_recursive($testResultSum->testErroredEvents(), $testResult->testErroredEvents()), @@ -282,23 +283,23 @@ final class WrapperRunner implements RunnerInterface array_merge_recursive($testResultSum->testSuiteSkippedEvents(), $testResult->testSuiteSkippedEvents()), array_merge_recursive($testResultSum->testSkippedEvents(), $testResult->testSkippedEvents()), array_merge_recursive($testResultSum->testMarkedIncompleteEvents(), $testResult->testMarkedIncompleteEvents()), - array_merge_recursive($testResultSum->testTriggeredDeprecationEvents(), $testResult->testTriggeredDeprecationEvents()), - array_merge_recursive($testResultSum->testTriggeredPhpDeprecationEvents(), $testResult->testTriggeredPhpDeprecationEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitDeprecationEvents(), $testResult->testTriggeredPhpunitDeprecationEvents()), - array_merge_recursive($testResultSum->testTriggeredErrorEvents(), $testResult->testTriggeredErrorEvents()), - array_merge_recursive($testResultSum->testTriggeredNoticeEvents(), $testResult->testTriggeredNoticeEvents()), - array_merge_recursive($testResultSum->testTriggeredPhpNoticeEvents(), $testResult->testTriggeredPhpNoticeEvents()), - array_merge_recursive($testResultSum->testTriggeredWarningEvents(), $testResult->testTriggeredWarningEvents()), - array_merge_recursive($testResultSum->testTriggeredPhpWarningEvents(), $testResult->testTriggeredPhpWarningEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitErrorEvents(), $testResult->testTriggeredPhpunitErrorEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitWarningEvents(), $testResult->testTriggeredPhpunitWarningEvents()), array_merge_recursive($testResultSum->testRunnerTriggeredDeprecationEvents(), $testResult->testRunnerTriggeredDeprecationEvents()), array_merge_recursive($testResultSum->testRunnerTriggeredWarningEvents(), $testResult->testRunnerTriggeredWarningEvents()), + array_merge_recursive($testResultSum->errors(), $testResult->errors()), + array_merge_recursive($testResultSum->deprecations(), $testResult->deprecations()), + array_merge_recursive($testResultSum->notices(), $testResult->notices()), + array_merge_recursive($testResultSum->warnings(), $testResult->warnings()), + array_merge_recursive($testResultSum->phpDeprecations(), $testResult->phpDeprecations()), + array_merge_recursive($testResultSum->phpNotices(), $testResult->phpNotices()), + array_merge_recursive($testResultSum->phpWarnings(), $testResult->phpWarnings()), ); } $testResultSum = new TestResult( - $testResultSum->numberOfTests(), + ResultReflection::numberOfTests($testResultSum), $testResultSum->numberOfTestsRun(), $testResultSum->numberOfAssertions(), $testResultSum->testErroredEvents(), @@ -307,14 +308,7 @@ final class WrapperRunner implements RunnerInterface $testResultSum->testSuiteSkippedEvents(), $testResultSum->testSkippedEvents(), $testResultSum->testMarkedIncompleteEvents(), - $testResultSum->testTriggeredDeprecationEvents(), - $testResultSum->testTriggeredPhpDeprecationEvents(), $testResultSum->testTriggeredPhpunitDeprecationEvents(), - $testResultSum->testTriggeredErrorEvents(), - $testResultSum->testTriggeredNoticeEvents(), - $testResultSum->testTriggeredPhpNoticeEvents(), - $testResultSum->testTriggeredWarningEvents(), - $testResultSum->testTriggeredPhpWarningEvents(), $testResultSum->testTriggeredPhpunitErrorEvents(), $testResultSum->testTriggeredPhpunitWarningEvents(), $testResultSum->testRunnerTriggeredDeprecationEvents(), @@ -322,6 +316,13 @@ final class WrapperRunner implements RunnerInterface $testResultSum->testRunnerTriggeredWarningEvents(), fn (WarningTriggered $event): bool => ! str_contains($event->message(), 'No tests found') )), + $testResultSum->errors(), + $testResultSum->deprecations(), + $testResultSum->notices(), + $testResultSum->warnings(), + $testResultSum->phpDeprecations(), + $testResultSum->phpNotices(), + $testResultSum->phpWarnings(), ); $this->printer->printResults( diff --git a/src/Plugins/Parallel/Support/CompactPrinter.php b/src/Plugins/Parallel/Support/CompactPrinter.php index aff82fa4..d3175214 100644 --- a/src/Plugins/Parallel/Support/CompactPrinter.php +++ b/src/Plugins/Parallel/Support/CompactPrinter.php @@ -134,6 +134,10 @@ final class CompactPrinter null, null, null, + null, + null, + null, + null, ); $telemetry = new Info( diff --git a/src/Result.php b/src/Result.php index 418de7db..d9f1f0e3 100644 --- a/src/Result.php +++ b/src/Result.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace Pest; +use NunoMaduro\Collision\Adapters\Phpunit\Support\ResultReflection; use PHPUnit\TestRunner\TestResult\TestResult; use PHPUnit\TextUI\Configuration\Configuration; @@ -44,7 +45,7 @@ final class Result return self::SUCCESS_EXIT; } - if ($configuration->failOnEmptyTestSuite() && $result->numberOfTests() === 0) { + if ($configuration->failOnEmptyTestSuite() && ResultReflection::numberOfTests($result) === 0) { return self::FAILURE_EXIT; } @@ -53,9 +54,9 @@ final class Result $returnCode = self::FAILURE_EXIT; } - $warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents() - + $result->numberOfTestsWithTestTriggeredWarningEvents() - + $result->numberOfTestsWithTestTriggeredPhpWarningEvents(); + $warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents() + + +count($result->warnings()) + + count($result->phpWarnings()); if ($configuration->failOnWarning() && $warnings > 0) { $returnCode = self::FAILURE_EXIT; diff --git a/src/Support/StateGenerator.php b/src/Support/StateGenerator.php index da22aac5..cfaea382 100644 --- a/src/Support/StateGenerator.php +++ b/src/Support/StateGenerator.php @@ -74,64 +74,76 @@ final class StateGenerator )); } - foreach ($testResult->testTriggeredDeprecationEvents() as $testResultEvent) { - $testResultEvent = $testResultEvent[0]; + foreach ($testResult->deprecations() as $testResultEvent) { + foreach ($testResultEvent->triggeringTests() as $triggeringTest) { + ['test' => $test] = $triggeringTest; - $state->add(TestResult::fromPestParallelTestCase( - $testResultEvent->test(), - TestResult::DEPRECATED, - ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) - )); + $state->add(TestResult::fromPestParallelTestCase( + $test, + TestResult::DEPRECATED, + ThrowableBuilder::from(new TestOutcome($testResultEvent->description())) + )); + } } - foreach ($testResult->testTriggeredPhpDeprecationEvents() as $testResultEvent) { - $testResultEvent = $testResultEvent[0]; + foreach ($testResult->phpDeprecations() as $testResultEvent) { + foreach ($testResultEvent->triggeringTests() as $triggeringTest) { + ['test' => $test] = $triggeringTest; - $state->add(TestResult::fromPestParallelTestCase( - $testResultEvent->test(), - TestResult::DEPRECATED, - ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) - )); + $state->add(TestResult::fromPestParallelTestCase( + $test, + TestResult::DEPRECATED, + ThrowableBuilder::from(new TestOutcome($testResultEvent->description())) + )); + } } - foreach ($testResult->testTriggeredNoticeEvents() as $testResultEvent) { - $testResultEvent = $testResultEvent[0]; + foreach ($testResult->notices() as $testResultEvent) { + foreach ($testResultEvent->triggeringTests() as $triggeringTest) { + ['test' => $test] = $triggeringTest; - $state->add(TestResult::fromPestParallelTestCase( - $testResultEvent->test(), - TestResult::NOTICE, - ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) - )); + $state->add(TestResult::fromPestParallelTestCase( + $test, + TestResult::NOTICE, + ThrowableBuilder::from(new TestOutcome($testResultEvent->description())) + )); + } } - foreach ($testResult->testTriggeredPhpNoticeEvents() as $testResultEvent) { - $testResultEvent = $testResultEvent[0]; + foreach ($testResult->phpNotices() as $testResultEvent) { + foreach ($testResultEvent->triggeringTests() as $triggeringTest) { + ['test' => $test] = $triggeringTest; - $state->add(TestResult::fromPestParallelTestCase( - $testResultEvent->test(), - TestResult::NOTICE, - ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) - )); + $state->add(TestResult::fromPestParallelTestCase( + $test, + TestResult::NOTICE, + ThrowableBuilder::from(new TestOutcome($testResultEvent->description())) + )); + } } - foreach ($testResult->testTriggeredWarningEvents() as $testResultEvent) { - $testResultEvent = $testResultEvent[0]; + foreach ($testResult->warnings() as $testResultEvent) { + foreach ($testResultEvent->triggeringTests() as $triggeringTest) { + ['test' => $test] = $triggeringTest; - $state->add(TestResult::fromPestParallelTestCase( - $testResultEvent->test(), - TestResult::WARN, - ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) - )); + $state->add(TestResult::fromPestParallelTestCase( + $test, + TestResult::WARN, + ThrowableBuilder::from(new TestOutcome($testResultEvent->description())) + )); + } } - foreach ($testResult->testTriggeredPhpWarningEvents() as $testResultEvent) { - $testResultEvent = $testResultEvent[0]; + foreach ($testResult->phpWarnings() as $testResultEvent) { + foreach ($testResultEvent->triggeringTests() as $triggeringTest) { + ['test' => $test] = $triggeringTest; - $state->add(TestResult::fromPestParallelTestCase( - $testResultEvent->test(), - TestResult::WARN, - ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) - )); + $state->add(TestResult::fromPestParallelTestCase( + $test, + TestResult::WARN, + ThrowableBuilder::from(new TestOutcome($testResultEvent->description())) + )); + } } // for each test that passed, we need to add it to the state @@ -140,7 +152,7 @@ final class StateGenerator new TestMethod( "$i", // @phpstan-ignore-line '', // @phpstan-ignore-line - '', + '', // @phpstan-ignore-line 1, TestDoxBuilder::fromClassNameAndMethodName('', ''), // @phpstan-ignore-line MetadataCollection::fromArray([]), diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with______toString___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with______toString___2.snap deleted file mode 100644 index c2b4dc0a..00000000 --- a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with______toString___2.snap +++ /dev/null @@ -1,7 +0,0 @@ -
-
-
-

Snapshot

-
-
-
\ No newline at end of file diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with__toArray___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with__toArray___2.snap deleted file mode 100644 index afd4f5f9..00000000 --- a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with__toArray___2.snap +++ /dev/null @@ -1,3 +0,0 @@ -{ - "key": "
\n
\n
\n

Snapshot<\/h1>\n <\/div>\n <\/div>\n <\/div>" -} \ No newline at end of file diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with__toString___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with__toString___2.snap deleted file mode 100644 index c2b4dc0a..00000000 --- a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with__toString___2.snap +++ /dev/null @@ -1,7 +0,0 @@ -
-
-
-

Snapshot

-
-
-
\ No newline at end of file diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_array__2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_array__2.snap deleted file mode 100644 index afd4f5f9..00000000 --- a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_array__2.snap +++ /dev/null @@ -1,3 +0,0 @@ -{ - "key": "
\n
\n
\n

Snapshot<\/h1>\n <\/div>\n <\/div>\n <\/div>" -} \ No newline at end of file diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index f9b5bcd1..66c8c499 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -1210,4 +1210,4 @@ WARN Tests\Visual\Version - visual snapshot of help command output - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 860 passed (1979 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 860 passed (1975 assertions) \ No newline at end of file