feat: adds "phpunit/phpunit": "^10.3.1" support

This commit is contained in:
Nuno Maduro
2023-08-04 11:23:55 +01:00
parent cbcea04768
commit 3742e74adf
10 changed files with 86 additions and 88 deletions

View File

@ -18,16 +18,16 @@
], ],
"require": { "require": {
"php": "^8.1.0", "php": "^8.1.0",
"brianium/paratest": "^7.2.3", "brianium/paratest": "^7.2.4",
"nunomaduro/collision": "^7.7.0", "nunomaduro/collision": "^7.8.0",
"nunomaduro/termwind": "^1.15.1", "nunomaduro/termwind": "^1.15.1",
"pestphp/pest-plugin": "^2.0.1", "pestphp/pest-plugin": "^2.0.1",
"pestphp/pest-plugin-arch": "^2.2.3", "pestphp/pest-plugin-arch": "^2.2.3",
"phpunit/phpunit": "^10.2.7" "phpunit/phpunit": "^10.3.1"
}, },
"conflict": { "conflict": {
"webmozart/assert": "<1.11.0", "webmozart/assert": "<1.11.0",
"phpunit/phpunit": ">10.2.7" "phpunit/phpunit": ">10.3.1"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {

View File

@ -13,6 +13,7 @@ use const DIRECTORY_SEPARATOR;
use function dirname; use function dirname;
use function file_get_contents; use function file_get_contents;
use function max; use function max;
use NunoMaduro\Collision\Adapters\Phpunit\Support\ResultReflection;
use ParaTest\Coverage\CoverageMerger; use ParaTest\Coverage\CoverageMerger;
use ParaTest\JUnit\LogMerger; use ParaTest\JUnit\LogMerger;
use ParaTest\JUnit\Writer; use ParaTest\JUnit\Writer;
@ -273,7 +274,7 @@ final class WrapperRunner implements RunnerInterface
assert($testResult instanceof TestResult); assert($testResult instanceof TestResult);
$testResultSum = new TestResult( $testResultSum = new TestResult(
$testResultSum->numberOfTests() + $testResult->numberOfTests(), (int) $testResultSum->hasTests() + (int) $testResult->hasTests(),
$testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(), $testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(),
$testResultSum->numberOfAssertions() + $testResult->numberOfAssertions(), $testResultSum->numberOfAssertions() + $testResult->numberOfAssertions(),
array_merge_recursive($testResultSum->testErroredEvents(), $testResult->testErroredEvents()), 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->testSuiteSkippedEvents(), $testResult->testSuiteSkippedEvents()),
array_merge_recursive($testResultSum->testSkippedEvents(), $testResult->testSkippedEvents()), array_merge_recursive($testResultSum->testSkippedEvents(), $testResult->testSkippedEvents()),
array_merge_recursive($testResultSum->testMarkedIncompleteEvents(), $testResult->testMarkedIncompleteEvents()), 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->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->testTriggeredPhpunitErrorEvents(), $testResult->testTriggeredPhpunitErrorEvents()),
array_merge_recursive($testResultSum->testTriggeredPhpunitWarningEvents(), $testResult->testTriggeredPhpunitWarningEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitWarningEvents(), $testResult->testTriggeredPhpunitWarningEvents()),
array_merge_recursive($testResultSum->testRunnerTriggeredDeprecationEvents(), $testResult->testRunnerTriggeredDeprecationEvents()), array_merge_recursive($testResultSum->testRunnerTriggeredDeprecationEvents(), $testResult->testRunnerTriggeredDeprecationEvents()),
array_merge_recursive($testResultSum->testRunnerTriggeredWarningEvents(), $testResult->testRunnerTriggeredWarningEvents()), 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 = new TestResult(
$testResultSum->numberOfTests(), ResultReflection::numberOfTests($testResultSum),
$testResultSum->numberOfTestsRun(), $testResultSum->numberOfTestsRun(),
$testResultSum->numberOfAssertions(), $testResultSum->numberOfAssertions(),
$testResultSum->testErroredEvents(), $testResultSum->testErroredEvents(),
@ -307,14 +308,7 @@ final class WrapperRunner implements RunnerInterface
$testResultSum->testSuiteSkippedEvents(), $testResultSum->testSuiteSkippedEvents(),
$testResultSum->testSkippedEvents(), $testResultSum->testSkippedEvents(),
$testResultSum->testMarkedIncompleteEvents(), $testResultSum->testMarkedIncompleteEvents(),
$testResultSum->testTriggeredDeprecationEvents(),
$testResultSum->testTriggeredPhpDeprecationEvents(),
$testResultSum->testTriggeredPhpunitDeprecationEvents(), $testResultSum->testTriggeredPhpunitDeprecationEvents(),
$testResultSum->testTriggeredErrorEvents(),
$testResultSum->testTriggeredNoticeEvents(),
$testResultSum->testTriggeredPhpNoticeEvents(),
$testResultSum->testTriggeredWarningEvents(),
$testResultSum->testTriggeredPhpWarningEvents(),
$testResultSum->testTriggeredPhpunitErrorEvents(), $testResultSum->testTriggeredPhpunitErrorEvents(),
$testResultSum->testTriggeredPhpunitWarningEvents(), $testResultSum->testTriggeredPhpunitWarningEvents(),
$testResultSum->testRunnerTriggeredDeprecationEvents(), $testResultSum->testRunnerTriggeredDeprecationEvents(),
@ -322,6 +316,13 @@ final class WrapperRunner implements RunnerInterface
$testResultSum->testRunnerTriggeredWarningEvents(), $testResultSum->testRunnerTriggeredWarningEvents(),
fn (WarningTriggered $event): bool => ! str_contains($event->message(), 'No tests found') 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( $this->printer->printResults(

View File

@ -134,6 +134,10 @@ final class CompactPrinter
null, null,
null, null,
null, null,
null,
null,
null,
null,
); );
$telemetry = new Info( $telemetry = new Info(

View File

@ -4,6 +4,7 @@ declare(strict_types=1);
namespace Pest; namespace Pest;
use NunoMaduro\Collision\Adapters\Phpunit\Support\ResultReflection;
use PHPUnit\TestRunner\TestResult\TestResult; use PHPUnit\TestRunner\TestResult\TestResult;
use PHPUnit\TextUI\Configuration\Configuration; use PHPUnit\TextUI\Configuration\Configuration;
@ -44,7 +45,7 @@ final class Result
return self::SUCCESS_EXIT; return self::SUCCESS_EXIT;
} }
if ($configuration->failOnEmptyTestSuite() && $result->numberOfTests() === 0) { if ($configuration->failOnEmptyTestSuite() && ResultReflection::numberOfTests($result) === 0) {
return self::FAILURE_EXIT; return self::FAILURE_EXIT;
} }
@ -53,9 +54,9 @@ final class Result
$returnCode = self::FAILURE_EXIT; $returnCode = self::FAILURE_EXIT;
} }
$warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents() $warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents() +
+ $result->numberOfTestsWithTestTriggeredWarningEvents() +count($result->warnings())
+ $result->numberOfTestsWithTestTriggeredPhpWarningEvents(); + count($result->phpWarnings());
if ($configuration->failOnWarning() && $warnings > 0) { if ($configuration->failOnWarning() && $warnings > 0) {
$returnCode = self::FAILURE_EXIT; $returnCode = self::FAILURE_EXIT;

View File

@ -74,64 +74,76 @@ final class StateGenerator
)); ));
} }
foreach ($testResult->testTriggeredDeprecationEvents() as $testResultEvent) { foreach ($testResult->deprecations() as $testResultEvent) {
$testResultEvent = $testResultEvent[0]; foreach ($testResultEvent->triggeringTests() as $triggeringTest) {
['test' => $test] = $triggeringTest;
$state->add(TestResult::fromPestParallelTestCase( $state->add(TestResult::fromPestParallelTestCase(
$testResultEvent->test(), $test,
TestResult::DEPRECATED, TestResult::DEPRECATED,
ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) ThrowableBuilder::from(new TestOutcome($testResultEvent->description()))
)); ));
}
} }
foreach ($testResult->testTriggeredPhpDeprecationEvents() as $testResultEvent) { foreach ($testResult->phpDeprecations() as $testResultEvent) {
$testResultEvent = $testResultEvent[0]; foreach ($testResultEvent->triggeringTests() as $triggeringTest) {
['test' => $test] = $triggeringTest;
$state->add(TestResult::fromPestParallelTestCase( $state->add(TestResult::fromPestParallelTestCase(
$testResultEvent->test(), $test,
TestResult::DEPRECATED, TestResult::DEPRECATED,
ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) ThrowableBuilder::from(new TestOutcome($testResultEvent->description()))
)); ));
}
} }
foreach ($testResult->testTriggeredNoticeEvents() as $testResultEvent) { foreach ($testResult->notices() as $testResultEvent) {
$testResultEvent = $testResultEvent[0]; foreach ($testResultEvent->triggeringTests() as $triggeringTest) {
['test' => $test] = $triggeringTest;
$state->add(TestResult::fromPestParallelTestCase( $state->add(TestResult::fromPestParallelTestCase(
$testResultEvent->test(), $test,
TestResult::NOTICE, TestResult::NOTICE,
ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) ThrowableBuilder::from(new TestOutcome($testResultEvent->description()))
)); ));
}
} }
foreach ($testResult->testTriggeredPhpNoticeEvents() as $testResultEvent) { foreach ($testResult->phpNotices() as $testResultEvent) {
$testResultEvent = $testResultEvent[0]; foreach ($testResultEvent->triggeringTests() as $triggeringTest) {
['test' => $test] = $triggeringTest;
$state->add(TestResult::fromPestParallelTestCase( $state->add(TestResult::fromPestParallelTestCase(
$testResultEvent->test(), $test,
TestResult::NOTICE, TestResult::NOTICE,
ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) ThrowableBuilder::from(new TestOutcome($testResultEvent->description()))
)); ));
}
} }
foreach ($testResult->testTriggeredWarningEvents() as $testResultEvent) { foreach ($testResult->warnings() as $testResultEvent) {
$testResultEvent = $testResultEvent[0]; foreach ($testResultEvent->triggeringTests() as $triggeringTest) {
['test' => $test] = $triggeringTest;
$state->add(TestResult::fromPestParallelTestCase( $state->add(TestResult::fromPestParallelTestCase(
$testResultEvent->test(), $test,
TestResult::WARN, TestResult::WARN,
ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) ThrowableBuilder::from(new TestOutcome($testResultEvent->description()))
)); ));
}
} }
foreach ($testResult->testTriggeredPhpWarningEvents() as $testResultEvent) { foreach ($testResult->phpWarnings() as $testResultEvent) {
$testResultEvent = $testResultEvent[0]; foreach ($testResultEvent->triggeringTests() as $triggeringTest) {
['test' => $test] = $triggeringTest;
$state->add(TestResult::fromPestParallelTestCase( $state->add(TestResult::fromPestParallelTestCase(
$testResultEvent->test(), $test,
TestResult::WARN, TestResult::WARN,
ThrowableBuilder::from(new TestOutcome($testResultEvent->message())) ThrowableBuilder::from(new TestOutcome($testResultEvent->description()))
)); ));
}
} }
// for each test that passed, we need to add it to the state // for each test that passed, we need to add it to the state
@ -140,7 +152,7 @@ final class StateGenerator
new TestMethod( new TestMethod(
"$i", // @phpstan-ignore-line "$i", // @phpstan-ignore-line
'', // @phpstan-ignore-line '', // @phpstan-ignore-line
'', '', // @phpstan-ignore-line
1, 1,
TestDoxBuilder::fromClassNameAndMethodName('', ''), // @phpstan-ignore-line TestDoxBuilder::fromClassNameAndMethodName('', ''), // @phpstan-ignore-line
MetadataCollection::fromArray([]), MetadataCollection::fromArray([]),

View File

@ -1,7 +0,0 @@
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Snapshot</h1>
</div>
</div>
</div>

View File

@ -1,3 +0,0 @@
{
"key": " <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <h1>Snapshot<\/h1>\n <\/div>\n <\/div>\n <\/div>"
}

View File

@ -1,7 +0,0 @@
<div class="container">
<div class="row">
<div class="col-md-12">
<h1>Snapshot</h1>
</div>
</div>
</div>

View File

@ -1,3 +0,0 @@
{
"key": " <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <h1>Snapshot<\/h1>\n <\/div>\n <\/div>\n <\/div>"
}

View File

@ -1210,4 +1210,4 @@
WARN Tests\Visual\Version WARN Tests\Visual\Version
- visual snapshot of help command output - visual snapshot of help command output
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 860 passed (1979 assertions) Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 860 passed (1975 assertions)