From f720be862ea4aa9b77ae18ed17f3bf8be1589dcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20As=CC=A7an?= Date: Thu, 12 Sep 2024 02:45:37 +0300 Subject: [PATCH 001/134] Add reference method --- src/PendingCalls/TestCall.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 1b02ed1ef..6f1732b7b 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -48,6 +48,13 @@ final class TestCall */ private readonly bool $descriptionLess; + /** + * This property is not actually used in the codebase, it's only here to make Rector happy. + * + * @var string|array + */ + public array|string $references; + /** * Creates a new Pending Call. */ @@ -615,6 +622,21 @@ public function coversNothing(): self return $this; } + /** + * Adds a reference to the tested method or class. + * This helps to link test cases to the source code + * for easier navigation during development. + * + * @param string|array $classes + */ + public function reference(string|array ...$classes): self + { + // For rector + $this->references = $classes; // @phpstan-ignore-line + + return $this; + } + /** * Informs the test runner that no expectations happen in this test, * and its purpose is simply to check whether the given code can From bab193e7e130fd0a631ef77b90ee8c0ab23a8aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20As=CC=A7an?= Date: Thu, 12 Sep 2024 03:24:36 +0300 Subject: [PATCH 002/134] Fix property type --- src/PendingCalls/TestCall.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 6f1732b7b..aa32827e9 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -51,9 +51,9 @@ final class TestCall /** * This property is not actually used in the codebase, it's only here to make Rector happy. * - * @var string|array + * @var array */ - public array|string $references; + public array $references; /** * Creates a new Pending Call. @@ -632,7 +632,7 @@ public function coversNothing(): self public function reference(string|array ...$classes): self { // For rector - $this->references = $classes; // @phpstan-ignore-line + $this->references = $classes; return $this; } From 668685498fa4caca192655c1f8ef1c473ab9f5b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20As=CC=A7an?= Date: Thu, 12 Sep 2024 03:51:20 +0300 Subject: [PATCH 003/134] Fix phpdoc type-hints --- src/PendingCalls/TestCall.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index aa32827e9..23c2931fe 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -51,7 +51,7 @@ final class TestCall /** * This property is not actually used in the codebase, it's only here to make Rector happy. * - * @var array + * @var array> */ public array $references; @@ -623,11 +623,10 @@ public function coversNothing(): self } /** - * Adds a reference to the tested method or class. - * This helps to link test cases to the source code - * for easier navigation during development. + * Adds a reference to the tested method or class. This helps to link test + * cases to the source code for easier navigation. * - * @param string|array $classes + * @param array|class-string ...$classes */ public function reference(string|array ...$classes): self { From 169b76458ecbc076eabc8be526c557dc224b58d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20As=CC=A7an?= Date: Thu, 12 Sep 2024 11:15:30 +0300 Subject: [PATCH 004/134] make the name of the method plural --- src/PendingCalls/TestCall.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 23c2931fe..ad7a8a91d 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -628,7 +628,7 @@ public function coversNothing(): self * * @param array|class-string ...$classes */ - public function reference(string|array ...$classes): self + public function references(string|array ...$classes): self { // For rector $this->references = $classes; From ab0b4a1b4e62eb81f3e3c86a4b0b93a67ebdfacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20A=C5=9Fan?= Date: Thu, 12 Sep 2024 13:09:45 +0300 Subject: [PATCH 005/134] Update src/PendingCalls/TestCall.php Co-authored-by: Owen Voke --- src/PendingCalls/TestCall.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index ad7a8a91d..50ddddc3d 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -623,8 +623,8 @@ public function coversNothing(): self } /** - * Adds a reference to the tested method or class. This helps to link test - * cases to the source code for easier navigation. + * Adds one or more references to the tested method or class. This helps + * to link test cases to the source code for easier navigation. * * @param array|class-string ...$classes */ From 74ff3b8cd94e975ffccd26895a2a58361b35117e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20A=C5=9Fan?= Date: Thu, 12 Sep 2024 13:09:57 +0300 Subject: [PATCH 006/134] Update src/PendingCalls/TestCall.php Co-authored-by: Owen Voke --- src/PendingCalls/TestCall.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 50ddddc3d..46e1acb9e 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -630,8 +630,7 @@ public function coversNothing(): self */ public function references(string|array ...$classes): self { - // For rector - $this->references = $classes; + assert($classes !== []); return $this; } From ba7eb70a5d91f9a5e60750fb393a316efcf4fc9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20As=CC=A7an?= Date: Thu, 12 Sep 2024 13:11:12 +0300 Subject: [PATCH 007/134] Remove unnecessary property --- src/PendingCalls/TestCall.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 46e1acb9e..1208b8099 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -48,13 +48,6 @@ final class TestCall */ private readonly bool $descriptionLess; - /** - * This property is not actually used in the codebase, it's only here to make Rector happy. - * - * @var array> - */ - public array $references; - /** * Creates a new Pending Call. */ From e3bfcbe5f14cded87cf7f4a169bcc7646dd829ba Mon Sep 17 00:00:00 2001 From: tal7aouy Date: Mon, 16 Sep 2024 13:36:34 +0100 Subject: [PATCH 008/134] Add slugify method --- src/Mixins/Expectation.php | 19 ++++++++++++++++++- src/Support/Str.php | 11 ++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Mixins/Expectation.php b/src/Mixins/Expectation.php index f802bc11f..eb72fec0e 100644 --- a/src/Mixins/Expectation.php +++ b/src/Mixins/Expectation.php @@ -661,7 +661,7 @@ public function toHaveKeys(array $keys, string $message = ''): self { foreach ($keys as $k => $key) { if (is_array($key)) { - $this->toHaveKeys(array_keys(Arr::dot($key, $k.'.')), $message); + $this->toHaveKeys(array_keys(Arr::dot($key, $k . '.')), $message); } else { $this->toHaveKey($key, message: $message); } @@ -1159,4 +1159,21 @@ public function toBeUrl(string $message = ''): self return $this; } + + /** + * Asserts that the value can be converted to a slug + * + * @return self + */ + public function toBeSlug(string $message = ''): self + { + if ($message === '') { + $message = "Failed asserting that {$this->value} can be converted to a slug."; + } + + $slug = Str::slugify((string) $this->value); + Assert::assertNotEmpty($slug, $message); + + return $this; + } } diff --git a/src/Support/Str.php b/src/Support/Str.php index 754749e7e..ccaf06f72 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -61,7 +61,7 @@ public static function evaluable(string $code): string { $code = str_replace('_', '__', $code); - $code = self::PREFIX.str_replace(' ', '_', $code); + $code = self::PREFIX . str_replace(' ', '_', $code); // sticks to PHP8.2 function naming rules https://www.php.net/manual/en/functions.user-defined.php return (string) preg_replace('/[^a-zA-Z0-9_\x80-\xff]/', '_', $code); @@ -116,4 +116,13 @@ public static function isUrl(string $value): bool { return (bool) filter_var($value, FILTER_VALIDATE_URL); } + + /** + * Converts the given `$target` to a URL-friendly "slug". + */ + public static function slugify(string $target): string + { + $target = preg_replace('/[^a-zA-Z0-9]+/', '-', $target); + return strtolower(trim($target, '-')); + } } From 92bc1decd92b795ae644923f20eba2a60c82f932 Mon Sep 17 00:00:00 2001 From: tal7aouy Date: Mon, 16 Sep 2024 13:41:13 +0100 Subject: [PATCH 009/134] Add tests for toBeSlug method --- tests/Features/Expect/toBeSlug.php | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 tests/Features/Expect/toBeSlug.php diff --git a/tests/Features/Expect/toBeSlug.php b/tests/Features/Expect/toBeSlug.php new file mode 100644 index 000000000..2d7c19f8a --- /dev/null +++ b/tests/Features/Expect/toBeSlug.php @@ -0,0 +1,24 @@ +toBeSlug() + ->and('Another Test String')->toBeSlug(); +}); + +test('failures', function () { + expect('')->toBeSlug(); +})->throws(ExpectationFailedException::class); + +test('failures with custom message', function () { + expect('')->toBeSlug('oh no!'); +})->throws(ExpectationFailedException::class, 'oh no!'); + +test('failures with default message', function () { + expect('')->toBeSlug(); +})->throws(ExpectationFailedException::class, 'Failed asserting that can be converted to a slug.'); + +test('not failures', function () { + expect('This is a Test String!')->not->toBeSlug(); +})->throws(ExpectationFailedException::class); From dd7d150caa42880f59de2d37abb93d958532e8c1 Mon Sep 17 00:00:00 2001 From: Morten Scheel Date: Fri, 4 Oct 2024 13:44:10 +0200 Subject: [PATCH 010/134] Add toNotIncludeSuspiciousCharacters() expectation --- src/Expectation.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Expectation.php b/src/Expectation.php index ebfd63023..94097ea8c 100644 --- a/src/Expectation.php +++ b/src/Expectation.php @@ -885,6 +885,21 @@ public function toUseNothing(): ArchExpectation return ToUseNothing::make($this); } + /** + * Asserts that the source code of the given expectation target does not include suspicious characters. + */ + public function toNotIncludeSuspiciousCharacters(): ArchExpectation + { + $checker = new Spoofchecker(); + + return Targeted::make( + $this, + fn (ObjectDescription $object) => ! $checker->isSuspicious(file_get_contents($object->path)), + 'to not include suspicious characters', + FileLineFinder::where(fn (string $line) => $checker->isSuspicious($line)), + ); + } + /** * Not supported. */ From 53c94600cbcde285a775f846339682497c9c2065 Mon Sep 17 00:00:00 2001 From: sebastianfaber Date: Wed, 16 Oct 2024 22:19:08 +0200 Subject: [PATCH 011/134] fix: handle -c flag same as --configuration --- src/Plugins/Configuration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Plugins/Configuration.php b/src/Plugins/Configuration.php index acae8fb41..a41a8fe08 100644 --- a/src/Plugins/Configuration.php +++ b/src/Plugins/Configuration.php @@ -34,7 +34,7 @@ final class Configuration implements HandlesArguments, Terminable */ public function handleArguments(array $arguments): array { - if ($this->hasArgument('--configuration', $arguments) || $this->hasCustomConfigurationFile()) { + if ($this->hasArgument('--configuration', $arguments) || $this->hasArgument('-c', $arguments) || $this->hasCustomConfigurationFile()) { return $arguments; } From 5331b44a1801960ada896dfc89d4b92db0117e2b Mon Sep 17 00:00:00 2001 From: olivernybroe Date: Wed, 20 Nov 2024 11:54:36 +0100 Subject: [PATCH 012/134] Allow custom arch expectations --- src/Expectation.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Expectation.php b/src/Expectation.php index ebfd63023..3951bc045 100644 --- a/src/Expectation.php +++ b/src/Expectation.php @@ -330,7 +330,7 @@ public function when(callable|bool $condition, callable $callback): self * @param array $parameters * @return Expectation|HigherOrderExpectation, TValue> */ - public function __call(string $method, array $parameters): Expectation|HigherOrderExpectation|PendingArchExpectation + public function __call(string $method, array $parameters): Expectation|HigherOrderExpectation|PendingArchExpectation|ArchExpectation { if (! self::hasMethod($method)) { if (! is_object($this->value) && method_exists(PendingArchExpectation::class, $method)) { @@ -355,6 +355,10 @@ public function __call(string $method, array $parameters): Expectation|HigherOrd $reflectionClosure = new \ReflectionFunction($closure); $expectation = $reflectionClosure->getClosureThis(); + if ($reflectionClosure->getReturnType()?->__toString() === ArchExpectation::class) { + return $closure(...$parameters); + } + assert(is_object($expectation)); ExpectationPipeline::for($closure) From b5b8fab09b29c07ad12b1c35456c0df997ac6de5 Mon Sep 17 00:00:00 2001 From: jshayes Date: Sat, 12 Oct 2024 01:06:16 -0400 Subject: [PATCH 013/134] Fix an issue where beforeEach/afterEach functions were called on other describe blocks with the same name --- src/Factories/TestCaseMethodFactory.php | 2 +- src/PendingCalls/Concerns/Describable.php | 4 +- src/PendingCalls/DescribeCall.php | 14 +- src/Support/Description.php | 15 + src/Support/Str.php | 2 +- tests/.pest/snapshots/Visual/Todo/todo.snap | 5 +- .../Visual/Todo/todo_in_parallel.snap | 5 +- tests/.pest/snapshots/Visual/Todo/todos.snap | 5 +- .../Visual/Todo/todos_in_parallel.snap | 5 +- tests/.snapshots/success.txt | 1169 ++++++++++++++++- tests/Features/AfterEach.php | 52 + tests/Features/BeforeEach.php | 75 ++ tests/Features/DatasetsTests.php | 28 + tests/Features/Note.php | 30 + tests/Features/Repeat.php | 14 + tests/Features/Skip.php | 68 + tests/Features/Todo.php | 34 + 17 files changed, 1442 insertions(+), 85 deletions(-) create mode 100644 src/Support/Description.php diff --git a/src/Factories/TestCaseMethodFactory.php b/src/Factories/TestCaseMethodFactory.php index fb763c758..a9bbb0ee9 100644 --- a/src/Factories/TestCaseMethodFactory.php +++ b/src/Factories/TestCaseMethodFactory.php @@ -32,7 +32,7 @@ final class TestCaseMethodFactory /** * The test's describing, if any. * - * @var array + * @var array */ public array $describing = []; diff --git a/src/PendingCalls/Concerns/Describable.php b/src/PendingCalls/Concerns/Describable.php index 06a7eab71..0208ea4b5 100644 --- a/src/PendingCalls/Concerns/Describable.php +++ b/src/PendingCalls/Concerns/Describable.php @@ -12,14 +12,14 @@ trait Describable /** * Note: this is property is not used; however, it gets added automatically by rector php. * - * @var array + * @var array */ public array $__describing; /** * The describing of the test case. * - * @var array + * @var array */ public array $describing = []; } diff --git a/src/PendingCalls/DescribeCall.php b/src/PendingCalls/DescribeCall.php index b015595c7..e6d4bc297 100644 --- a/src/PendingCalls/DescribeCall.php +++ b/src/PendingCalls/DescribeCall.php @@ -6,6 +6,7 @@ use Closure; use Pest\Support\Backtrace; +use Pest\Support\Description; use Pest\TestSuite; /** @@ -16,7 +17,7 @@ final class DescribeCall /** * The current describe call. * - * @var array + * @var array */ private static array $describing = []; @@ -25,22 +26,27 @@ final class DescribeCall */ private ?BeforeEachCall $currentBeforeEachCall = null; + /** + * The unique description for this describe block + */ + private readonly Description $description; + /** * Creates a new Pending Call. */ public function __construct( public readonly TestSuite $testSuite, public readonly string $filename, - public readonly string $description, + string $description, public readonly Closure $tests ) { - // + $this->description = new Description($description); } /** * What is the current describing. * - * @return array + * @return array */ public static function describing(): array { diff --git a/src/Support/Description.php b/src/Support/Description.php new file mode 100644 index 000000000..01fc45a68 --- /dev/null +++ b/src/Support/Description.php @@ -0,0 +1,15 @@ +description; + } +} diff --git a/src/Support/Str.php b/src/Support/Str.php index 0e654bc80..6bdcc5554 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -104,7 +104,7 @@ public static function isUuid(string $value): bool /** * Creates a describe block as `$describeDescription` → `$testDescription` format. * - * @param array $describeDescriptions + * @param array $describeDescriptions */ public static function describe(array $describeDescriptions, string $testDescription): string { diff --git a/tests/.pest/snapshots/Visual/Todo/todo.snap b/tests/.pest/snapshots/Visual/Todo/todo.snap index 5ab4f7fa6..c50794f7a 100644 --- a/tests/.pest/snapshots/Visual/Todo/todo.snap +++ b/tests/.pest/snapshots/Visual/Todo/todo.snap @@ -15,7 +15,7 @@ ↓ todo on describe → should not fail ↓ todo on describe → should run - TODO Tests\Features\Todo - 28 todos + TODO Tests\Features\Todo - 29 todos ↓ something todo later ↓ something todo later chained ↓ something todo later chained and with function body @@ -45,6 +45,7 @@ // nested describe note // test note ↓ todo on describe → todo block → it should not execute + ↓ todo on describe with matching name → describe block → it should not execute ↓ todo on test after describe block ↓ todo with note on test after describe block // test note @@ -80,6 +81,6 @@ PASS Tests\CustomTestCase\ParentTest ✓ override method - Tests: 38 todos, 3 passed (20 assertions) + Tests: 39 todos, 3 passed (21 assertions) Duration: x.xxs diff --git a/tests/.pest/snapshots/Visual/Todo/todo_in_parallel.snap b/tests/.pest/snapshots/Visual/Todo/todo_in_parallel.snap index 5ab4f7fa6..c50794f7a 100644 --- a/tests/.pest/snapshots/Visual/Todo/todo_in_parallel.snap +++ b/tests/.pest/snapshots/Visual/Todo/todo_in_parallel.snap @@ -15,7 +15,7 @@ ↓ todo on describe → should not fail ↓ todo on describe → should run - TODO Tests\Features\Todo - 28 todos + TODO Tests\Features\Todo - 29 todos ↓ something todo later ↓ something todo later chained ↓ something todo later chained and with function body @@ -45,6 +45,7 @@ // nested describe note // test note ↓ todo on describe → todo block → it should not execute + ↓ todo on describe with matching name → describe block → it should not execute ↓ todo on test after describe block ↓ todo with note on test after describe block // test note @@ -80,6 +81,6 @@ PASS Tests\CustomTestCase\ParentTest ✓ override method - Tests: 38 todos, 3 passed (20 assertions) + Tests: 39 todos, 3 passed (21 assertions) Duration: x.xxs diff --git a/tests/.pest/snapshots/Visual/Todo/todos.snap b/tests/.pest/snapshots/Visual/Todo/todos.snap index 5ab4f7fa6..c50794f7a 100644 --- a/tests/.pest/snapshots/Visual/Todo/todos.snap +++ b/tests/.pest/snapshots/Visual/Todo/todos.snap @@ -15,7 +15,7 @@ ↓ todo on describe → should not fail ↓ todo on describe → should run - TODO Tests\Features\Todo - 28 todos + TODO Tests\Features\Todo - 29 todos ↓ something todo later ↓ something todo later chained ↓ something todo later chained and with function body @@ -45,6 +45,7 @@ // nested describe note // test note ↓ todo on describe → todo block → it should not execute + ↓ todo on describe with matching name → describe block → it should not execute ↓ todo on test after describe block ↓ todo with note on test after describe block // test note @@ -80,6 +81,6 @@ PASS Tests\CustomTestCase\ParentTest ✓ override method - Tests: 38 todos, 3 passed (20 assertions) + Tests: 39 todos, 3 passed (21 assertions) Duration: x.xxs diff --git a/tests/.pest/snapshots/Visual/Todo/todos_in_parallel.snap b/tests/.pest/snapshots/Visual/Todo/todos_in_parallel.snap index 5ab4f7fa6..c50794f7a 100644 --- a/tests/.pest/snapshots/Visual/Todo/todos_in_parallel.snap +++ b/tests/.pest/snapshots/Visual/Todo/todos_in_parallel.snap @@ -15,7 +15,7 @@ ↓ todo on describe → should not fail ↓ todo on describe → should run - TODO Tests\Features\Todo - 28 todos + TODO Tests\Features\Todo - 29 todos ↓ something todo later ↓ something todo later chained ↓ something todo later chained and with function body @@ -45,6 +45,7 @@ // nested describe note // test note ↓ todo on describe → todo block → it should not execute + ↓ todo on describe with matching name → describe block → it should not execute ↓ todo on test after describe block ↓ todo with note on test after describe block // test note @@ -80,6 +81,6 @@ PASS Tests\CustomTestCase\ParentTest ✓ override method - Tests: 38 todos, 3 passed (20 assertions) + Tests: 39 todos, 3 passed (21 assertions) Duration: x.xxs diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 90b1b0852..d142725f7 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -10,15 +10,75 @@ PASS Tests\Environments\Windows ✓ global functions are loaded - WARN Tests\Features\After + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\After)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\After)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\After)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Features\After ✓ it can run after test ✓ it can run after test twice - - it does not run when skipped - - something → it does not run when skipped + ✓ it does not run when skipped + ✓ something → it does not run when skipped ✓ something → it can run after test ✓ something 2 → it can run after test ✓ high order test - - high order test with skip + ✓ high order test with skip ✓ post 'foo' → defer Closure Object () → expect Closure Object () → toBe 1 PASS Tests\Features\AfterAll @@ -29,6 +89,12 @@ ✓ it gets executed after the test ✓ outer → inner → it does not get executed before the test ✓ outer → inner → it should call all parent afterEach functions + ✓ matching describe block names → outer → middle → inner → it does not get executed before the test + ✓ matching describe block names → outer → middle → inner → it should call all parent afterEach functions + ✓ matching describe block names → outer → middle → it does not get executed before the test + ✓ matching describe block names → outer → middle → it should not call afterEach functions for sibling describe blocks with the same name + ✓ matching describe block names → outer → inner → it does not get executed before the test + ✓ matching describe block names → outer → inner → it should not call afterEach functions for descendent of sibling describe blocks with the same name PASS Tests\Features\Assignee ✓ it may be associated with an assignee [@nunomaduro, @taylorotwell] @@ -45,16 +111,83 @@ ✓ outer → inner → it should call all parent beforeEach functions ✓ with expectations → nested block → test ✓ with expectations → test + ✓ matching describe block names → outer → middle → inner → it should call all parent beforeEach functions + ✓ matching describe block names → outer → middle → it should not call beforeEach functions for sibling describe blocks with the same name + ✓ matching describe block names → outer → inner → it should not call beforeEach functions for descendent of sibling describe blocks with the same name + ✓ matching name → it should call the before each + ✓ matching name → it should not call the before each on the describe block with the same name + ✓ called on all tests → beforeEach should be called + ✓ called on all tests → beforeEach should be called for all tests PASS Tests\Features\BeforeEachProxiesToTestCallWithExpectations ✓ runs 1 ✓ runs 2 ✓ runs 3 - WARN Tests\Features\BeforeEachProxiesToTestCallWithSkip - - does not run 1 - - does not run 2 - - does not run 3 + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\BeforeEachProxiesToTestCallWithSkip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\BeforeEachProxiesToTestCallWithSkip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\BeforeEachProxiesToTestCallWithSkip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Features\BeforeEachProxiesToTestCallWithSkip + ✓ does not run 1 + ✓ does not run 2 + ✓ does not run 3 TODO Tests\Features\BeforeEachProxiesToTestCallWithTodo - 4 todos ↓ is marked as todo 1 @@ -62,9 +195,29 @@ ↓ is marked as todo 3 ↓ shouldBeMarkedAsTodo - WARN Tests\Features\Coverage + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'Coverage is not...') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Coverage)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Features\Coverage ✓ it has plugin - - it adds coverage if --coverage exist → Coverage is not available + ✓ it adds coverage if --coverage exist ✓ it adds coverage if --min exist ✓ it generates coverage based on file input @@ -187,6 +340,11 @@ ✓ with on nested describe → nested → describe → it should include the with value from all parent describe blocks with (1) / (2) ✓ with on nested describe → nested → describe → should include the with value from all parent describe blocks and the test with (1) / (2) / (3) ✓ with on nested describe → nested → after inner describe block with (1) + ✓ matching describe block names → outer → before inner describe block with (1) + ✓ matching describe block names → outer → inner → it should include the with value from all parent describe blocks with (1) / (2) + ✓ matching describe block names → outer → inner → should include the with value from all parent describe blocks and the test with (1) / (2) / (3) + ✓ matching describe block names → outer → inner → it should not include the value from the other describe block with the same name with (1) + ✓ matching describe block names → outer → after inner describe block with (1) ✓ after describe block with (5) ✓ it may be used with high order after describe block with dataset "formal" ✓ it may be used with high order after describe block with dataset "informal" @@ -213,9 +371,102 @@ ✓ it is a test ✓ it uses correct parent class - DEPR Tests\Features\Deprecated - ! deprecated → str_contains(): Passing null to parameter #1 ($haystack) of type string is deprecated // tests/Features/Deprecated.php:4 - ! user deprecated → Since foo 1.0: This is a deprecation description // tests/Features/Deprecated.php:10 + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(192): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testPhpDeprecat...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(757): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(153): PHPUnit\Event\DispatchingEmitter->testTriggeredPhpDeprecation(Object(PHPUnit\Event\Code\TestMethod), 'str_contains():...', '/Users/justinha...', 4, false, false, false, Object(PHPUnit\Event\Code\IssueTrigger\DirectTrigger)) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(8192, 'str_contains():...', '/Users/justinha...', 4) +#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php(4): str_contains(NULL, NULL) +#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Deprecated->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php:3}() +#10 [internal function]: P\Tests\Features\Deprecated->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Deprecated->{closure:Pest\Concerns\Testable::__callClosure():419}() +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Deprecated->__callClosure(Object(Closure), Array) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Deprecated->__runTest(Object(Closure)) +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Deprecated->__pest_evaluable_deprecated() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Deprecated)) +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#28 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(192): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testPhpDeprecat...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(757): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(153): PHPUnit\Event\DispatchingEmitter->testTriggeredPhpDeprecation(Object(PHPUnit\Event\Code\TestMethod), 'str_contains():...', '/Users/justinha...', 4, false, false, false, Object(PHPUnit\Event\Code\IssueTrigger\DirectTrigger)) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(8192, 'str_contains():...', '/Users/justinha...', 4) +#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php(4): str_contains(NULL, NULL) +#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Deprecated->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php:3}() +#10 [internal function]: P\Tests\Features\Deprecated->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Deprecated->{closure:Pest\Concerns\Testable::__callClosure():419}() +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Deprecated->__callClosure(Object(Closure), Array) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Deprecated->__runTest(Object(Closure)) +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Deprecated->__pest_evaluable_deprecated() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Deprecated)) +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#28 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(168): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testDeprecation...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\DeprecationTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\DeprecationTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(782): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\DeprecationTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(169): PHPUnit\Event\DispatchingEmitter->testTriggeredDeprecation(Object(PHPUnit\Event\Code\TestMethod), 'Since foo 1.0: ...', '/Users/justinha...', 10, false, false, false, Object(PHPUnit\Event\Code\IssueTrigger\DirectTrigger)) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(16384, 'Since foo 1.0: ...', '/Users/justinha...', 10) +#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php(10): trigger_error('Since foo 1.0: ...', 16384) +#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Deprecated->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php:9}() +#10 [internal function]: P\Tests\Features\Deprecated->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Deprecated->{closure:Pest\Concerns\Testable::__callClosure():419}() +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Deprecated->__callClosure(Object(Closure), Array) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Deprecated->__runTest(Object(Closure)) +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Deprecated->__pest_evaluable_user_deprecated() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Deprecated)) +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#28 {main} + + PASS Tests\Features\Deprecated + ✓ deprecated + ✓ user deprecated PASS Tests\Features\Describe - 5 todos ✓ before each @@ -1030,9 +1281,41 @@ ✓ it may fail ✓ it may fail with the given message - WARN Tests\Features\Helpers + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(287): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testWarningTrig...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\WarningTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(875): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(141): PHPUnit\Event\DispatchingEmitter->testTriggeredWarning(Object(PHPUnit\Event\Code\TestMethod), 'Undefined prope...', '/Users/justinha...', 49, false, false) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(512, 'Undefined prope...', '/Users/justinha...', 49) +#8 /Users/justinhayes/Development/packages/forks/pest/src/Support/HigherOrderTapProxy.php(49): trigger_error('Undefined prope...', 512) +#9 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Helpers.php(14): Pest\Support\HigherOrderTapProxy->__get('wqdwqdqw') +#10 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Helpers->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Helpers.php:13}() +#11 [internal function]: P\Tests\Features\Helpers->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#12 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#13 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Helpers->{closure:Pest\Concerns\Testable::__callClosure():419}() +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Helpers->__callClosure(Object(Closure), Array) +#16 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Helpers->__runTest(Object(Closure)) +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Helpers->__pest_evaluable_it_gets_null_if_property_do_not_exist() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Helpers)) +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#25 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#26 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#28 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#29 {main} + + PASS Tests\Features\Helpers ✓ it can set/get properties on $this - ! it gets null if property do not exist → Undefined property Tests\Features\Helpers::$wqdwqdqw + ✓ it gets null if property do not exist ✓ it allows to call underlying protected/private methods ✓ it throws error if method do not exist ✓ it can forward unexpected calls to any global function @@ -1050,15 +1333,15 @@ ✓ it can pass shared datasets into callables with (1) ✓ it can pass shared datasets into callables with (2) - WARN Tests\Features\Incompleted - … incompleted - … it is incompleted - … it is incompleted even with method calls like skip - … it is incompleted even with method calls like group + PASS Tests\Features\Incompleted + ✓ incompleted + ✓ it is incompleted + ✓ it is incompleted even with method calls like skip + ✓ it is incompleted even with method calls like group ✓ it is not incompleted because of expect ✓ it is not incompleted because of assert ✓ it is not incompleted because of test with assertions - … a "describe" group of tests → it is incompleted + ✓ a "describe" group of tests → it is incompleted PASS Tests\Features\Issue ✓ it may be associated with an issue #1, #2 @@ -1104,15 +1387,96 @@ // This is before each describe runtime note // This is before each nested describe runtime note // This is a runtime note within a nested describe + ✓ matching describe names → describe block → it may have a static note and runtime note + // This is before each static note + // This is before each matching describe static note + // This is a nested matching static note + // This is a static note within a matching describe + // This is before each runtime note + // This is before each matching describe runtime note + // This is before each matching describe runtime note + // This is a runtime note within a matching describe + ✓ matching describe names → describe block → it may have a static note and runtime note, that are different than the matching describe block + // This is before each static note + // This is before each matching describe static note + // This is a nested matching static note, and should not contain the matching describe notes + // This is before each matching describe static note, and should not contain the matching describe notes + // This is a static note within a matching describe, and should not contain the matching describe notes + // This is before each runtime note + // This is before each matching describe runtime note + // This is before each matching describe runtime note, and should not contain the matching describe notes + // This is a runtime note within a matching describe, and should not contain the matching describe notes ✓ multiple notes // This is before each static note // This is before each runtime note // This is a runtime note // This is another runtime note - NOTI Tests\Features\Notices - ! notice → This is a notice description // tests/Features/Notices.php:4 - ! a "describe" group of tests → notice → This is a notice description // tests/Features/Notices.php:11 + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(264): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testNoticeTrigg...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\NoticeTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(829): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(117): PHPUnit\Event\DispatchingEmitter->testTriggeredNotice(Object(PHPUnit\Event\Code\TestMethod), 'This is a notic...', '/Users/justinha...', 4, false, false) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(1024, 'This is a notic...', '/Users/justinha...', 4) +#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php(4): trigger_error('This is a notic...', 1024) +#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Notices->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php:3}() +#10 [internal function]: P\Tests\Features\Notices->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Notices->{closure:Pest\Concerns\Testable::__callClosure():419}() +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Notices->__callClosure(Object(Closure), Array) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Notices->__runTest(Object(Closure)) +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Notices->__pest_evaluable_notice() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Notices)) +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#28 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(264): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testNoticeTrigg...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\NoticeTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(829): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(117): PHPUnit\Event\DispatchingEmitter->testTriggeredNotice(Object(PHPUnit\Event\Code\TestMethod), 'This is a notic...', '/Users/justinha...', 11, false, false) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(1024, 'This is a notic...', '/Users/justinha...', 11) +#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php(11): trigger_error('This is a notic...', 1024) +#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Notices->{closure:{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php:9}:10}() +#10 [internal function]: P\Tests\Features\Notices->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Notices->{closure:Pest\Concerns\Testable::__callClosure():419}() +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Notices->__callClosure(Object(Closure), Array) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Notices->__runTest(Object(Closure)) +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Notices->__pest_evaluable__a__describe__group_of_tests__→_notice() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Notices)) +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#28 {main} + + PASS Tests\Features\Notices + ✓ notice + ✓ a "describe" group of tests → notice PASS Tests\Features\Pr ✓ it may be associated with an pr #1, #2 @@ -1250,6 +1614,10 @@ ✓ describe blocks → describe with repeat → nested describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 2 of 2 ✓ describe blocks → describe with repeat → nested describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 1 of 2 ✓ describe blocks → describe with repeat → nested describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 2 of 2 + ✓ matching describe blocks → describe block → it should repeat the number of times specified in the parent describe block @ repetition 1 of 3 + ✓ matching describe blocks → describe block → it should repeat the number of times specified in the parent describe block @ repetition 2 of 3 + ✓ matching describe blocks → describe block → it should repeat the number of times specified in the parent describe block @ repetition 3 of 3 + ✓ matching describe blocks → describe block → should not repeat the number of times of the describe block with the same name PASS Tests\Features\ScopedDatasets\Directory\NestedDirectory1\TestFileInNestedDirectoryWithDatasetsFile ✓ uses dataset with (1) @@ -1295,30 +1663,356 @@ ✓ it can see datasets defined in Pest.php file with ('B') ✓ Pest.php dataset is taken - WARN Tests\Features\Skip + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '1') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'skipped because...') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'skipped because...') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'This test was s...') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Features\Skip ✓ it do not skips - - it skips with truthy → 1 - - it skips with truthy condition by default - - it skips with message → skipped because bar - - it skips with truthy closure condition + ✓ it skips with truthy + ✓ it skips with truthy condition by default + ✓ it skips with message + ✓ it skips with truthy closure condition ✓ it do not skips with falsy closure condition - - it skips with condition and message → skipped because foo - - it skips when skip after assertion - - it can use something in the test case as a condition → This test was skipped - - it can user higher order callables and skip - - skip on describe → skipped tests → nested inside skipped block → it should not execute - - skip on describe → skipped tests → it should not execute + ✓ it skips with condition and message + ✓ it skips when skip after assertion + ✓ it can use something in the test case as a condition + ✓ it can user higher order callables and skip + ✓ skip on describe → skipped tests → nested inside skipped block → it should not execute + ✓ skip on describe → skipped tests → it should not execute ✓ skip on describe → it should execute - - skip on beforeEach → skipped tests → nested inside skipped block → it should not execute - - skip on beforeEach → skipped tests → it should not execute + ✓ skip on beforeEach → skipped tests → nested inside skipped block → it should not execute + ✓ skip on beforeEach → skipped tests → it should not execute ✓ skip on beforeEach → it should execute + ✓ matching describe with skip → describe block → it should not execute + ✓ matching describe with skip → describe block → it should execute a test in a describe block with the same name as a skipped describe block + ✓ matching describe with skip → it should execute + ✓ matching describe with skip on beforeEach → describe block → it should not execute + ✓ matching describe with skip on beforeEach → describe block → it should execute a test in a describe block with the same name as a skipped describe block + ✓ matching describe with skip on beforeEach → it should execute ✓ it does not skip after the describe block - - it can skip after the describe block - - WARN Tests\Features\SkipOnPhp + ✓ it can skip after the describe block + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'This test is sk...') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\SkipOnPhp)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Features\SkipOnPhp ✓ it can run on php version ✓ it can run on specific php version - - it can skip on php versions depending on constraint → This test is skipped on PHP [>=7.4.0]. + ✓ it can skip on php versions depending on constraint PASS Tests\Features\Test ✓ a test @@ -1334,7 +2028,7 @@ ✓ nested → it may be associated with an ticket #1, #4, #5, #6, #3 // an note between an the ticket - PASS Tests\Features\Todo - 28 todos + PASS Tests\Features\Todo - 29 todos ↓ something todo later ↓ something todo later chained ↓ something todo later chained and with function body @@ -1366,6 +2060,9 @@ // test note ↓ todo on describe → todo block → it should not execute ✓ todo on describe → it should execute + ↓ todo on describe with matching name → describe block → it should not execute + ✓ todo on describe with matching name → describe block → it should execute a test in a describe block with the same name as a todo describe block + ✓ todo on describe with matching name → it should execute ↓ todo on test after describe block ↓ todo with note on test after describe block // test note @@ -1393,10 +2090,102 @@ ↓ todo with note on test after describe block with beforeEach // test note - WARN Tests\Features\Warnings - ! warning → Undefined property: P\Tests\Features\Warnings::$fooqwdfwqdfqw - ! user warning → This is a warning description - ! a "describe" group of tests → user warning → This is a warning description + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(216): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testPhpWarningT...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\PhpWarningTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpWarningTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(898): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpWarningTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(129): PHPUnit\Event\DispatchingEmitter->testTriggeredPhpWarning(Object(PHPUnit\Event\Code\TestMethod), 'Undefined prope...', '/Users/justinha...', 4, false, false) +#7 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php(4): PHPUnit\Runner\ErrorHandler->__invoke(2, 'Undefined prope...', '/Users/justinha...', 4) +#8 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Warnings->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php:3}() +#9 [internal function]: P\Tests\Features\Warnings->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#10 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#11 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Warnings->{closure:Pest\Concerns\Testable::__callClosure():419}() +#12 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Warnings->__callClosure(Object(Closure), Array) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Warnings->__runTest(Object(Closure)) +#15 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Warnings->__pest_evaluable_warning() +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Warnings)) +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#24 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#25 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#27 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(287): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testWarningTrig...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\WarningTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(875): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(141): PHPUnit\Event\DispatchingEmitter->testTriggeredWarning(Object(PHPUnit\Event\Code\TestMethod), 'This is a warni...', '/Users/justinha...', 10, false, false) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(512, 'This is a warni...', '/Users/justinha...', 10) +#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php(10): trigger_error('This is a warni...', 512) +#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Warnings->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php:9}() +#10 [internal function]: P\Tests\Features\Warnings->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Warnings->{closure:Pest\Concerns\Testable::__callClosure():419}() +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Warnings->__callClosure(Object(Closure), Array) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Warnings->__runTest(Object(Closure)) +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Warnings->__pest_evaluable_user_warning() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Warnings)) +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#28 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(287): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testWarningTrig...', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\WarningTriggered)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(875): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(141): PHPUnit\Event\DispatchingEmitter->testTriggeredWarning(Object(PHPUnit\Event\Code\TestMethod), 'This is a warni...', '/Users/justinha...', 17, false, false) +#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(512, 'This is a warni...', '/Users/justinha...', 17) +#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php(17): trigger_error('This is a warni...', 512) +#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Warnings->{closure:{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php:15}:16}() +#10 [internal function]: P\Tests\Features\Warnings->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() +#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) +#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Warnings->{closure:Pest\Concerns\Testable::__callClosure():419}() +#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Warnings->__callClosure(Object(Closure), Array) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(35): P\Tests\Features\Warnings->__runTest(Object(Closure)) +#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Warnings->__pest_evaluable__a__describe__group_of_tests__→_user_warning() +#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() +#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Warnings)) +#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#28 {main} + + PASS Tests\Features\Warnings + ✓ warning + ✓ user warning + ✓ a "describe" group of tests → user warning PASS Tests\Features\Wip ✓ it may have an associated assignee [@nunomaduro] @@ -1405,9 +2194,49 @@ ✓ it may have an associated note // a note - WARN Tests\Fixtures\CollisionTest - - error - - success + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Fixtures\CollisionTest)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Fixtures\CollisionTest)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Fixtures\CollisionTest + ✓ error + ✓ success PASS Tests\Fixtures\DirectoryWithTests\ExampleTest ✓ it example 1 @@ -1415,8 +2244,28 @@ PASS Tests\Fixtures\ExampleTest ✓ it example 2 - WARN Tests\Fixtures\UnexpectedOutput - - output + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Fixtures\UnexpectedOutput)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Fixtures\UnexpectedOutput + ✓ output PASS Tests\Helpers\TestInHelpers ✓ it executes tests in the Helpers directory @@ -1679,9 +2528,29 @@ PASS Tests\Visual\Help ✓ visual snapshot of help command output - WARN Tests\Visual\JUnit + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'Not working yet') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\JUnit)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Visual\JUnit ✓ junit output - - junit with parallel → Not working yet + ✓ junit with parallel PASS Tests\Visual\Parallel ✓ parallel @@ -1692,20 +2561,182 @@ ✓ allows to run a directory ✓ it disable decorating printer when colors is set to never - WARN Tests\Visual\Success - - visual snapshot of test suite on success - - WARN Tests\Visual\TeamCity - - visual snapshot of team city with ('Failure.php') - - visual snapshot of team city with ('SuccessOnly.php') - - WARN Tests\Visual\Todo - - todos - - todos in parallel - - todo - - todo in parallel - - WARN Tests\Visual\Version - - visual snapshot of help command output + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Success)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Visual\Success + ✓ visual snapshot of test suite on success + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\TeamCity)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#14 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#17 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#18 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\TeamCity)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#14 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#15 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#17 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#18 {main} + + PASS Tests\Visual\TeamCity + ✓ visual snapshot of team city with ('Failure.php') + ✓ visual snapshot of team city with ('SuccessOnly.php') + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Visual\Todo + ✓ todos + ✓ todos in parallel + ✓ todo + ✓ todo in parallel + + WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() +#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) +#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) +#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) +#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) +#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) +#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') +#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() +#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Version)) +#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() +#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() +#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() +#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) +#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) +#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) +#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() +#17 {main} + + PASS Tests\Visual\Version + ✓ visual snapshot of help command output - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1152 passed (2744 assertions) \ No newline at end of file + Tests: 39 todos, 1230 passed (2782 assertions) \ No newline at end of file diff --git a/tests/Features/AfterEach.php b/tests/Features/AfterEach.php index ea0dd7ea6..aff68283c 100644 --- a/tests/Features/AfterEach.php +++ b/tests/Features/AfterEach.php @@ -48,3 +48,55 @@ }); }); }); + +describe('matching describe block names', function () { + afterEach(function () { + $this->state->foo = 1; + }); + + describe('outer', function () { + afterEach(function () { + $this->state->foo++; + }); + + describe('middle', function () { + afterEach(function () { + $this->state->foo++; + }); + + describe('inner', function () { + afterEach(function () { + $this->state->foo++; + }); + + it('does not get executed before the test', function () { + expect($this)->not->toHaveProperty('foo'); + }); + + it('should call all parent afterEach functions', function () { + expect($this->state->foo)->toBe(4); + }); + }); + }); + + describe('middle', function () { + it('does not get executed before the test', function () { + expect($this)->not->toHaveProperty('foo'); + }); + + it('should not call afterEach functions for sibling describe blocks with the same name', function () { + expect($this)->not->toHaveProperty('foo'); + }); + }); + + describe('inner', function () { + it('does not get executed before the test', function () { + expect($this)->not->toHaveProperty('foo'); + }); + + it('should not call afterEach functions for descendent of sibling describe blocks with the same name', function () { + expect($this)->not->toHaveProperty('foo'); + }); + }); + }); +}); diff --git a/tests/Features/BeforeEach.php b/tests/Features/BeforeEach.php index 04f0dd13e..a7c7befe2 100644 --- a/tests/Features/BeforeEach.php +++ b/tests/Features/BeforeEach.php @@ -51,3 +51,78 @@ test('test', function () {}); }); + +describe('matching describe block names', function () { + beforeEach(function () { + $this->foo = 1; + }); + + describe('outer', function () { + beforeEach(function () { + $this->foo++; + }); + + describe('middle', function () { + beforeEach(function () { + $this->foo++; + }); + + describe('inner', function () { + beforeEach(function () { + $this->foo++; + }); + + it('should call all parent beforeEach functions', function () { + expect($this->foo)->toBe(4); + }); + }); + }); + + describe('middle', function () { + it('should not call beforeEach functions for sibling describe blocks with the same name', function () { + expect($this->foo)->toBe(2); + }); + }); + + describe('inner', function () { + it('should not call beforeEach functions for descendent of sibling describe blocks with the same name', function () { + expect($this->foo)->toBe(2); + }); + }); + }); +}); + +$matchingNameCalls = 0; +describe('matching name', function () use (&$matchingNameCalls) { + beforeEach(function () use (&$matchingNameCalls) { + $matchingNameCalls++; + }); + + it('should call the before each', function () use (&$matchingNameCalls) { + expect($matchingNameCalls)->toBe(1); + }); +}); + +describe('matching name', function () use (&$matchingNameCalls) { + it('should not call the before each on the describe block with the same name', function () use (&$matchingNameCalls) { + expect($matchingNameCalls)->toBe(1); + }); +}); + +beforeEach(function () { + $this->baz = 1; +}); + +describe('called on all tests', function () { + beforeEach(function () { + $this->baz++; + }); + + test('beforeEach should be called', function () { + expect($this->baz)->toBe(2); + }); + + test('beforeEach should be called for all tests', function () { + expect($this->baz)->toBe(2); + }); +}); diff --git a/tests/Features/DatasetsTests.php b/tests/Features/DatasetsTests.php index 54cb77a83..837b56f62 100644 --- a/tests/Features/DatasetsTests.php +++ b/tests/Features/DatasetsTests.php @@ -415,6 +415,34 @@ function () { })->with([1]); }); +describe('matching describe block names', function () { + describe('outer', function () { + test('before inner describe block', function (...$args) { + expect($args)->toBe([1]); + }); + + describe('inner', function () { + it('should include the with value from all parent describe blocks', function (...$args) { + expect($args)->toBe([1, 2]); + }); + + test('should include the with value from all parent describe blocks and the test', function (...$args) { + expect($args)->toBe([1, 2, 3]); + })->with([3]); + })->with([2]); + + describe('inner', function () { + it('should not include the value from the other describe block with the same name', function (...$args) { + expect($args)->toBe([1]); + }); + }); + + test('after inner describe block', function (...$args) { + expect($args)->toBe([1]); + }); + })->with([1]); +}); + test('after describe block', function (...$args) { expect($args)->toBe([5]); })->with([5]); diff --git a/tests/Features/Note.php b/tests/Features/Note.php index 571d7c851..22d73b4ff 100644 --- a/tests/Features/Note.php +++ b/tests/Features/Note.php @@ -44,6 +44,36 @@ })->note('This is a nested describe static note'); })->note('This is describe static note'); +describe('matching describe names', function () { + beforeEach(function () { + $this->note('This is before each matching describe runtime note'); + })->note('This is before each matching describe static note'); + + describe('describe block', function () { + beforeEach(function () { + $this->note('This is before each matching describe runtime note'); + })->note('This is before each matching describe static note'); + + it('may have a static note and runtime note', function () { + expect(true)->toBeTrue(true); + + $this->note('This is a runtime note within a matching describe'); + })->note('This is a static note within a matching describe'); + })->note('This is a nested matching static note'); + + describe('describe block', function () { + beforeEach(function () { + $this->note('This is before each matching describe runtime note, and should not contain the matching describe notes'); + })->note('This is before each matching describe static note, and should not contain the matching describe notes'); + + it('may have a static note and runtime note, that are different than the matching describe block', function () { + expect(true)->toBeTrue(true); + + $this->note('This is a runtime note within a matching describe, and should not contain the matching describe notes'); + })->note('This is a static note within a matching describe, and should not contain the matching describe notes'); + })->note('This is a nested matching static note, and should not contain the matching describe notes'); +}); + test('multiple notes', function () { expect(true)->toBeTrue(true); diff --git a/tests/Features/Repeat.php b/tests/Features/Repeat.php index 5a3370cd7..89d0c322e 100644 --- a/tests/Features/Repeat.php +++ b/tests/Features/Repeat.php @@ -79,3 +79,17 @@ })->repeat(times: 2); })->repeat(times: 3); }); + +describe('matching describe blocks', function () { + describe('describe block', function () { + it('should repeat the number of times specified in the parent describe block', function () { + expect(true)->toBeTrue(); + }); + })->repeat(times: 3); + + describe('describe block', function () { + test('should not repeat the number of times of the describe block with the same name', function () { + expect(true)->toBeTrue(); + }); + }); +}); diff --git a/tests/Features/Skip.php b/tests/Features/Skip.php index 352189458..9c305d356 100644 --- a/tests/Features/Skip.php +++ b/tests/Features/Skip.php @@ -125,6 +125,74 @@ }); }); +describe('matching describe with skip', function () { + beforeEach(function () { + $this->ran = false; + }); + + afterEach(function () { + match ($this->name()) { + '__pest_evaluable__matching_describe_with_skip__→__describe_block__→_it_should_not_execute' => expect($this->ran)->toBe(false), + '__pest_evaluable__matching_describe_with_skip__→__describe_block__→_it_should_execute_a_test_in_a_describe_block_with_the_same_name_as_a_skipped_describe_block' => expect($this->ran)->toBe(true), + '__pest_evaluable__matching_describe_with_skip__→_it_should_execute' => expect($this->ran)->toBe(true), + default => $this->fail('Unexpected test name: '.$this->name()), + }; + }); + + describe('describe block', function () { + it('should not execute', function () { + $this->ran = true; + $this->fail(); + }); + })->skip(); + + describe('describe block', function () { + it('should execute a test in a describe block with the same name as a skipped describe block', function () { + $this->ran = true; + }); + }); + + it('should execute', function () { + $this->ran = true; + expect($this->ran)->toBe(true); + }); +}); + +describe('matching describe with skip on beforeEach', function () { + beforeEach(function () { + $this->ran = false; + }); + + afterEach(function () { + match ($this->name()) { + '__pest_evaluable__matching_describe_with_skip_on_beforeEach__→__describe_block__→_it_should_not_execute' => expect($this->ran)->toBe(false), + '__pest_evaluable__matching_describe_with_skip_on_beforeEach__→__describe_block__→_it_should_execute_a_test_in_a_describe_block_with_the_same_name_as_a_skipped_describe_block' => expect($this->ran)->toBe(true), + '__pest_evaluable__matching_describe_with_skip_on_beforeEach__→_it_should_execute' => expect($this->ran)->toBe(true), + default => $this->fail('Unexpected test name: '.$this->name()), + }; + }); + + describe('describe block', function () { + beforeEach()->skip(); + + it('should not execute', function () { + $this->ran = true; + $this->fail(); + }); + }); + + describe('describe block', function () { + it('should execute a test in a describe block with the same name as a skipped describe block', function () { + $this->ran = true; + }); + }); + + it('should execute', function () { + $this->ran = true; + expect($this->ran)->toBe(true); + }); +}); + it('does not skip after the describe block', function () { expect(true)->toBeTrue(); }); diff --git a/tests/Features/Todo.php b/tests/Features/Todo.php index f979a2ff0..d6e8d9781 100644 --- a/tests/Features/Todo.php +++ b/tests/Features/Todo.php @@ -108,6 +108,40 @@ }); }); +describe('todo on describe with matching name', function () { + beforeEach(function () { + $this->ran = false; + }); + + afterEach(function () { + match ($this->name()) { + '__pest_evaluable__todo_on_describe_with_matching_name__→__describe_block__→_it_should_not_execute' => expect($this->ran)->toBe(false), + '__pest_evaluable__todo_on_describe_with_matching_name__→__describe_block__→_it_should_execute_a_test_in_a_describe_block_with_the_same_name_as_a_todo_describe_block' => expect($this->ran)->toBe(true), + '__pest_evaluable__todo_on_describe_with_matching_name__→_it_should_execute' => expect($this->ran)->toBe(true), + + default => $this->fail('Unexpected test name: '.$this->name()), + }; + }); + + describe('describe block', function () { + it('should not execute', function () { + $this->ran = true; + $this->fail(); + }); + })->todo(); + + describe('describe block', function () { + it('should execute a test in a describe block with the same name as a todo describe block', function () { + $this->ran = true; + }); + }); + + it('should execute', function () { + $this->ran = true; + expect($this->ran)->toBe(true); + }); +}); + test('todo on test after describe block', function () { $this->fail(); })->todo(); From 50ff347b599ae964ef3a535c4dd9b4cef3d49a19 Mon Sep 17 00:00:00 2001 From: jshayes Date: Mon, 11 Nov 2024 15:45:16 -0500 Subject: [PATCH 014/134] Pass description into describe call --- src/Functions.php | 3 +- src/PendingCalls/DescribeCall.php | 9 +- tests/.snapshots/success.txt | 1121 ++--------------------------- tests/Visual/Parallel.php | 2 +- 4 files changed, 75 insertions(+), 1060 deletions(-) diff --git a/src/Functions.php b/src/Functions.php index 1e12fe7e6..6a4f45ecc 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -18,6 +18,7 @@ use Pest\Support\Backtrace; use Pest\Support\Container; use Pest\Support\DatasetInfo; +use Pest\Support\Description; use Pest\Support\HigherOrderTapProxy; use Pest\TestSuite; use PHPUnit\Framework\TestCase; @@ -95,7 +96,7 @@ function describe(string $description, Closure $tests): DescribeCall { $filename = Backtrace::testFile(); - return new DescribeCall(TestSuite::getInstance(), $filename, $description, $tests); + return new DescribeCall(TestSuite::getInstance(), $filename, new Description($description), $tests); } } diff --git a/src/PendingCalls/DescribeCall.php b/src/PendingCalls/DescribeCall.php index e6d4bc297..bf6a7f517 100644 --- a/src/PendingCalls/DescribeCall.php +++ b/src/PendingCalls/DescribeCall.php @@ -26,21 +26,16 @@ final class DescribeCall */ private ?BeforeEachCall $currentBeforeEachCall = null; - /** - * The unique description for this describe block - */ - private readonly Description $description; - /** * Creates a new Pending Call. */ public function __construct( public readonly TestSuite $testSuite, public readonly string $filename, - string $description, + public readonly Description $description, public readonly Closure $tests ) { - $this->description = new Description($description); + // } /** diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index d142725f7..17e7cfd55 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -10,75 +10,15 @@ PASS Tests\Environments\Windows ✓ global functions are loaded - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\After)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\After)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\After)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Features\After + WARN Tests\Features\After ✓ it can run after test ✓ it can run after test twice - ✓ it does not run when skipped - ✓ something → it does not run when skipped + - it does not run when skipped + - something → it does not run when skipped ✓ something → it can run after test ✓ something 2 → it can run after test ✓ high order test - ✓ high order test with skip + - high order test with skip ✓ post 'foo' → defer Closure Object () → expect Closure Object () → toBe 1 PASS Tests\Features\AfterAll @@ -124,70 +64,10 @@ ✓ runs 2 ✓ runs 3 - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\BeforeEachProxiesToTestCallWithSkip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\BeforeEachProxiesToTestCallWithSkip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\BeforeEachProxiesToTestCallWithSkip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Features\BeforeEachProxiesToTestCallWithSkip - ✓ does not run 1 - ✓ does not run 2 - ✓ does not run 3 + WARN Tests\Features\BeforeEachProxiesToTestCallWithSkip + - does not run 1 + - does not run 2 + - does not run 3 TODO Tests\Features\BeforeEachProxiesToTestCallWithTodo - 4 todos ↓ is marked as todo 1 @@ -195,29 +75,9 @@ ↓ is marked as todo 3 ↓ shouldBeMarkedAsTodo - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'Coverage is not...') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Coverage)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Features\Coverage + WARN Tests\Features\Coverage ✓ it has plugin - ✓ it adds coverage if --coverage exist + - it adds coverage if --coverage exist → Coverage is not available ✓ it adds coverage if --min exist ✓ it generates coverage based on file input @@ -371,102 +231,9 @@ ✓ it is a test ✓ it uses correct parent class - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(192): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testPhpDeprecat...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(757): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(153): PHPUnit\Event\DispatchingEmitter->testTriggeredPhpDeprecation(Object(PHPUnit\Event\Code\TestMethod), 'str_contains():...', '/Users/justinha...', 4, false, false, false, Object(PHPUnit\Event\Code\IssueTrigger\DirectTrigger)) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(8192, 'str_contains():...', '/Users/justinha...', 4) -#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php(4): str_contains(NULL, NULL) -#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Deprecated->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php:3}() -#10 [internal function]: P\Tests\Features\Deprecated->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Deprecated->{closure:Pest\Concerns\Testable::__callClosure():419}() -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Deprecated->__callClosure(Object(Closure), Array) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Deprecated->__runTest(Object(Closure)) -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Deprecated->__pest_evaluable_deprecated() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Deprecated)) -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#28 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(192): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testPhpDeprecat...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(757): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpDeprecationTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(153): PHPUnit\Event\DispatchingEmitter->testTriggeredPhpDeprecation(Object(PHPUnit\Event\Code\TestMethod), 'str_contains():...', '/Users/justinha...', 4, false, false, false, Object(PHPUnit\Event\Code\IssueTrigger\DirectTrigger)) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(8192, 'str_contains():...', '/Users/justinha...', 4) -#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php(4): str_contains(NULL, NULL) -#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Deprecated->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php:3}() -#10 [internal function]: P\Tests\Features\Deprecated->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Deprecated->{closure:Pest\Concerns\Testable::__callClosure():419}() -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Deprecated->__callClosure(Object(Closure), Array) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Deprecated->__runTest(Object(Closure)) -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Deprecated->__pest_evaluable_deprecated() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Deprecated)) -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#28 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(168): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testDeprecation...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\DeprecationTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\DeprecationTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(782): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\DeprecationTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(169): PHPUnit\Event\DispatchingEmitter->testTriggeredDeprecation(Object(PHPUnit\Event\Code\TestMethod), 'Since foo 1.0: ...', '/Users/justinha...', 10, false, false, false, Object(PHPUnit\Event\Code\IssueTrigger\DirectTrigger)) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(16384, 'Since foo 1.0: ...', '/Users/justinha...', 10) -#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php(10): trigger_error('Since foo 1.0: ...', 16384) -#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Deprecated->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Deprecated.php:9}() -#10 [internal function]: P\Tests\Features\Deprecated->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Deprecated->{closure:Pest\Concerns\Testable::__callClosure():419}() -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Deprecated->__callClosure(Object(Closure), Array) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Deprecated->__runTest(Object(Closure)) -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Deprecated->__pest_evaluable_user_deprecated() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Deprecated)) -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#28 {main} - - PASS Tests\Features\Deprecated - ✓ deprecated - ✓ user deprecated + DEPR Tests\Features\Deprecated + ! deprecated → str_contains(): Passing null to parameter #1 ($haystack) of type string is deprecated // tests/Features/Deprecated.php:4 + ! user deprecated → Since foo 1.0: This is a deprecation description // tests/Features/Deprecated.php:10 PASS Tests\Features\Describe - 5 todos ✓ before each @@ -1281,41 +1048,9 @@ ✓ it may fail ✓ it may fail with the given message - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(287): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testWarningTrig...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\WarningTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(875): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(141): PHPUnit\Event\DispatchingEmitter->testTriggeredWarning(Object(PHPUnit\Event\Code\TestMethod), 'Undefined prope...', '/Users/justinha...', 49, false, false) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(512, 'Undefined prope...', '/Users/justinha...', 49) -#8 /Users/justinhayes/Development/packages/forks/pest/src/Support/HigherOrderTapProxy.php(49): trigger_error('Undefined prope...', 512) -#9 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Helpers.php(14): Pest\Support\HigherOrderTapProxy->__get('wqdwqdqw') -#10 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Helpers->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Helpers.php:13}() -#11 [internal function]: P\Tests\Features\Helpers->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#12 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#13 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Helpers->{closure:Pest\Concerns\Testable::__callClosure():419}() -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Helpers->__callClosure(Object(Closure), Array) -#16 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Helpers->__runTest(Object(Closure)) -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Helpers->__pest_evaluable_it_gets_null_if_property_do_not_exist() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Helpers)) -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#25 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#26 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#28 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#29 {main} - - PASS Tests\Features\Helpers + WARN Tests\Features\Helpers ✓ it can set/get properties on $this - ✓ it gets null if property do not exist + ! it gets null if property do not exist → Undefined property Tests\Features\Helpers::$wqdwqdqw ✓ it allows to call underlying protected/private methods ✓ it throws error if method do not exist ✓ it can forward unexpected calls to any global function @@ -1333,15 +1068,15 @@ ✓ it can pass shared datasets into callables with (1) ✓ it can pass shared datasets into callables with (2) - PASS Tests\Features\Incompleted - ✓ incompleted - ✓ it is incompleted - ✓ it is incompleted even with method calls like skip - ✓ it is incompleted even with method calls like group + WARN Tests\Features\Incompleted + … incompleted + … it is incompleted + … it is incompleted even with method calls like skip + … it is incompleted even with method calls like group ✓ it is not incompleted because of expect ✓ it is not incompleted because of assert ✓ it is not incompleted because of test with assertions - ✓ a "describe" group of tests → it is incompleted + … a "describe" group of tests → it is incompleted PASS Tests\Features\Issue ✓ it may be associated with an issue #1, #2 @@ -1412,71 +1147,9 @@ // This is a runtime note // This is another runtime note - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(264): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testNoticeTrigg...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\NoticeTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(829): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(117): PHPUnit\Event\DispatchingEmitter->testTriggeredNotice(Object(PHPUnit\Event\Code\TestMethod), 'This is a notic...', '/Users/justinha...', 4, false, false) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(1024, 'This is a notic...', '/Users/justinha...', 4) -#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php(4): trigger_error('This is a notic...', 1024) -#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Notices->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php:3}() -#10 [internal function]: P\Tests\Features\Notices->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Notices->{closure:Pest\Concerns\Testable::__callClosure():419}() -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Notices->__callClosure(Object(Closure), Array) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Notices->__runTest(Object(Closure)) -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Notices->__pest_evaluable_notice() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Notices)) -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#28 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(264): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testNoticeTrigg...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\NoticeTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(829): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\NoticeTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(117): PHPUnit\Event\DispatchingEmitter->testTriggeredNotice(Object(PHPUnit\Event\Code\TestMethod), 'This is a notic...', '/Users/justinha...', 11, false, false) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(1024, 'This is a notic...', '/Users/justinha...', 11) -#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php(11): trigger_error('This is a notic...', 1024) -#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Notices->{closure:{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Notices.php:9}:10}() -#10 [internal function]: P\Tests\Features\Notices->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Notices->{closure:Pest\Concerns\Testable::__callClosure():419}() -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Notices->__callClosure(Object(Closure), Array) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Notices->__runTest(Object(Closure)) -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Notices->__pest_evaluable__a__describe__group_of_tests__→_notice() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Notices)) -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#28 {main} - - PASS Tests\Features\Notices - ✓ notice - ✓ a "describe" group of tests → notice + NOTI Tests\Features\Notices + ! notice → This is a notice description // tests/Features/Notices.php:4 + ! a "describe" group of tests → notice → This is a notice description // tests/Features/Notices.php:11 PASS Tests\Features\Pr ✓ it may be associated with an pr #1, #2 @@ -1663,356 +1336,36 @@ ✓ it can see datasets defined in Pest.php file with ('B') ✓ Pest.php dataset is taken - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '1') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'skipped because...') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'skipped because...') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'This test was s...') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Skip)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Features\Skip + WARN Tests\Features\Skip ✓ it do not skips - ✓ it skips with truthy - ✓ it skips with truthy condition by default - ✓ it skips with message - ✓ it skips with truthy closure condition + - it skips with truthy → 1 + - it skips with truthy condition by default + - it skips with message → skipped because bar + - it skips with truthy closure condition ✓ it do not skips with falsy closure condition - ✓ it skips with condition and message - ✓ it skips when skip after assertion - ✓ it can use something in the test case as a condition - ✓ it can user higher order callables and skip - ✓ skip on describe → skipped tests → nested inside skipped block → it should not execute - ✓ skip on describe → skipped tests → it should not execute + - it skips with condition and message → skipped because foo + - it skips when skip after assertion + - it can use something in the test case as a condition → This test was skipped + - it can user higher order callables and skip + - skip on describe → skipped tests → nested inside skipped block → it should not execute + - skip on describe → skipped tests → it should not execute ✓ skip on describe → it should execute - ✓ skip on beforeEach → skipped tests → nested inside skipped block → it should not execute - ✓ skip on beforeEach → skipped tests → it should not execute + - skip on beforeEach → skipped tests → nested inside skipped block → it should not execute + - skip on beforeEach → skipped tests → it should not execute ✓ skip on beforeEach → it should execute - ✓ matching describe with skip → describe block → it should not execute + - matching describe with skip → describe block → it should not execute ✓ matching describe with skip → describe block → it should execute a test in a describe block with the same name as a skipped describe block ✓ matching describe with skip → it should execute - ✓ matching describe with skip on beforeEach → describe block → it should not execute + - matching describe with skip on beforeEach → describe block → it should not execute ✓ matching describe with skip on beforeEach → describe block → it should execute a test in a describe block with the same name as a skipped describe block ✓ matching describe with skip on beforeEach → it should execute ✓ it does not skip after the describe block - ✓ it can skip after the describe block - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'This test is sk...') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\SkipOnPhp)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Features\SkipOnPhp + - it can skip after the describe block + + WARN Tests\Features\SkipOnPhp ✓ it can run on php version ✓ it can run on specific php version - ✓ it can skip on php versions depending on constraint + - it can skip on php versions depending on constraint → This test is skipped on PHP [>=7.4.0]. PASS Tests\Features\Test ✓ a test @@ -2090,102 +1443,10 @@ ↓ todo with note on test after describe block with beforeEach // test note - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(216): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testPhpWarningT...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\PhpWarningTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpWarningTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(898): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\PhpWarningTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(129): PHPUnit\Event\DispatchingEmitter->testTriggeredPhpWarning(Object(PHPUnit\Event\Code\TestMethod), 'Undefined prope...', '/Users/justinha...', 4, false, false) -#7 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php(4): PHPUnit\Runner\ErrorHandler->__invoke(2, 'Undefined prope...', '/Users/justinha...', 4) -#8 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Warnings->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php:3}() -#9 [internal function]: P\Tests\Features\Warnings->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#10 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#11 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Warnings->{closure:Pest\Concerns\Testable::__callClosure():419}() -#12 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Warnings->__callClosure(Object(Closure), Array) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(17): P\Tests\Features\Warnings->__runTest(Object(Closure)) -#15 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Warnings->__pest_evaluable_warning() -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Warnings)) -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#24 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#25 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#27 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(287): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testWarningTrig...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\WarningTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(875): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(141): PHPUnit\Event\DispatchingEmitter->testTriggeredWarning(Object(PHPUnit\Event\Code\TestMethod), 'This is a warni...', '/Users/justinha...', 10, false, false) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(512, 'This is a warni...', '/Users/justinha...', 10) -#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php(10): trigger_error('This is a warni...', 512) -#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Warnings->{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php:9}() -#10 [internal function]: P\Tests\Features\Warnings->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Warnings->{closure:Pest\Concerns\Testable::__callClosure():419}() -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Warnings->__callClosure(Object(Closure), Array) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(26): P\Tests\Features\Warnings->__runTest(Object(Closure)) -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Warnings->__pest_evaluable_user_warning() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Warnings)) -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#28 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(287): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testWarningTrig...', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\WarningTriggered)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(875): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\WarningTriggered)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Runner/ErrorHandler.php(141): PHPUnit\Event\DispatchingEmitter->testTriggeredWarning(Object(PHPUnit\Event\Code\TestMethod), 'This is a warni...', '/Users/justinha...', 17, false, false) -#7 [internal function]: PHPUnit\Runner\ErrorHandler->__invoke(512, 'This is a warni...', '/Users/justinha...', 17) -#8 /Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php(17): trigger_error('This is a warni...', 512) -#9 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseMethodFactory.php(168): P\Tests\Features\Warnings->{closure:{closure:/Users/justinhayes/Development/packages/forks/pest/tests/Features/Warnings.php:15}:16}() -#10 [internal function]: P\Tests\Features\Warnings->{closure:Pest\Factories\TestCaseMethodFactory::getClosure():158}() -#11 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): call_user_func_array(Object(Closure), Array) -#12 /Users/justinhayes/Development/packages/forks/pest/src/Support/ExceptionTrace.php(26): P\Tests\Features\Warnings->{closure:Pest\Concerns\Testable::__callClosure():419}() -#13 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(419): Pest\Support\ExceptionTrace::ensure(Object(Closure)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Concerns/Testable.php(321): P\Tests\Features\Warnings->__callClosure(Object(Closure), Array) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Factories/TestCaseFactory.php(169) : eval()'d code(35): P\Tests\Features\Warnings->__runTest(Object(Closure)) -#16 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(1234): P\Tests\Features\Warnings->__pest_evaluable__a__describe__group_of_tests__→_user_warning() -#17 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(515): PHPUnit\Framework\TestCase->runTest() -#18 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#19 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Features\Warnings)) -#20 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#21 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#22 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#23 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#24 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#25 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#26 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#27 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#28 {main} - - PASS Tests\Features\Warnings - ✓ warning - ✓ user warning - ✓ a "describe" group of tests → user warning + WARN Tests\Features\Warnings + ! warning → Undefined property: P\Tests\Features\Warnings::$fooqwdfwqdfqw + ! user warning → This is a warning description + ! a "describe" group of tests → user warning → This is a warning description PASS Tests\Features\Wip ✓ it may have an associated assignee [@nunomaduro] @@ -2194,49 +1455,9 @@ ✓ it may have an associated note // a note - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Fixtures\CollisionTest)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Fixtures\CollisionTest)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Fixtures\CollisionTest - ✓ error - ✓ success + WARN Tests\Fixtures\CollisionTest + - error + - success PASS Tests\Fixtures\DirectoryWithTests\ExampleTest ✓ it example 1 @@ -2244,28 +1465,8 @@ PASS Tests\Fixtures\ExampleTest ✓ it example 2 - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Fixtures\UnexpectedOutput)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Fixtures\UnexpectedOutput - ✓ output + WARN Tests\Fixtures\UnexpectedOutput + - output PASS Tests\Helpers\TestInHelpers ✓ it executes tests in the Helpers directory @@ -2528,29 +1729,9 @@ PASS Tests\Visual\Help ✓ visual snapshot of help command output - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), 'Not working yet') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\JUnit)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Visual\JUnit + WARN Tests\Visual\JUnit ✓ junit output - ✓ junit with parallel + - junit with parallel → Not working yet PASS Tests\Visual\Parallel ✓ parallel @@ -2561,182 +1742,20 @@ ✓ allows to run a directory ✓ it disable decorating printer when colors is set to never - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Success)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Visual\Success - ✓ visual snapshot of test suite on success - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\TeamCity)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#14 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#17 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#18 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\TeamCity)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#14 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#15 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#17 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#18 {main} - - PASS Tests\Visual\TeamCity - ✓ visual snapshot of team city with ('Failure.php') - ✓ visual snapshot of team city with ('SuccessOnly.php') - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Todo)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Visual\Todo - ✓ todos - ✓ todos in parallel - ✓ todo - ✓ todo in parallel - - WARN Exception in third-party event subscriber: Call to undefined method PHPUnit\Util\Filter::stackTraceFromThrowableAsString() -#0 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/DefaultPrinter.php(432): PHPUnit\Event\Code\ThrowableBuilder::from(Object(Error)) -#1 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Printers/ReportablePrinter.php(32): NunoMaduro\Collision\Adapters\Phpunit\Printers\DefaultPrinter->report(Object(Error)) -#2 /Users/justinhayes/Development/packages/forks/pest/vendor/nunomaduro/collision/src/Adapters/Phpunit/Subscribers/EnsurePrinterIsRegisteredSubscriber.php(279): NunoMaduro\Collision\Adapters\Phpunit\Printers\ReportablePrinter->__call('testSkipped', Array) -#3 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DirectDispatcher.php(106): NunoMaduro\Collision\Adapters\Phpunit\Subscribers\Subscriber@anonymous->notify(Object(PHPUnit\Event\Test\Skipped)) -#4 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Dispatcher/DeferringDispatcher.php(47): PHPUnit\Event\DirectDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#5 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Event/Emitter/DispatchingEmitter.php(708): PHPUnit\Event\DeferringDispatcher->dispatch(Object(PHPUnit\Event\Test\Skipped)) -#6 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(532): PHPUnit\Event\DispatchingEmitter->testSkipped(Object(PHPUnit\Event\Code\TestMethod), '') -#7 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestRunner/TestRunner.php(86): PHPUnit\Framework\TestCase->runBare() -#8 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestCase.php(362): PHPUnit\Framework\TestRunner->run(Object(P\Tests\Visual\Version)) -#9 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestCase->run() -#10 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#11 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/Framework/TestSuite.php(375): PHPUnit\Framework\TestSuite->run() -#12 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(64): PHPUnit\Framework\TestSuite->run() -#13 /Users/justinhayes/Development/packages/forks/pest/vendor/phpunit/phpunit/src/TextUI/Application.php(209): PHPUnit\TextUI\TestRunner->run(Object(PHPUnit\TextUI\Configuration\Configuration), Object(PHPUnit\Runner\ResultCache\DefaultResultCache), Object(PHPUnit\Framework\TestSuite)) -#14 /Users/justinhayes/Development/packages/forks/pest/src/Kernel.php(103): PHPUnit\TextUI\Application->run(Array) -#15 /Users/justinhayes/Development/packages/forks/pest/bin/pest(184): Pest\Kernel->handle(Array, Array) -#16 /Users/justinhayes/Development/packages/forks/pest/bin/pest(192): {closure:/Users/justinhayes/Development/packages/forks/pest/bin/pest:18}() -#17 {main} - - PASS Tests\Visual\Version - ✓ visual snapshot of help command output + WARN Tests\Visual\Success + - visual snapshot of test suite on success + + WARN Tests\Visual\TeamCity + - visual snapshot of team city with ('Failure.php') + - visual snapshot of team city with ('SuccessOnly.php') + + WARN Tests\Visual\Todo + - todos + - todos in parallel + - todo + - todo in parallel + + WARN Tests\Visual\Version + - visual snapshot of help command output - Tests: 39 todos, 1230 passed (2782 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1182 passed (2785 assertions) \ No newline at end of file diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 036f51d74..08747a53b 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1142 passed (2720 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1172 passed (2761 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From 1ad30a97b3df2dbf79819e70f80f7d8242504111 Mon Sep 17 00:00:00 2001 From: AFS Date: Tue, 25 Feb 2025 15:34:37 +0100 Subject: [PATCH 015/134] toMatchArray/Object wrong field fix The functions toMatchArray and toMatchObject indicate that the wrong field is mismatching from the second loop on because the 'message' is overwritten and taken into the following loop. This patch creates a $second_message for the second test (value test) to keep the error message correct. --- src/Mixins/Expectation.php | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Mixins/Expectation.php b/src/Mixins/Expectation.php index f802bc11f..3a20c6720 100644 --- a/src/Mixins/Expectation.php +++ b/src/Mixins/Expectation.php @@ -780,17 +780,16 @@ public function toMatchArray(iterable $array, string $message = ''): self } foreach ($array as $key => $value) { + $message = ''; Assert::assertArrayHasKey($key, $valueAsArray, $message); - if ($message === '') { - $message = sprintf( - 'Failed asserting that an array has a key %s with the value %s.', - $this->export($key), - $this->export($valueAsArray[$key]), - ); - } + $second_message = $message !== '' ? $message : sprintf( + 'Failed asserting that an array has a key %s with the value %s.', + $this->export($key), + $this->export($valueAsArray[$key]), + ); - Assert::assertEquals($value, $valueAsArray[$key], $message); + Assert::assertEquals($value, $valueAsArray[$key], $second_message); } return $this; @@ -815,15 +814,14 @@ public function toMatchObject(iterable $object, string $message = ''): self /* @phpstan-ignore-next-line */ $propertyValue = $this->value->{$property}; - if ($message === '') { - $message = sprintf( + $second_message = $message !== '' ? $message : sprintf( 'Failed asserting that an object has a property %s with the value %s.', $this->export($property), $this->export($propertyValue), ); } - Assert::assertEquals($value, $propertyValue, $message); + Assert::assertEquals($value, $propertyValue, $second_message); } return $this; From 0bdaef29e97fbc450ffee1308b1fd4d0665ec570 Mon Sep 17 00:00:00 2001 From: AFS Date: Tue, 25 Feb 2025 15:41:17 +0100 Subject: [PATCH 016/134] Fix lingering } Remove remaining } in toMatchObject. --- src/Mixins/Expectation.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Mixins/Expectation.php b/src/Mixins/Expectation.php index 3a20c6720..e33933962 100644 --- a/src/Mixins/Expectation.php +++ b/src/Mixins/Expectation.php @@ -815,11 +815,10 @@ public function toMatchObject(iterable $object, string $message = ''): self $propertyValue = $this->value->{$property}; $second_message = $message !== '' ? $message : sprintf( - 'Failed asserting that an object has a property %s with the value %s.', - $this->export($property), - $this->export($propertyValue), - ); - } + 'Failed asserting that an object has a property %s with the value %s.', + $this->export($property), + $this->export($propertyValue), + ); Assert::assertEquals($value, $propertyValue, $second_message); } From 2c3a53f6cd198bd62b2d0984e3e3f79f7c1d69b7 Mon Sep 17 00:00:00 2001 From: AFS Date: Tue, 25 Feb 2025 15:44:32 +0100 Subject: [PATCH 017/134] Remove reset of message Reset approach was not the right one. --- src/Mixins/Expectation.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Mixins/Expectation.php b/src/Mixins/Expectation.php index e33933962..7bb7787c2 100644 --- a/src/Mixins/Expectation.php +++ b/src/Mixins/Expectation.php @@ -780,7 +780,6 @@ public function toMatchArray(iterable $array, string $message = ''): self } foreach ($array as $key => $value) { - $message = ''; Assert::assertArrayHasKey($key, $valueAsArray, $message); $second_message = $message !== '' ? $message : sprintf( From 174645caa226c2396d562f91ff0bb9ea41b53305 Mon Sep 17 00:00:00 2001 From: Antoine Bluchet Date: Tue, 18 Mar 2025 14:49:32 +0100 Subject: [PATCH 018/134] throw exception instead of using Panic --- src/TestSuite.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TestSuite.php b/src/TestSuite.php index ca35a0403..6d71dd563 100644 --- a/src/TestSuite.php +++ b/src/TestSuite.php @@ -101,7 +101,7 @@ public static function getInstance( } if (! self::$instance instanceof self) { - Panic::with(new InvalidPestCommand); + throw new InvalidPestCommand; } return self::$instance; From 490f321a0dc5750ac391e38ccd66dc96bbad4683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Birkl=C3=A9?= Date: Wed, 19 Mar 2025 15:59:45 +0100 Subject: [PATCH 019/134] fix: normalize snapshot paths for files outside tests directory --- src/Repositories/SnapshotRepository.php | 15 ++++++++++++++- src/TestSuite.php | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Repositories/SnapshotRepository.php b/src/Repositories/SnapshotRepository.php index 171fd88f2..9a33a5c53 100644 --- a/src/Repositories/SnapshotRepository.php +++ b/src/Repositories/SnapshotRepository.php @@ -19,6 +19,7 @@ final class SnapshotRepository * Creates a snapshot repository instance. */ public function __construct( + readonly private string $rootPath, readonly private string $testsPath, readonly private string $snapshotsPath, ) {} @@ -103,7 +104,19 @@ public function flush(): void */ private function getSnapshotFilename(): string { - $relativePath = str_replace($this->testsPath, '', TestSuite::getInstance()->getFilename()); + $testFile = TestSuite::getInstance()->getFilename(); + + if (str_starts_with($testFile, $this->testsPath)) { + // if the test file is in the tests directory + $startPath = $this->testsPath; + } else { + // if the test file is in the app, src, etc. directory + $startPath = $this->rootPath; + } + + // relative path: we use substr() and not str_replace() to remove the start path + // for instance, if the $startPath is /app/ and the $testFile is /app/app/tests/Unit/ExampleTest.php, we should only remove the first /app/ from the path + $relativePath = substr($testFile, strlen($startPath)); // remove extension from filename $relativePath = substr($relativePath, 0, (int) strrpos($relativePath, '.')); diff --git a/src/TestSuite.php b/src/TestSuite.php index ca35a0403..e96a6ba9f 100644 --- a/src/TestSuite.php +++ b/src/TestSuite.php @@ -78,6 +78,7 @@ public function __construct( $this->afterAll = new AfterAllRepository; $this->rootPath = (string) realpath($rootPath); $this->snapshots = new SnapshotRepository( + $this->rootPath, implode(DIRECTORY_SEPARATOR, [$this->rootPath, $this->testPath]), implode(DIRECTORY_SEPARATOR, ['.pest', 'snapshots']), ); From e46d499384a5404601b172ec509d079daae471bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Birkl=C3=A9?= Date: Wed, 19 Mar 2025 16:33:44 +0100 Subject: [PATCH 020/134] add tests for snapshots external to the tests directory --- phpunit.xml | 1 + .../Features/Expect/toMatchSnapshot.php | 35 +++++++++++++++++++ ..._set_value______my_datas_set_value__.snap" | 7 ++++ ...s_set_value______my_datas_set_value__.snap | 7 ++++ tests/Features/Expect/toMatchSnapshot.php | 6 ++-- 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 tests-external/Features/Expect/toMatchSnapshot.php create mode 100644 "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" create mode 100644 tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap diff --git a/phpunit.xml b/phpunit.xml index 4aac1aa26..122f54e22 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -16,6 +16,7 @@ ./tests + ./tests-external ./tests/.snapshots ./tests/.tests ./tests/Fixtures/Inheritance diff --git a/tests-external/Features/Expect/toMatchSnapshot.php b/tests-external/Features/Expect/toMatchSnapshot.php new file mode 100644 index 000000000..db7b9666d --- /dev/null +++ b/tests-external/Features/Expect/toMatchSnapshot.php @@ -0,0 +1,35 @@ +snapshotable = <<<'HTML' +
+
+
+

Snapshot

+
+
+
+ HTML; +}); + +test('pass with dataset', function ($data) { + TestSuite::getInstance()->snapshots->save($this->snapshotable); + [$filename] = TestSuite::getInstance()->snapshots->get(); + + expect($filename)->toStartWith('tests/.pest/snapshots-external/') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + ->and($this->snapshotable)->toMatchSnapshot(); +})->with(['my-datas-set-value']); + +describe('within describe', function () { + test('pass with dataset', function ($data) { + TestSuite::getInstance()->snapshots->save($this->snapshotable); + [$filename] = TestSuite::getInstance()->snapshots->get(); + + expect($filename)->toStartWith('tests/.pest/snapshots-external/') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + ->and($this->snapshotable)->toMatchSnapshot(); + }); +})->with(['my-datas-set-value']); \ No newline at end of file diff --git "a/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" "b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" new file mode 100644 index 000000000..c2b4dc0a1 --- /dev/null +++ "b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" @@ -0,0 +1,7 @@ +
+
+
+

Snapshot

+
+
+
\ No newline at end of file diff --git a/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap new file mode 100644 index 000000000..c2b4dc0a1 --- /dev/null +++ b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap @@ -0,0 +1,7 @@ +
+
+
+

Snapshot

+
+
+
\ No newline at end of file diff --git a/tests/Features/Expect/toMatchSnapshot.php b/tests/Features/Expect/toMatchSnapshot.php index c3df8bace..c2515829c 100644 --- a/tests/Features/Expect/toMatchSnapshot.php +++ b/tests/Features/Expect/toMatchSnapshot.php @@ -74,7 +74,8 @@ public function toString() TestSuite::getInstance()->snapshots->save($this->snapshotable); [$filename] = TestSuite::getInstance()->snapshots->get(); - expect($filename)->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + expect($filename)->toStartWith('tests/.pest/snapshots/') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') ->and($this->snapshotable)->toMatchSnapshot(); })->with(['my-datas-set-value']); @@ -83,7 +84,8 @@ public function toString() TestSuite::getInstance()->snapshots->save($this->snapshotable); [$filename] = TestSuite::getInstance()->snapshots->get(); - expect($filename)->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + expect($filename)->toStartWith('tests/.pest/snapshots/') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') ->and($this->snapshotable)->toMatchSnapshot(); }); })->with(['my-datas-set-value']); From 19e9267021b811d30cbfe53737d78dfff848ad56 Mon Sep 17 00:00:00 2001 From: Punyapal Shah Date: Sun, 20 Apr 2025 15:19:40 +0530 Subject: [PATCH 021/134] fix: update PHPUnit version --- composer.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/composer.json b/composer.json index a4f0f21d4..be8a89a96 100644 --- a/composer.json +++ b/composer.json @@ -22,13 +22,11 @@ "nunomaduro/collision": "^8.8.0", "nunomaduro/termwind": "^2.3.0", "pestphp/pest-plugin": "^3.0.0", - "pestphp/pest-plugin-arch": "^3.1.0", "pestphp/pest-plugin-mutate": "^3.0.5", - "phpunit/phpunit": "^11.5.15" + "phpunit/phpunit": "12.1.0" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">11.5.15", "sebastian/exporter": "<6.0.0", "webmozart/assert": "<1.11.0" }, @@ -53,8 +51,6 @@ ] }, "require-dev": { - "pestphp/pest-dev-tools": "^3.4.0", - "pestphp/pest-plugin-type-coverage": "^3.5.0", "symfony/process": "^7.2.5" }, "minimum-stability": "dev", From 442a58d07f0c892d0c4219d4690e437098e98adc Mon Sep 17 00:00:00 2001 From: Punyapal Shah Date: Sun, 20 Apr 2025 15:19:56 +0530 Subject: [PATCH 022/134] refactor: comment arch presets in Arch.php --- tests/Arch.php | 98 +++++++++++++++++++++++++------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/tests/Arch.php b/tests/Arch.php index d8deb4609..4dcc983e7 100644 --- a/tests/Arch.php +++ b/tests/Arch.php @@ -2,57 +2,57 @@ use Pest\Expectation; -arch()->preset()->php()->ignoring([ - Expectation::class, - 'debug_backtrace', - 'var_export', - 'xdebug_info', -]); +// arch()->preset()->php()->ignoring([ +// Expectation::class, +// 'debug_backtrace', +// 'var_export', +// 'xdebug_info', +// ]); -arch()->preset()->strict()->ignoring([ - 'usleep', -]); +// arch()->preset()->strict()->ignoring([ +// 'usleep', +// ]); -arch()->preset()->security()->ignoring([ - 'eval', - 'str_shuffle', - 'exec', - 'unserialize', - 'extract', - 'assert', -]); +// arch()->preset()->security()->ignoring([ +// 'eval', +// 'str_shuffle', +// 'exec', +// 'unserialize', +// 'extract', +// 'assert', +// ]); -arch('globals') - ->expect(['dd', 'dump', 'ray', 'die', 'var_dump', 'sleep']) - ->not->toBeUsed() - ->ignoring(Expectation::class); +// arch('globals') +// ->expect(['dd', 'dump', 'ray', 'die', 'var_dump', 'sleep']) +// ->not->toBeUsed() +// ->ignoring(Expectation::class); -arch('dependencies') - ->expect('Pest') - ->toOnlyUse([ - 'dd', - 'dump', - 'expect', - 'uses', - 'Termwind', - 'ParaTest', - 'Pest\Arch', - 'Pest\Mutate\Contracts\Configuration', - 'Pest\Mutate\Decorators\TestCallDecorator', - 'Pest\Mutate\Repositories\ConfigurationRepository', - 'Pest\Plugin', - 'NunoMaduro\Collision', - 'Whoops', - 'Symfony\Component\Console', - 'Symfony\Component\Process', - ])->ignoring(['Composer', 'PHPUnit', 'SebastianBergmann']); +// arch('dependencies') +// ->expect('Pest') +// ->toOnlyUse([ +// 'dd', +// 'dump', +// 'expect', +// 'uses', +// 'Termwind', +// 'ParaTest', +// 'Pest\Arch', +// 'Pest\Mutate\Contracts\Configuration', +// 'Pest\Mutate\Decorators\TestCallDecorator', +// 'Pest\Mutate\Repositories\ConfigurationRepository', +// 'Pest\Plugin', +// 'NunoMaduro\Collision', +// 'Whoops', +// 'Symfony\Component\Console', +// 'Symfony\Component\Process', +// ])->ignoring(['Composer', 'PHPUnit', 'SebastianBergmann']); -arch('contracts') - ->expect('Pest\Contracts') - ->toOnlyUse([ - 'NunoMaduro\Collision\Contracts', - 'Pest\Factories\TestCaseMethodFactory', - 'Symfony\Component\Console', - 'Pest\Arch\Contracts', - 'Pest\PendingCalls', - ])->toBeInterfaces(); +// arch('contracts') +// ->expect('Pest\Contracts') +// ->toOnlyUse([ +// 'NunoMaduro\Collision\Contracts', +// 'Pest\Factories\TestCaseMethodFactory', +// 'Symfony\Component\Console', +// 'Pest\Arch\Contracts', +// 'Pest\PendingCalls', +// ])->toBeInterfaces(); From 4f6140fdb176b38e5773954334e3ba707253da10 Mon Sep 17 00:00:00 2001 From: Punyapal Shah Date: Sun, 20 Apr 2025 15:37:02 +0530 Subject: [PATCH 023/134] refactor: move test case initialization to a separate method in Testable trait --- src/Concerns/Testable.php | 49 ++++++++++++++++++++++----------------- tests/Unit/Preset.php | 2 +- 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/src/Concerns/Testable.php b/src/Concerns/Testable.php index 37d3b175a..7199ad5b1 100644 --- a/src/Concerns/Testable.php +++ b/src/Concerns/Testable.php @@ -101,27 +101,6 @@ trait Testable */ private array $__snapshotChanges = []; - /** - * Creates a new Test Case instance. - */ - public function __construct(string $name) - { - parent::__construct($name); - - $test = TestSuite::getInstance()->tests->get(self::$__filename); - - if ($test->hasMethod($name)) { - $method = $test->getMethod($name); - $this->__description = self::$__latestDescription = $method->description; - self::$__latestAssignees = $method->assignees; - self::$__latestNotes = $method->notes; - self::$__latestIssues = $method->issues; - self::$__latestPrs = $method->prs; - $this->__describing = $method->describing; - $this->__test = $method->getClosure(); - } - } - /** * Resets the test case static properties. */ @@ -240,6 +219,9 @@ protected function setUp(...$arguments): void { TestSuite::getInstance()->test = $this; + // Initialize test case properties + $this->__initializeTestCase(); + $method = TestSuite::getInstance()->tests->get(self::$__filename)->getMethod($this->name()); $method->setUp($this); @@ -285,6 +267,31 @@ protected function setUp(...$arguments): void $this->__callClosure($beforeEach, $arguments); } + /** + * Initialize test case properties from TestSuite. + */ + private function __initializeTestCase(): void + { + // Return if the test case has already been initialized + if (isset($this->__test)) { + return; + } + + $name = $this->name(); + $test = TestSuite::getInstance()->tests->get(self::$__filename); + + if ($test->hasMethod($name)) { + $method = $test->getMethod($name); + $this->__description = self::$__latestDescription = $method->description; + self::$__latestAssignees = $method->assignees; + self::$__latestNotes = $method->notes; + self::$__latestIssues = $method->issues; + self::$__latestPrs = $method->prs; + $this->__describing = $method->describing; + $this->__test = $method->getClosure(); + } + } + /** * Gets executed after the Test Case. */ diff --git a/tests/Unit/Preset.php b/tests/Unit/Preset.php index bdf461a7a..e777982b7 100644 --- a/tests/Unit/Preset.php +++ b/tests/Unit/Preset.php @@ -10,4 +10,4 @@ $this->preset()->myAnotherFramework(); })->throws(InvalidArgumentException::class, 'The preset [myAnotherFramework] does not exist. The available presets are [php, laravel, strict, security, relaxed, myFramework].'); -arch()->preset()->myFramework(); +// arch()->preset()->myFramework(); From d1608bf33d0f9945dd6329775bdf5655dd595e6d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 20 Apr 2025 21:33:50 +0100 Subject: [PATCH 024/134] chore: prepares for 4.x --- composer.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index a4f0f21d4..8f6c9c582 100644 --- a/composer.json +++ b/composer.json @@ -17,19 +17,19 @@ } ], "require": { - "php": "^8.2.0", + "php": "^8.3.0", "brianium/paratest": "^7.8.3", "nunomaduro/collision": "^8.8.0", "nunomaduro/termwind": "^2.3.0", - "pestphp/pest-plugin": "^3.0.0", - "pestphp/pest-plugin-arch": "^3.1.0", - "pestphp/pest-plugin-mutate": "^3.0.5", - "phpunit/phpunit": "^11.5.15" + "pestphp/pest-plugin": "^4.0.0", + "pestphp/pest-plugin-arch": "^4.0.0", + "pestphp/pest-plugin-mutate": "^4.0.0", + "phpunit/phpunit": "^12.1.2" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">11.5.15", - "sebastian/exporter": "<6.0.0", + "phpunit/phpunit": ">12.1.2", + "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, "autoload": { @@ -53,8 +53,8 @@ ] }, "require-dev": { - "pestphp/pest-dev-tools": "^3.4.0", - "pestphp/pest-plugin-type-coverage": "^3.5.0", + "pestphp/pest-dev-tools": "^4.0.0", + "pestphp/pest-plugin-type-coverage": "^4.0.0", "symfony/process": "^7.2.5" }, "minimum-stability": "dev", From 8cfb0acf46e10a3468841027ab1d7e028866c73d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 20 Apr 2025 21:50:56 +0100 Subject: [PATCH 025/134] bump paratest --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 8f6c9c582..62e09636c 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.8.3", + "brianium/paratest": "^7.9.1", "nunomaduro/collision": "^8.8.0", "nunomaduro/termwind": "^2.3.0", "pestphp/pest-plugin": "^4.0.0", From 791734a29cf597beec9d44309fcf6f7a83b9fa97 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 20 Apr 2025 22:19:25 +0100 Subject: [PATCH 026/134] Fixes tests --- composer.json | 10 +- src/Pest.php | 2 +- .../Parallel/Paratest/WrapperRunner.php | 5 + .../Parallel/Support/CompactPrinter.php | 16 +-- ...isual_snapshot_of_help_command_output.snap | 4 +- ...isual_snapshot_of_help_command_output.snap | 2 +- tests/Arch.php | 98 +++++++++---------- tests/Unit/Preset.php | 2 +- 8 files changed, 73 insertions(+), 66 deletions(-) diff --git a/composer.json b/composer.json index 62e09636c..d2a1461f0 100644 --- a/composer.json +++ b/composer.json @@ -76,11 +76,11 @@ "test:lint": "pint --test", "test:type:check": "phpstan analyse --ansi --memory-limit=-1 --debug", "test:type:coverage": "php -d memory_limit=-1 bin/pest --type-coverage --min=100", - "test:unit": "php bin/pest --colors=always --exclude-group=integration --compact", - "test:inline": "php bin/pest --colors=always --configuration=phpunit.inline.xml", - "test:parallel": "php bin/pest --colors=always --exclude-group=integration --parallel --processes=3", - "test:integration": "php bin/pest --colors=always --group=integration -v", - "update:snapshots": "REBUILD_SNAPSHOTS=true php bin/pest --colors=always --update-snapshots", + "test:unit": "php bin/pest --exclude-group=integration --compact", + "test:inline": "php bin/pest --configuration=phpunit.inline.xml", + "test:parallel": "php bin/pest --exclude-group=integration --parallel --processes=3", + "test:integration": "php bin/pest --group=integration -v", + "update:snapshots": "REBUILD_SNAPSHOTS=true php bin/pest --update-snapshots", "test": [ "@test:refacto", "@test:lint", diff --git a/src/Pest.php b/src/Pest.php index db27e2066..d23cfd5c4 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '3.8.2'; + return '4.0.0-alpha.1'; } function testDirectory(string $file = ''): string diff --git a/src/Plugins/Parallel/Paratest/WrapperRunner.php b/src/Plugins/Parallel/Paratest/WrapperRunner.php index 282749d32..48c88e7b2 100644 --- a/src/Plugins/Parallel/Paratest/WrapperRunner.php +++ b/src/Plugins/Parallel/Paratest/WrapperRunner.php @@ -313,6 +313,7 @@ private function complete(TestResult $testResultSum): int $testResult = unserialize($contents); assert($testResult instanceof TestResult); + $testResultSum = new TestResult( (int) $testResultSum->hasTests() + (int) $testResult->hasTests(), $testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(), @@ -325,8 +326,10 @@ private function complete(TestResult $testResultSum): int array_merge_recursive($testResultSum->testMarkedIncompleteEvents(), $testResult->testMarkedIncompleteEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitDeprecationEvents(), $testResult->testTriggeredPhpunitDeprecationEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitErrorEvents(), $testResult->testTriggeredPhpunitErrorEvents()), + array_merge_recursive($testResultSum->testTriggeredPhpunitNoticeEvents(), $testResult->testTriggeredPhpunitNoticeEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitWarningEvents(), $testResult->testTriggeredPhpunitWarningEvents()), array_merge_recursive($testResultSum->testRunnerTriggeredDeprecationEvents(), $testResult->testRunnerTriggeredDeprecationEvents()), + array_merge_recursive($testResultSum->testRunnerTriggeredNoticeEvents(), $testResult->testRunnerTriggeredNoticeEvents()), array_merge_recursive($testResultSum->testRunnerTriggeredWarningEvents(), $testResult->testRunnerTriggeredWarningEvents()), array_merge_recursive($testResultSum->errors(), $testResult->errors()), array_merge_recursive($testResultSum->deprecations(), $testResult->deprecations()), @@ -351,8 +354,10 @@ private function complete(TestResult $testResultSum): int $testResultSum->testMarkedIncompleteEvents(), $testResultSum->testTriggeredPhpunitDeprecationEvents(), $testResultSum->testTriggeredPhpunitErrorEvents(), + $testResultSum->testTriggeredPhpunitNoticeEvents(), $testResultSum->testTriggeredPhpunitWarningEvents(), $testResultSum->testRunnerTriggeredDeprecationEvents(), + $testResultSum->testRunnerTriggeredNoticeEvents(), array_values(array_filter( $testResultSum->testRunnerTriggeredWarningEvents(), fn (WarningTriggered $event): bool => ! str_contains($event->message(), 'No tests found') diff --git a/src/Plugins/Parallel/Support/CompactPrinter.php b/src/Plugins/Parallel/Support/CompactPrinter.php index 25226b10e..bc2e1c3f2 100644 --- a/src/Plugins/Parallel/Support/CompactPrinter.php +++ b/src/Plugins/Parallel/Support/CompactPrinter.php @@ -131,14 +131,14 @@ public function recap(State $state, PHPUnitTestResult $testResult, Duration $dur $status['collected'], $status['threshold'], $status['roots'], - null, - null, - null, - null, - null, - null, - null, - null, + 0.00, + 0.00, + 0.00, + 0.00, + false, + false, + false, + 0, ); $telemetry = new Info( diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index da7acad74..9966d901a 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 3.8.2. + Pest Testing Framework 4.0.0-alpha.1. USAGE: pest [options] @@ -68,6 +68,7 @@ --fail-on-risky Signal failure using shell exit code when a test was considered risky --fail-on-deprecation Signal failure using shell exit code when a deprecation was triggered --fail-on-phpunit-deprecation Signal failure using shell exit code when a PHPUnit deprecation was triggered + --fail-on-phpunit-notice Signal failure using shell exit code when a PHPUnit notice was triggered --fail-on-notice Signal failure using shell exit code when a notice was triggered --fail-on-skipped Signal failure using shell exit code when a test was skipped --fail-on-incomplete Signal failure using shell exit code when a test was marked incomplete @@ -88,6 +89,7 @@ --display-skipped ........................ Display details for skipped tests --display-deprecations . Display details for deprecations triggered by tests --display-phpunit-deprecations .... Display details for PHPUnit deprecations + --display-phpunit-notices .............. Display details for PHPUnit notices --display-errors ............. Display details for errors triggered by tests --display-notices ........... Display details for notices triggered by tests --display-warnings ......... Display details for warnings triggered by tests diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index cd2d2cfb9..c9dea0d54 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 3.8.2. + Pest Testing Framework 4.0.0-alpha.1. diff --git a/tests/Arch.php b/tests/Arch.php index 4dcc983e7..d8deb4609 100644 --- a/tests/Arch.php +++ b/tests/Arch.php @@ -2,57 +2,57 @@ use Pest\Expectation; -// arch()->preset()->php()->ignoring([ -// Expectation::class, -// 'debug_backtrace', -// 'var_export', -// 'xdebug_info', -// ]); +arch()->preset()->php()->ignoring([ + Expectation::class, + 'debug_backtrace', + 'var_export', + 'xdebug_info', +]); -// arch()->preset()->strict()->ignoring([ -// 'usleep', -// ]); +arch()->preset()->strict()->ignoring([ + 'usleep', +]); -// arch()->preset()->security()->ignoring([ -// 'eval', -// 'str_shuffle', -// 'exec', -// 'unserialize', -// 'extract', -// 'assert', -// ]); +arch()->preset()->security()->ignoring([ + 'eval', + 'str_shuffle', + 'exec', + 'unserialize', + 'extract', + 'assert', +]); -// arch('globals') -// ->expect(['dd', 'dump', 'ray', 'die', 'var_dump', 'sleep']) -// ->not->toBeUsed() -// ->ignoring(Expectation::class); +arch('globals') + ->expect(['dd', 'dump', 'ray', 'die', 'var_dump', 'sleep']) + ->not->toBeUsed() + ->ignoring(Expectation::class); -// arch('dependencies') -// ->expect('Pest') -// ->toOnlyUse([ -// 'dd', -// 'dump', -// 'expect', -// 'uses', -// 'Termwind', -// 'ParaTest', -// 'Pest\Arch', -// 'Pest\Mutate\Contracts\Configuration', -// 'Pest\Mutate\Decorators\TestCallDecorator', -// 'Pest\Mutate\Repositories\ConfigurationRepository', -// 'Pest\Plugin', -// 'NunoMaduro\Collision', -// 'Whoops', -// 'Symfony\Component\Console', -// 'Symfony\Component\Process', -// ])->ignoring(['Composer', 'PHPUnit', 'SebastianBergmann']); +arch('dependencies') + ->expect('Pest') + ->toOnlyUse([ + 'dd', + 'dump', + 'expect', + 'uses', + 'Termwind', + 'ParaTest', + 'Pest\Arch', + 'Pest\Mutate\Contracts\Configuration', + 'Pest\Mutate\Decorators\TestCallDecorator', + 'Pest\Mutate\Repositories\ConfigurationRepository', + 'Pest\Plugin', + 'NunoMaduro\Collision', + 'Whoops', + 'Symfony\Component\Console', + 'Symfony\Component\Process', + ])->ignoring(['Composer', 'PHPUnit', 'SebastianBergmann']); -// arch('contracts') -// ->expect('Pest\Contracts') -// ->toOnlyUse([ -// 'NunoMaduro\Collision\Contracts', -// 'Pest\Factories\TestCaseMethodFactory', -// 'Symfony\Component\Console', -// 'Pest\Arch\Contracts', -// 'Pest\PendingCalls', -// ])->toBeInterfaces(); +arch('contracts') + ->expect('Pest\Contracts') + ->toOnlyUse([ + 'NunoMaduro\Collision\Contracts', + 'Pest\Factories\TestCaseMethodFactory', + 'Symfony\Component\Console', + 'Pest\Arch\Contracts', + 'Pest\PendingCalls', + ])->toBeInterfaces(); diff --git a/tests/Unit/Preset.php b/tests/Unit/Preset.php index e777982b7..bdf461a7a 100644 --- a/tests/Unit/Preset.php +++ b/tests/Unit/Preset.php @@ -10,4 +10,4 @@ $this->preset()->myAnotherFramework(); })->throws(InvalidArgumentException::class, 'The preset [myAnotherFramework] does not exist. The available presets are [php, laravel, strict, security, relaxed, myFramework].'); -// arch()->preset()->myFramework(); +arch()->preset()->myFramework(); From 635e3b4c41e47320354f0564b4ea948fcc79df29 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 20 Apr 2025 23:02:19 +0100 Subject: [PATCH 027/134] chore: deprecates php 8.2 --- .github/workflows/static.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 3373eafb9..69dd6b986 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -24,7 +24,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 8.2 + php-version: 8.3 tools: composer:v2 coverage: none diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c4902b423..abafbbbb7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] symfony: ['7.1'] - php: ['8.2', '8.3', '8.4'] + php: ['8.3', '8.4'] dependency_version: [prefer-lowest, prefer-stable] name: PHP ${{ matrix.php }} - Symfony ^${{ matrix.symfony }} - ${{ matrix.os }} - ${{ matrix.dependency_version }} From db9243ca2ebefcd38dbba5b7ce0f3466efe8369d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 29 Apr 2025 09:57:02 +0100 Subject: [PATCH 028/134] bump dependencies --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index d2a1461f0..f4617a5b6 100644 --- a/composer.json +++ b/composer.json @@ -24,11 +24,11 @@ "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", - "phpunit/phpunit": "^12.1.2" + "phpunit/phpunit": "^12.1.3" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">12.1.2", + "phpunit/phpunit": ">12.1.3", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, From a3107961655d3d1bb3e8ba44568f3549a053999c Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 29 Apr 2025 11:38:33 +0100 Subject: [PATCH 029/134] Fixes filtering tests --- overrides/TextUI/TestSuiteFilterProcessor.php | 9 +++++ src/Bootstrappers/BootExcludeList.php | 2 +- src/Bootstrappers/BootFiles.php | 2 +- src/Bootstrappers/BootOverrides.php | 2 +- src/Bootstrappers/BootSubscribers.php | 2 +- src/Concerns/Testable.php | 5 +-- src/Console/Help.php | 2 +- src/Console/Thanks.php | 2 +- src/Kernel.php | 2 +- src/Logging/Converter.php | 2 +- src/Plugins/Cache.php | 2 +- src/Plugins/Configuration.php | 2 +- src/Plugins/Coverage.php | 15 ++----- src/Plugins/Environment.php | 4 +- src/Plugins/Init.php | 4 +- src/Plugins/Only.php | 2 +- src/Plugins/Parallel.php | 6 +-- src/Plugins/Parallel/Handlers/Parallel.php | 2 +- .../Parallel/Paratest/CleanConsoleOutput.php | 1 + .../Parallel/Paratest/WrapperRunner.php | 13 ++++++- .../Parallel/Support/CompactPrinter.php | 2 +- src/Plugins/Verbose.php | 2 +- src/Repositories/DatasetsRepository.php | 2 +- src/Result.php | 6 +-- .../EnsureTestCaseIsInitiatedFilter.php | 39 +++++++++++++++++++ src/Support/Backtrace.php | 7 +--- src/Support/DatasetInfo.php | 4 +- src/Support/ExceptionTrace.php | 2 +- src/Support/Exporter.php | 2 +- src/Support/HigherOrderMessage.php | 2 +- src/Support/Str.php | 7 +--- 31 files changed, 98 insertions(+), 58 deletions(-) create mode 100644 src/Runner/Filter/EnsureTestCaseIsInitiatedFilter.php diff --git a/overrides/TextUI/TestSuiteFilterProcessor.php b/overrides/TextUI/TestSuiteFilterProcessor.php index 536ab2081..e13d5c98a 100644 --- a/overrides/TextUI/TestSuiteFilterProcessor.php +++ b/overrides/TextUI/TestSuiteFilterProcessor.php @@ -45,6 +45,7 @@ namespace PHPUnit\TextUI; use Pest\Plugins\Only; +use Pest\Runner\Filter\EnsureTestCaseIsInitiatedFilter; use PHPUnit\Event; use PHPUnit\Framework\TestSuite; use PHPUnit\Runner\Filter\Factory; @@ -66,6 +67,12 @@ public function process(Configuration $configuration, TestSuite $suite): void { $factory = new Factory; + // @phpstan-ignore-next-line + (fn () => $this->filters[] = [ + 'className' => EnsureTestCaseIsInitiatedFilter::class, + 'argument' => '', + ])->call($factory); + if (! $configuration->hasFilter() && ! $configuration->hasGroups() && ! $configuration->hasExcludeGroups() && @@ -73,6 +80,8 @@ public function process(Configuration $configuration, TestSuite $suite): void ! $configuration->hasTestsCovering() && ! $configuration->hasTestsUsing() && ! Only::isEnabled()) { + $suite->injectFilter($factory); + return; } diff --git a/src/Bootstrappers/BootExcludeList.php b/src/Bootstrappers/BootExcludeList.php index abd1552c6..69d9dce11 100644 --- a/src/Bootstrappers/BootExcludeList.php +++ b/src/Bootstrappers/BootExcludeList.php @@ -17,7 +17,7 @@ final class BootExcludeList implements Bootstrapper * * @var array */ - private const EXCLUDE_LIST = [ + private const array EXCLUDE_LIST = [ 'bin', 'overrides', 'resources', diff --git a/src/Bootstrappers/BootFiles.php b/src/Bootstrappers/BootFiles.php index 2017a7964..ea7e60fae 100644 --- a/src/Bootstrappers/BootFiles.php +++ b/src/Bootstrappers/BootFiles.php @@ -24,7 +24,7 @@ final class BootFiles implements Bootstrapper * * @var array */ - private const STRUCTURE = [ + private const array STRUCTURE = [ 'Expectations', 'Expectations.php', 'Helpers', diff --git a/src/Bootstrappers/BootOverrides.php b/src/Bootstrappers/BootOverrides.php index efbcf7a35..ae2fa0705 100644 --- a/src/Bootstrappers/BootOverrides.php +++ b/src/Bootstrappers/BootOverrides.php @@ -17,7 +17,7 @@ final class BootOverrides implements Bootstrapper * * @var array */ - public const FILES = [ + public const array FILES = [ '53c246e5f416a39817ac81124cdd64ea8403038d01d7a202e1ffa486fbdf3fa7' => 'Runner/Filter/NameFilterIterator.php', '77ffb7647b583bd82e37962c6fbdc4b04d3344d8a2c1ed103e625ed1ff7cb5c2' => 'Runner/ResultCache/DefaultResultCache.php', 'd0e81317889ad88c707db4b08a94cadee4c9010d05ff0a759f04e71af5efed89' => 'Runner/TestSuiteLoader.php', diff --git a/src/Bootstrappers/BootSubscribers.php b/src/Bootstrappers/BootSubscribers.php index 57f98e332..7877b2372 100644 --- a/src/Bootstrappers/BootSubscribers.php +++ b/src/Bootstrappers/BootSubscribers.php @@ -20,7 +20,7 @@ * * @var array> */ - private const SUBSCRIBERS = [ + private const array SUBSCRIBERS = [ Subscribers\EnsureConfigurationIsAvailable::class, Subscribers\EnsureIgnorableTestCasesAreIgnored::class, Subscribers\EnsureKernelDumpIsFlushed::class, diff --git a/src/Concerns/Testable.php b/src/Concerns/Testable.php index 7199ad5b1..9b8dc5f9d 100644 --- a/src/Concerns/Testable.php +++ b/src/Concerns/Testable.php @@ -219,9 +219,6 @@ protected function setUp(...$arguments): void { TestSuite::getInstance()->test = $this; - // Initialize test case properties - $this->__initializeTestCase(); - $method = TestSuite::getInstance()->tests->get(self::$__filename)->getMethod($this->name()); $method->setUp($this); @@ -270,7 +267,7 @@ protected function setUp(...$arguments): void /** * Initialize test case properties from TestSuite. */ - private function __initializeTestCase(): void + public function __initializeTestCase(): void { // Return if the test case has already been initialized if (isset($this->__test)) { diff --git a/src/Console/Help.php b/src/Console/Help.php index 3d09d5f55..50823d593 100644 --- a/src/Console/Help.php +++ b/src/Console/Help.php @@ -16,7 +16,7 @@ * * @var array */ - private const HELP_MESSAGES = [ + private const array HELP_MESSAGES = [ 'Pest Options:', ' --init Initialise a standard Pest configuration', ' --coverage Enable coverage and output to standard output', diff --git a/src/Console/Thanks.php b/src/Console/Thanks.php index 7e68f8711..fc9f558af 100644 --- a/src/Console/Thanks.php +++ b/src/Console/Thanks.php @@ -22,7 +22,7 @@ * * @var array */ - private const FUNDING_MESSAGES = [ + private const array FUNDING_MESSAGES = [ 'Star' => 'https://github.com/pestphp/pest', 'YouTube' => 'https://youtube.com/@nunomaduro', 'TikTok' => 'https://tiktok.com/@nunomaduro', diff --git a/src/Kernel.php b/src/Kernel.php index fc82574c4..927169138 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -34,7 +34,7 @@ * * @var array */ - private const BOOTSTRAPPERS = [ + private const array BOOTSTRAPPERS = [ Bootstrappers\BootOverrides::class, Bootstrappers\BootSubscribers::class, Bootstrappers\BootFiles::class, diff --git a/src/Logging/Converter.php b/src/Logging/Converter.php index b4560e227..4805a9463 100644 --- a/src/Logging/Converter.php +++ b/src/Logging/Converter.php @@ -31,7 +31,7 @@ /** * The prefix for the test suite name. */ - private const PREFIX = 'P\\'; + private const string PREFIX = 'P\\'; /** * The state generator. diff --git a/src/Plugins/Cache.php b/src/Plugins/Cache.php index ea3abb78f..3ae0433b8 100644 --- a/src/Plugins/Cache.php +++ b/src/Plugins/Cache.php @@ -21,7 +21,7 @@ final class Cache implements HandlesArguments /** * The temporary folder. */ - private const TEMPORARY_FOLDER = __DIR__ + private const string TEMPORARY_FOLDER = __DIR__ .DIRECTORY_SEPARATOR .'..' .DIRECTORY_SEPARATOR diff --git a/src/Plugins/Configuration.php b/src/Plugins/Configuration.php index acae8fb41..27d07ab82 100644 --- a/src/Plugins/Configuration.php +++ b/src/Plugins/Configuration.php @@ -21,7 +21,7 @@ final class Configuration implements HandlesArguments, Terminable /** * The base PHPUnit file. */ - public const BASE_PHPUNIT_FILE = __DIR__ + public const string BASE_PHPUNIT_FILE = __DIR__ .DIRECTORY_SEPARATOR .'..' .DIRECTORY_SEPARATOR diff --git a/src/Plugins/Coverage.php b/src/Plugins/Coverage.php index a5061d258..712f5de55 100644 --- a/src/Plugins/Coverage.php +++ b/src/Plugins/Coverage.php @@ -17,20 +17,11 @@ */ final class Coverage implements AddsOutput, HandlesArguments { - /** - * @var string - */ - private const COVERAGE_OPTION = 'coverage'; + private const string COVERAGE_OPTION = 'coverage'; - /** - * @var string - */ - private const MIN_OPTION = 'min'; + private const string MIN_OPTION = 'min'; - /** - * @var string - */ - private const EXACTLY_OPTION = 'exactly'; + private const string EXACTLY_OPTION = 'exactly'; /** * Whether it should show the coverage or not. diff --git a/src/Plugins/Environment.php b/src/Plugins/Environment.php index 8ff10b4c1..7edbbbd3d 100644 --- a/src/Plugins/Environment.php +++ b/src/Plugins/Environment.php @@ -14,12 +14,12 @@ final class Environment implements HandlesArguments /** * The continuous integration environment. */ - public const CI = 'ci'; + public const string CI = 'ci'; /** * The local environment. */ - public const LOCAL = 'local'; + public const string LOCAL = 'local'; /** * The current environment. diff --git a/src/Plugins/Init.php b/src/Plugins/Init.php index eb87b0869..c31dd7599 100644 --- a/src/Plugins/Init.php +++ b/src/Plugins/Init.php @@ -20,12 +20,12 @@ /** * The option the triggers the init job. */ - private const INIT_OPTION = '--init'; + private const string INIT_OPTION = '--init'; /** * The files that will be created. */ - private const STUBS = [ + private const array STUBS = [ 'phpunit.xml.stub' => 'phpunit.xml', 'Pest.php.stub' => 'tests/Pest.php', 'TestCase.php.stub' => 'tests/TestCase.php', diff --git a/src/Plugins/Only.php b/src/Plugins/Only.php index 0d9581736..7c2809f11 100644 --- a/src/Plugins/Only.php +++ b/src/Plugins/Only.php @@ -15,7 +15,7 @@ final class Only implements Terminable /** * The temporary folder. */ - private const TEMPORARY_FOLDER = __DIR__ + private const string TEMPORARY_FOLDER = __DIR__ .DIRECTORY_SEPARATOR .'..' .DIRECTORY_SEPARATOR diff --git a/src/Plugins/Parallel.php b/src/Plugins/Parallel.php index 1632a0504..949028236 100644 --- a/src/Plugins/Parallel.php +++ b/src/Plugins/Parallel.php @@ -23,9 +23,9 @@ final class Parallel implements HandlesArguments { use HandleArguments; - private const GLOBAL_PREFIX = 'PEST_PARALLEL_GLOBAL_'; + private const string GLOBAL_PREFIX = 'PEST_PARALLEL_GLOBAL_'; - private const HANDLERS = [ + private const array HANDLERS = [ Parallel\Handlers\Parallel::class, Parallel\Handlers\Pest::class, Parallel\Handlers\Laravel::class, @@ -34,7 +34,7 @@ final class Parallel implements HandlesArguments /** * @var string[] */ - private const UNSUPPORTED_ARGUMENTS = ['--todo', '--todos', '--retry', '--notes', '--issue', '--pr', '--pull-request']; + private const array UNSUPPORTED_ARGUMENTS = ['--todo', '--todos', '--retry', '--notes', '--issue', '--pr', '--pull-request']; /** * Whether the given command line arguments indicate that the test suite should be run in parallel. diff --git a/src/Plugins/Parallel/Handlers/Parallel.php b/src/Plugins/Parallel/Handlers/Parallel.php index 76a59af6c..d99139b2b 100644 --- a/src/Plugins/Parallel/Handlers/Parallel.php +++ b/src/Plugins/Parallel/Handlers/Parallel.php @@ -18,7 +18,7 @@ final class Parallel implements HandlesArguments /** * The list of arguments to remove. */ - private const ARGS_TO_REMOVE = [ + private const array ARGS_TO_REMOVE = [ '--parallel', '-p', '--no-output', diff --git a/src/Plugins/Parallel/Paratest/CleanConsoleOutput.php b/src/Plugins/Parallel/Paratest/CleanConsoleOutput.php index d2801ced5..cf5272b15 100644 --- a/src/Plugins/Parallel/Paratest/CleanConsoleOutput.php +++ b/src/Plugins/Parallel/Paratest/CleanConsoleOutput.php @@ -11,6 +11,7 @@ final class CleanConsoleOutput extends ConsoleOutput /** * {@inheritdoc} */ + #[\Override] protected function doWrite(string $message, bool $newline): void // @pest-arch-ignore-line { if ($this->isOpeningHeadline($message)) { diff --git a/src/Plugins/Parallel/Paratest/WrapperRunner.php b/src/Plugins/Parallel/Paratest/WrapperRunner.php index 48c88e7b2..877a7373e 100644 --- a/src/Plugins/Parallel/Paratest/WrapperRunner.php +++ b/src/Plugins/Parallel/Paratest/WrapperRunner.php @@ -50,7 +50,7 @@ final class WrapperRunner implements RunnerInterface /** * The time to sleep between cycles. */ - private const CYCLE_SLEEP = 10000; + private const int CYCLE_SLEEP = 10000; /** * The result printer. @@ -313,7 +313,6 @@ private function complete(TestResult $testResultSum): int $testResult = unserialize($contents); assert($testResult instanceof TestResult); - $testResultSum = new TestResult( (int) $testResultSum->hasTests() + (int) $testResult->hasTests(), $testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(), @@ -328,15 +327,25 @@ private function complete(TestResult $testResultSum): int array_merge_recursive($testResultSum->testTriggeredPhpunitErrorEvents(), $testResult->testTriggeredPhpunitErrorEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitNoticeEvents(), $testResult->testTriggeredPhpunitNoticeEvents()), array_merge_recursive($testResultSum->testTriggeredPhpunitWarningEvents(), $testResult->testTriggeredPhpunitWarningEvents()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->testRunnerTriggeredDeprecationEvents(), $testResult->testRunnerTriggeredDeprecationEvents()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->testRunnerTriggeredNoticeEvents(), $testResult->testRunnerTriggeredNoticeEvents()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->testRunnerTriggeredWarningEvents(), $testResult->testRunnerTriggeredWarningEvents()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->errors(), $testResult->errors()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->deprecations(), $testResult->deprecations()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->notices(), $testResult->notices()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->warnings(), $testResult->warnings()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->phpDeprecations(), $testResult->phpDeprecations()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->phpNotices(), $testResult->phpNotices()), + // @phpstan-ignore-next-line array_merge_recursive($testResultSum->phpWarnings(), $testResult->phpWarnings()), $testResultSum->numberOfIssuesIgnoredByBaseline() + $testResult->numberOfIssuesIgnoredByBaseline(), ); diff --git a/src/Plugins/Parallel/Support/CompactPrinter.php b/src/Plugins/Parallel/Support/CompactPrinter.php index bc2e1c3f2..aa2da210c 100644 --- a/src/Plugins/Parallel/Support/CompactPrinter.php +++ b/src/Plugins/Parallel/Support/CompactPrinter.php @@ -34,7 +34,7 @@ final class CompactPrinter /** * @var array> */ - private const LOOKUP_TABLE = [ + private const array LOOKUP_TABLE = [ '.' => ['gray', '.'], 'S' => ['yellow', 's'], 'T' => ['cyan', 't'], diff --git a/src/Plugins/Verbose.php b/src/Plugins/Verbose.php index e37938a3a..9cec77deb 100644 --- a/src/Plugins/Verbose.php +++ b/src/Plugins/Verbose.php @@ -16,7 +16,7 @@ final class Verbose implements HandlesArguments /** * The list of verbosity levels. */ - private const VERBOSITY_LEVELS = ['v', 'vv', 'vvv', 'q']; + private const array VERBOSITY_LEVELS = ['v', 'vv', 'vvv', 'q']; /** * {@inheritDoc} diff --git a/src/Repositories/DatasetsRepository.php b/src/Repositories/DatasetsRepository.php index 7d318a2dd..3deee5bd5 100644 --- a/src/Repositories/DatasetsRepository.php +++ b/src/Repositories/DatasetsRepository.php @@ -19,7 +19,7 @@ */ final class DatasetsRepository { - private const SEPARATOR = '>>'; + private const string SEPARATOR = '>>'; /** * Holds the datasets. diff --git a/src/Result.php b/src/Result.php index 98e9e8b67..22e1e8950 100644 --- a/src/Result.php +++ b/src/Result.php @@ -13,11 +13,11 @@ */ final class Result { - private const SUCCESS_EXIT = 0; + private const int SUCCESS_EXIT = 0; - private const FAILURE_EXIT = 1; + private const int FAILURE_EXIT = 1; - private const EXCEPTION_EXIT = 2; + private const int EXCEPTION_EXIT = 2; /** * If the exit code is different from 0. diff --git a/src/Runner/Filter/EnsureTestCaseIsInitiatedFilter.php b/src/Runner/Filter/EnsureTestCaseIsInitiatedFilter.php new file mode 100644 index 000000000..614b38a4a --- /dev/null +++ b/src/Runner/Filter/EnsureTestCaseIsInitiatedFilter.php @@ -0,0 +1,39 @@ + $iterator + */ + public function __construct(RecursiveIterator $iterator) + { + parent::__construct($iterator); + } + + /** + * {@inheritdoc} + */ + public function accept(): bool + { + $test = $this->getInnerIterator()->current(); + + if ($test instanceof HasPrintableTestCaseName) { + /** @phpstan-ignore-next-line */ + $test->__initializeTestCase(); + } + + return true; + } +} diff --git a/src/Support/Backtrace.php b/src/Support/Backtrace.php index 030019760..652eb4425 100644 --- a/src/Support/Backtrace.php +++ b/src/Support/Backtrace.php @@ -11,12 +11,9 @@ */ final class Backtrace { - /** - * @var string - */ - private const FILE = 'file'; + private const string FILE = 'file'; - private const BACKTRACE_OPTIONS = DEBUG_BACKTRACE_IGNORE_ARGS; + private const int BACKTRACE_OPTIONS = DEBUG_BACKTRACE_IGNORE_ARGS; /** * Returns the current test file. diff --git a/src/Support/DatasetInfo.php b/src/Support/DatasetInfo.php index 46f39c416..c67f317c2 100644 --- a/src/Support/DatasetInfo.php +++ b/src/Support/DatasetInfo.php @@ -11,9 +11,9 @@ */ final class DatasetInfo { - public const DATASETS_DIR_NAME = 'Datasets'; + public const string DATASETS_DIR_NAME = 'Datasets'; - public const DATASETS_FILE_NAME = 'Datasets.php'; + public const string DATASETS_FILE_NAME = 'Datasets.php'; public static function isInsideADatasetsDirectory(string $file): bool { diff --git a/src/Support/ExceptionTrace.php b/src/Support/ExceptionTrace.php index 9af6aa5bc..9d4132e27 100644 --- a/src/Support/ExceptionTrace.php +++ b/src/Support/ExceptionTrace.php @@ -13,7 +13,7 @@ */ final class ExceptionTrace { - private const UNDEFINED_METHOD = 'Call to undefined method P\\'; + private const string UNDEFINED_METHOD = 'Call to undefined method P\\'; /** * Ensures the given closure reports the good execution context. diff --git a/src/Support/Exporter.php b/src/Support/Exporter.php index 169f4891b..44367c08e 100644 --- a/src/Support/Exporter.php +++ b/src/Support/Exporter.php @@ -15,7 +15,7 @@ /** * The maximum number of items in an array to export. */ - private const MAX_ARRAY_ITEMS = 3; + private const int MAX_ARRAY_ITEMS = 3; /** * Creates a new Exporter instance. diff --git a/src/Support/HigherOrderMessage.php b/src/Support/HigherOrderMessage.php index 89c3e1f10..ce9482445 100644 --- a/src/Support/HigherOrderMessage.php +++ b/src/Support/HigherOrderMessage.php @@ -13,7 +13,7 @@ */ final class HigherOrderMessage { - public const UNDEFINED_METHOD = 'Method %s does not exist'; + public const string UNDEFINED_METHOD = 'Method %s does not exist'; /** * An optional condition that will determine if the message will be executed. diff --git a/src/Support/Str.php b/src/Support/Str.php index 0e654bc80..67cff796d 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -13,12 +13,9 @@ final class Str * Pool of alpha-numeric characters for generating (unsafe) random strings * from. */ - private const POOL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; + private const string POOL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - /** - * @var string - */ - private const PREFIX = '__pest_evaluable_'; + private const string PREFIX = '__pest_evaluable_'; /** * Create a (unsecure & non-cryptographically safe) random alpha-numeric From 99c9f4e5d806e838820868e469e815be1670db36 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 3 May 2025 11:58:03 +0100 Subject: [PATCH 030/134] Bumps dependencies --- composer.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index f4617a5b6..cbf566a1d 100644 --- a/composer.json +++ b/composer.json @@ -18,17 +18,17 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.9.1", + "brianium/paratest": "^7.10.1", "nunomaduro/collision": "^8.8.0", "nunomaduro/termwind": "^2.3.0", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", - "phpunit/phpunit": "^12.1.3" + "phpunit/phpunit": "^12.1.4" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">12.1.3", + "phpunit/phpunit": ">12.1.4", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, From 7711a52fe909b5475d438644c106582c730f7903 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 9 May 2025 13:10:29 +0100 Subject: [PATCH 031/134] Bumps dependencies --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index cbf566a1d..6052ec75c 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ "php": "^8.3.0", "brianium/paratest": "^7.10.1", "nunomaduro/collision": "^8.8.0", - "nunomaduro/termwind": "^2.3.0", + "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", From 909d778da3cc65338111c0195ea67fccc829d84d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 21 May 2025 02:00:15 +0100 Subject: [PATCH 032/134] fix: undefined property --- src/Concerns/Testable.php | 2 +- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 4 +++- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Concerns/Testable.php b/src/Concerns/Testable.php index 9b8dc5f9d..9918eb83d 100644 --- a/src/Concerns/Testable.php +++ b/src/Concerns/Testable.php @@ -470,7 +470,7 @@ public function getPrintableTestCaseMethodName(): string */ public static function getLatestPrintableTestCaseMethodName(): string { - return self::$__latestDescription; + return self::$__latestDescription ?? ''; } /** diff --git a/src/Pest.php b/src/Pest.php index d23cfd5c4..865c18d06 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-alpha.1'; + return '4.0.0-alpha.2'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 9966d901a..09fe99289 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-alpha.1. + Pest Testing Framework 4.0.0-alpha.2. USAGE: pest [options] @@ -72,6 +72,7 @@ --fail-on-notice Signal failure using shell exit code when a notice was triggered --fail-on-skipped Signal failure using shell exit code when a test was skipped --fail-on-incomplete Signal failure using shell exit code when a test was marked incomplete + --fail-on-all-issues Signal failure using shell exit code when an issue is triggered --cache-result ............................ Write test results to cache file --do-not-cache-result .............. Do not write test results to cache file --order-by [order] Run tests in order: default|defects|depends|duration|no-depends|random|reverse|size @@ -93,6 +94,7 @@ --display-errors ............. Display details for errors triggered by tests --display-notices ........... Display details for notices triggered by tests --display-warnings ......... Display details for warnings triggered by tests + --display-all-issues ..... Display details for all issues that are triggered --reverse-list .............................. Print defects in reverse order --teamcity . Replace default progress and result output with TeamCity format --testdox ................ Replace default result output with TestDox format diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index c9dea0d54..d72ea0de3 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-alpha.1. + Pest Testing Framework 4.0.0-alpha.2. From c62cc3fef0d2751a2a087c4f6ab71b810827a0dc Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 23 May 2025 05:19:56 +0100 Subject: [PATCH 033/134] chore: adds pokio --- composer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/composer.json b/composer.json index 6052ec75c..92dcddfeb 100644 --- a/composer.json +++ b/composer.json @@ -20,6 +20,7 @@ "php": "^8.3.0", "brianium/paratest": "^7.10.1", "nunomaduro/collision": "^8.8.0", + "nunomaduro/pokio": "dev-main", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", From 02b1ffb33481197fe7abd3aed45c9e0ee961e67c Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 27 May 2025 11:37:29 +0100 Subject: [PATCH 034/134] chore: bump dependencies --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 92dcddfeb..a9800dab6 100644 --- a/composer.json +++ b/composer.json @@ -25,11 +25,11 @@ "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", - "phpunit/phpunit": "^12.1.4" + "phpunit/phpunit": "^12.1.6" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">12.1.4", + "phpunit/phpunit": ">12.1.6", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, From 0fc9d4dfe0260827fc2fd9c6fce07ed99508fcc8 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 8 Jun 2025 15:29:23 +0100 Subject: [PATCH 035/134] feat: adds phpunit `12.2.1` support --- composer.json | 5 +- .../Parallel/Paratest/ResultPrinter.php | 4 +- .../Parallel/Paratest/WrapperRunner.php | 6 +- ...isual_snapshot_of_help_command_output.snap | 3 + tests/.snapshots/success.txt | 16 ++++- tests/Features/Covers.php | 59 ------------------- tests/Features/Covers/ClassCoverage.php | 13 ++++ tests/Features/Covers/CoversNothing.php | 10 ++++ tests/Features/Covers/ExceptionHandling.php | 10 ++++ tests/Features/Covers/FunctionCoverage.php | 12 ++++ tests/Features/Covers/GuessCoverage.php | 17 ++++++ tests/Features/Covers/TraitCoverage.php | 11 ++++ 12 files changed, 98 insertions(+), 68 deletions(-) delete mode 100644 tests/Features/Covers.php create mode 100644 tests/Features/Covers/ClassCoverage.php create mode 100644 tests/Features/Covers/CoversNothing.php create mode 100644 tests/Features/Covers/ExceptionHandling.php create mode 100644 tests/Features/Covers/FunctionCoverage.php create mode 100644 tests/Features/Covers/GuessCoverage.php create mode 100644 tests/Features/Covers/TraitCoverage.php diff --git a/composer.json b/composer.json index a9800dab6..da76ff304 100644 --- a/composer.json +++ b/composer.json @@ -20,16 +20,15 @@ "php": "^8.3.0", "brianium/paratest": "^7.10.1", "nunomaduro/collision": "^8.8.0", - "nunomaduro/pokio": "dev-main", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", - "phpunit/phpunit": "^12.1.6" + "phpunit/phpunit": "^12.2.1" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">12.1.6", + "phpunit/phpunit": ">12.2.1", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, diff --git a/src/Plugins/Parallel/Paratest/ResultPrinter.php b/src/Plugins/Parallel/Paratest/ResultPrinter.php index bd416e1e7..e7a1c24de 100644 --- a/src/Plugins/Parallel/Paratest/ResultPrinter.php +++ b/src/Plugins/Parallel/Paratest/ResultPrinter.php @@ -59,10 +59,10 @@ public function __construct( private readonly OutputInterface $output, private readonly Options $options ) { - $this->printer = new class($this->output) implements Printer + $this->printer = new readonly class($this->output) implements Printer { public function __construct( - private readonly OutputInterface $output, + private OutputInterface $output, ) {} public function print(string $buffer): void diff --git a/src/Plugins/Parallel/Paratest/WrapperRunner.php b/src/Plugins/Parallel/Paratest/WrapperRunner.php index 877a7373e..469f2aa6f 100644 --- a/src/Plugins/Parallel/Paratest/WrapperRunner.php +++ b/src/Plugins/Parallel/Paratest/WrapperRunner.php @@ -17,6 +17,7 @@ use Pest\Result; use Pest\TestSuite; use PHPUnit\Event\Facade as EventFacade; +use PHPUnit\Event\Test\AfterLastTestMethodFailed; use PHPUnit\Event\TestRunner\WarningTriggered; use PHPUnit\Runner\CodeCoverage; use PHPUnit\Runner\ResultCache\DefaultResultCache; @@ -313,12 +314,15 @@ private function complete(TestResult $testResultSum): int $testResult = unserialize($contents); assert($testResult instanceof TestResult); + /** @var list $failedEvents */ + $failedEvents = array_merge_recursive($testResultSum->testFailedEvents(), $testResult->testFailedEvents()); + $testResultSum = new TestResult( (int) $testResultSum->hasTests() + (int) $testResult->hasTests(), $testResultSum->numberOfTestsRun() + $testResult->numberOfTestsRun(), $testResultSum->numberOfAssertions() + $testResult->numberOfAssertions(), array_merge_recursive($testResultSum->testErroredEvents(), $testResult->testErroredEvents()), - array_merge_recursive($testResultSum->testFailedEvents(), $testResult->testFailedEvents()), + $failedEvents, array_merge_recursive($testResultSum->testConsideredRiskyEvents(), $testResult->testConsideredRiskyEvents()), array_merge_recursive($testResultSum->testSuiteSkippedEvents(), $testResult->testSuiteSkippedEvents()), array_merge_recursive($testResultSum->testSkippedEvents(), $testResult->testSkippedEvents()), diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 09fe99289..b2f7a23fe 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -100,10 +100,12 @@ --testdox ................ Replace default result output with TestDox format --testdox-summary Repeat TestDox output for tests with errors, failures, or issues --debug Replace default progress and result output with debugging information + --with-telemetry Include telemetry information in debugging information output --compact ................ Replace default result output with Compact format LOGGING OPTIONS: --log-junit [file] .......... Write test results in JUnit XML format to file + --log-otr [file] Write test results in Open Test Reporting XML format to file --log-teamcity [file] ........ Write test results in TeamCity format to file --testdox-html [file] .. Write test results in TestDox format (HTML) to file --testdox-text [file] Write test results in TestDox format (plain text) to file @@ -115,6 +117,7 @@ --coverage ..... Generate code coverage report and output to standard output --coverage --min Set the minimum required coverage percentage, and fail if not met --coverage-clover [file] Write code coverage report in Clover XML format to file + --coverage-openclover [file] Write code coverage report in OpenClover XML format to file --coverage-cobertura [file] Write code coverage report in Cobertura XML format to file --coverage-crap4j [file] Write code coverage report in Crap4J XML format to file --coverage-html [dir] Write code coverage report in HTML format to directory diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 513a804ea..5245e72cf 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -68,13 +68,23 @@ ✓ it adds coverage if --min exist ✓ it generates coverage based on file input - PASS Tests\Features\Covers + PASS Tests\Features\Covers\ClassCoverage ✓ it uses the correct PHPUnit attribute for class + + PASS Tests\Features\Covers\CoversNothing + ✓ it uses the correct PHPUnit attribute for covers nothing + + PASS Tests\Features\Covers\ExceptionHandling + ✓ it throws exception if no class nor method has been found + + PASS Tests\Features\Covers\FunctionCoverage ✓ it uses the correct PHPUnit attribute for function + + PASS Tests\Features\Covers\GuessCoverage ✓ it guesses if the given argument is a class or function + + PASS Tests\Features\Covers\TraitCoverage ✓ it uses the correct PHPUnit attribute for trait - ✓ it uses the correct PHPUnit attribute for covers nothing - ✓ it throws exception if no class nor method has been found PASS Tests\Features\DatasetsTests - 1 todo ✓ it throws exception if dataset does not exist diff --git a/tests/Features/Covers.php b/tests/Features/Covers.php deleted file mode 100644 index 386d523f3..000000000 --- a/tests/Features/Covers.php +++ /dev/null @@ -1,59 +0,0 @@ -getAttributes(); - - expect($attributes[1]->getName())->toBe('PHPUnit\Framework\Attributes\CoversClass'); - expect($attributes[1]->getArguments()[0])->toBe('Tests\Fixtures\Covers\CoversClass1'); -}); - -it('uses the correct PHPUnit attribute for function', function () { - $attributes = (new ReflectionClass($this))->getAttributes(); - - expect($attributes[3]->getName())->toBe('PHPUnit\Framework\Attributes\CoversFunction'); - expect($attributes[3]->getArguments()[0])->toBe('testCoversFunction'); -})->coversFunction('testCoversFunction'); - -it('guesses if the given argument is a class or function', function () { - $attributes = (new ReflectionClass($this))->getAttributes(); - - expect($attributes[5]->getName())->toBe(CoversClass::class); - expect($attributes[5]->getArguments()[0])->toBe(CoversClass3::class); - - expect($attributes[6]->getName())->toBe(CoversFunction::class); - expect($attributes[6]->getArguments()[0])->toBe('testCoversFunction'); -})->covers(CoversClass3::class, 'testCoversFunction'); - -it('uses the correct PHPUnit attribute for trait', function () { - $attributes = (new ReflectionClass($this))->getAttributes(); - - expect($attributes[8]->getName())->toBe('PHPUnit\Framework\Attributes\CoversTrait'); - expect($attributes[8]->getArguments()[0])->toBe('Tests\Fixtures\Covers\CoversTrait'); -})->coversTrait(CoversTrait::class); - -it('uses the correct PHPUnit attribute for covers nothing', function () { - $attributes = (new ReflectionMethod($this, $this->name()))->getAttributes(); - - expect($attributes[3]->getName())->toBe('PHPUnit\Framework\Attributes\CoversNothing'); - expect($attributes[3]->getArguments())->toHaveCount(0); -})->coversNothing(); - -it('throws exception if no class nor method has been found', function () { - $testCall = new TestCall(TestSuite::getInstance(), 'filename', 'description', fn () => 'closure'); - - $testCall->covers('fakeName'); -})->throws(InvalidArgumentException::class, 'No class, trait or method named "fakeName" has been found.'); diff --git a/tests/Features/Covers/ClassCoverage.php b/tests/Features/Covers/ClassCoverage.php new file mode 100644 index 000000000..ab805e170 --- /dev/null +++ b/tests/Features/Covers/ClassCoverage.php @@ -0,0 +1,13 @@ +getAttributes(); + + expect($attributes[1]->getName())->toBe(CoversClass::class); + expect($attributes[1]->getArguments()[0])->toBe('Tests\Fixtures\Covers\CoversClass1'); +}); diff --git a/tests/Features/Covers/CoversNothing.php b/tests/Features/Covers/CoversNothing.php new file mode 100644 index 000000000..6918414c2 --- /dev/null +++ b/tests/Features/Covers/CoversNothing.php @@ -0,0 +1,10 @@ +name()))->getAttributes(); + + expect($attributes[2]->getName())->toBe(CoversNothing::class); + expect($attributes[2]->getArguments())->toHaveCount(0); +})->coversNothing(); diff --git a/tests/Features/Covers/ExceptionHandling.php b/tests/Features/Covers/ExceptionHandling.php new file mode 100644 index 000000000..de86bb023 --- /dev/null +++ b/tests/Features/Covers/ExceptionHandling.php @@ -0,0 +1,10 @@ + 'closure'); + + $testCall->covers('fakeName'); +})->throws(InvalidArgumentException::class, 'No class, trait or method named "fakeName" has been found.'); diff --git a/tests/Features/Covers/FunctionCoverage.php b/tests/Features/Covers/FunctionCoverage.php new file mode 100644 index 000000000..fba97080f --- /dev/null +++ b/tests/Features/Covers/FunctionCoverage.php @@ -0,0 +1,12 @@ +getAttributes(); + + expect($attributes[1]->getName())->toBe(CoversFunction::class); + expect($attributes[1]->getArguments()[0])->toBe('testCoversFunction'); +})->coversFunction('testCoversFunction'); diff --git a/tests/Features/Covers/GuessCoverage.php b/tests/Features/Covers/GuessCoverage.php new file mode 100644 index 000000000..e8a84035b --- /dev/null +++ b/tests/Features/Covers/GuessCoverage.php @@ -0,0 +1,17 @@ +getAttributes(); + + expect($attributes[1]->getName())->toBe(CoversClass::class); + expect($attributes[1]->getArguments()[0])->toBe(CoversClass3::class); + + expect($attributes[2]->getName())->toBe(CoversFunction::class); + expect($attributes[2]->getArguments()[0])->toBe('testCoversFunction2'); +})->covers(CoversClass3::class, 'testCoversFunction2'); diff --git a/tests/Features/Covers/TraitCoverage.php b/tests/Features/Covers/TraitCoverage.php new file mode 100644 index 000000000..57bc36806 --- /dev/null +++ b/tests/Features/Covers/TraitCoverage.php @@ -0,0 +1,11 @@ +getAttributes(); + + expect($attributes[1]->getName())->toBe(PHPUnitCoversTrait::class); + expect($attributes[1]->getArguments()[0])->toBe('Tests\Fixtures\Covers\CoversTrait'); +})->coversTrait(CoversTrait::class); From 5d2aafd2a3cbe6141126146272abfe3471d68a35 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Thu, 12 Jun 2025 00:38:05 +0100 Subject: [PATCH 036/134] feat: --profanity --- .github/workflows/static.yml | 7 +++++-- composer.json | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 69dd6b986..491cd60d4 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -31,8 +31,11 @@ jobs: - name: Install Dependencies run: composer update --prefer-stable --no-interaction --no-progress --ansi - # - name: Type Check - # run: composer test:type:check + - name: Profanity Check + run: composer test:profanity + + - name: Type Check + run: composer test:type:check - name: Type Coverage run: composer test:type:coverage diff --git a/composer.json b/composer.json index da76ff304..cdc534e47 100644 --- a/composer.json +++ b/composer.json @@ -18,12 +18,13 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.10.1", - "nunomaduro/collision": "^8.8.0", + "brianium/paratest": "^7.10.2", + "nunomaduro/collision": "^8.8.1", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", + "pestphp/pest-plugin-profanity": "^4.0.0", "phpunit/phpunit": "^12.2.1" }, "conflict": { @@ -55,7 +56,7 @@ "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-type-coverage": "^4.0.0", - "symfony/process": "^7.2.5" + "symfony/process": "^7.3.0" }, "minimum-stability": "dev", "prefer-stable": true, @@ -74,6 +75,7 @@ "lint": "pint", "test:refacto": "rector --dry-run", "test:lint": "pint --test", + "test:profanity": "php bin/pest --profanity --compact --language=en", "test:type:check": "phpstan analyse --ansi --memory-limit=-1 --debug", "test:type:coverage": "php -d memory_limit=-1 bin/pest --type-coverage --min=100", "test:unit": "php bin/pest --exclude-group=integration --compact", From dd44ac41951141e2675022907804a334bcfc8848 Mon Sep 17 00:00:00 2001 From: JonPurvis Date: Sat, 14 Jun 2025 21:36:39 +0100 Subject: [PATCH 037/134] remove language option from profanity composer script --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index cdc534e47..f5718b7bb 100644 --- a/composer.json +++ b/composer.json @@ -75,7 +75,7 @@ "lint": "pint", "test:refacto": "rector --dry-run", "test:lint": "pint --test", - "test:profanity": "php bin/pest --profanity --compact --language=en", + "test:profanity": "php bin/pest --profanity --compact", "test:type:check": "phpstan analyse --ansi --memory-limit=-1 --debug", "test:type:coverage": "php -d memory_limit=-1 bin/pest --type-coverage --min=100", "test:unit": "php bin/pest --exclude-group=integration --compact", From 49bf00024f6cd559c40b16d93233587ef2d43605 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 15 Jun 2025 22:43:59 +0100 Subject: [PATCH 038/134] fix: coverage when coverage file is over `2.4gb` on mac os --- composer.json | 4 +- overrides/Report/PHP.php | 98 +++++++++++++++++++++++++++++ src/Bootstrappers/BootOverrides.php | 17 ++--- src/Support/Coverage.php | 9 ++- 4 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 overrides/Report/PHP.php diff --git a/composer.json b/composer.json index cdc534e47..516e62b9f 100644 --- a/composer.json +++ b/composer.json @@ -25,11 +25,11 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.2.1" + "phpunit/phpunit": "^12.2.2" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">12.2.1", + "phpunit/phpunit": ">12.2.2", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, diff --git a/overrides/Report/PHP.php b/overrides/Report/PHP.php new file mode 100644 index 000000000..0cd7e27bb --- /dev/null +++ b/overrides/Report/PHP.php @@ -0,0 +1,98 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage\Report; + +use const PHP_EOL; + +use SebastianBergmann\CodeCoverage\CodeCoverage; +use SebastianBergmann\CodeCoverage\Util\Filesystem; +use SebastianBergmann\CodeCoverage\WriteOperationFailedException; + +use function dirname; +use function serialize; +use function str_contains; + +final class PHP +{ + public function process(CodeCoverage $coverage, ?string $target = null): string + { + $coverage->clearCache(); + + $buffer = " */ public const array FILES = [ - '53c246e5f416a39817ac81124cdd64ea8403038d01d7a202e1ffa486fbdf3fa7' => 'Runner/Filter/NameFilterIterator.php', - '77ffb7647b583bd82e37962c6fbdc4b04d3344d8a2c1ed103e625ed1ff7cb5c2' => 'Runner/ResultCache/DefaultResultCache.php', - 'd0e81317889ad88c707db4b08a94cadee4c9010d05ff0a759f04e71af5efed89' => 'Runner/TestSuiteLoader.php', - '3bb609b0d3bf6dee8df8d6cd62a3c8ece823c4bb941eaaae39e3cb267171b9d2' => 'TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php', - '8abdad6413329c6fe0d7d44a8b9926e390af32c0b3123f3720bb9c5bbc6fbb7e' => 'TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', - 'b4250fc3ffad5954624cb5e682fd940b874e8d3422fa1ee298bd7225e1aa5fc2' => 'TextUI/TestSuiteFilterProcessor.php', - '8cfcb4999af79463eca51a42058e502ea4ddc776cba5677bf2f8eb6093e21a5c' => 'Event/Value/ThrowableBuilder.php', - '86cd9bcaa53cdd59c5b13e58f30064a015c549501e7629d93b96893d4dee1eb1' => 'Logging/JUnit/JunitXmlLogger.php', + 'Runner/Filter/NameFilterIterator.php', + 'Runner/ResultCache/DefaultResultCache.php', + 'Runner/TestSuiteLoader.php', + 'TextUI/Command/Commands/WarmCodeCoverageCacheCommand.php', + 'TextUI/Output/Default/ProgressPrinter/Subscriber/TestSkippedSubscriber.php', + 'TextUI/TestSuiteFilterProcessor.php', + 'Event/Value/ThrowableBuilder.php', + 'Logging/JUnit/JunitXmlLogger.php', + 'Report/Php.php', ]; /** diff --git a/src/Support/Coverage.php b/src/Support/Coverage.php index 955bbfc46..1aa641fb0 100644 --- a/src/Support/Coverage.php +++ b/src/Support/Coverage.php @@ -89,9 +89,16 @@ public static function report(OutputInterface $output, bool $compact = false): f } /** @var CodeCoverage $codeCoverage */ - $codeCoverage = require $reportPath; + $handle = fopen($reportPath, 'r'); + $code = ''; + while (! feof($handle)) { + $code .= fread($handle, 8192); + } + fclose($handle); unlink($reportPath); + $codeCoverage = eval(substr($code, 5)); + $totalCoverage = $codeCoverage->getReport()->percentageOfExecutedLines(); /** @var Directory $report */ From 8c403a57c262d85ef9de6e7011a12de9b8482f07 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 16 Jun 2025 10:04:00 +0100 Subject: [PATCH 039/134] fix: upper case fix --- src/Bootstrappers/BootOverrides.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Bootstrappers/BootOverrides.php b/src/Bootstrappers/BootOverrides.php index 205a7b0a7..c91192194 100644 --- a/src/Bootstrappers/BootOverrides.php +++ b/src/Bootstrappers/BootOverrides.php @@ -26,7 +26,7 @@ final class BootOverrides implements Bootstrapper 'TextUI/TestSuiteFilterProcessor.php', 'Event/Value/ThrowableBuilder.php', 'Logging/JUnit/JunitXmlLogger.php', - 'Report/Php.php', + 'Report/PHP.php', ]; /** From c3bfdf130e52c26e2ce3e7331fab059e16e7b0fd Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 16 Jun 2025 10:14:04 +0100 Subject: [PATCH 040/134] chore: type checking --- src/Bootstrappers/BootOverrides.php | 2 +- src/Support/Coverage.php | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Bootstrappers/BootOverrides.php b/src/Bootstrappers/BootOverrides.php index c91192194..a4eef19fd 100644 --- a/src/Bootstrappers/BootOverrides.php +++ b/src/Bootstrappers/BootOverrides.php @@ -15,7 +15,7 @@ final class BootOverrides implements Bootstrapper /** * The list of files to be overridden. * - * @var array + * @var array */ public const array FILES = [ 'Runner/Filter/NameFilterIterator.php', diff --git a/src/Support/Coverage.php b/src/Support/Coverage.php index 1aa641fb0..adcfa40d2 100644 --- a/src/Support/Coverage.php +++ b/src/Support/Coverage.php @@ -88,13 +88,16 @@ public static function report(OutputInterface $output, bool $compact = false): f throw ShouldNotHappen::fromMessage(sprintf('Coverage not found in path: %s.', $reportPath)); } - /** @var CodeCoverage $codeCoverage */ $handle = fopen($reportPath, 'r'); $code = ''; - while (! feof($handle)) { + while (is_resource($handle) && ! feof($handle)) { $code .= fread($handle, 8192); } - fclose($handle); + + if (is_resource($handle)) { + fclose($handle); + } + unlink($reportPath); $codeCoverage = eval(substr($code, 5)); From 163479ae60d8a45939e64916f8002706794db3c3 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 16 Jun 2025 10:14:16 +0100 Subject: [PATCH 041/134] chore: style --- src/Support/Coverage.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Support/Coverage.php b/src/Support/Coverage.php index adcfa40d2..3f543790b 100644 --- a/src/Support/Coverage.php +++ b/src/Support/Coverage.php @@ -5,7 +5,6 @@ namespace Pest\Support; use Pest\Exceptions\ShouldNotHappen; -use SebastianBergmann\CodeCoverage\CodeCoverage; use SebastianBergmann\CodeCoverage\Node\Directory; use SebastianBergmann\CodeCoverage\Node\File; use SebastianBergmann\Environment\Runtime; From ef76c04dbe907c65ea2f372630ab8a1327e79d43 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 27 Jun 2025 02:15:28 +0100 Subject: [PATCH 042/134] feat: adds `fixture` --- src/Functions.php | 25 +++++++++++++++++++++++++ src/Pest.php | 2 +- tests/Features/Fixture.php | 11 +++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 tests/Features/Fixture.php diff --git a/src/Functions.php b/src/Functions.php index 1e12fe7e6..f17ea15c4 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -278,3 +278,28 @@ function mutates(array|string ...$targets): void } } } + +if (! function_exists('fixture')) { + /** + * Returns the absolute path to a fixture file. + */ + function fixture(string $file): string + { + $file = implode(DIRECTORY_SEPARATOR, [ + TestSuite::getInstance()->rootPath, + TestSuite::getInstance()->testPath, + 'Fixtures', + str_replace(['/', '\\'], DIRECTORY_SEPARATOR, $file), + ]); + + $fileRealPath = realpath($file); + + if ($fileRealPath === false) { + throw new InvalidArgumentException( + 'The fixture file ['.$file.'] does not exist.', + ); + } + + return $fileRealPath; + } +} diff --git a/src/Pest.php b/src/Pest.php index 865c18d06..47af9ee16 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-alpha.2'; + return '4.0.0-alpha.3'; } function testDirectory(string $file = ''): string diff --git a/tests/Features/Fixture.php b/tests/Features/Fixture.php new file mode 100644 index 000000000..49b4c76ac --- /dev/null +++ b/tests/Features/Fixture.php @@ -0,0 +1,11 @@ +toBeString() + ->toBeFile(); +}); + +it('may throw an exception if the file does not exist', function () { + fixture('file-that-does-not-exist.php'); From 7fc69033f895aeae3aa2fda1bcf8233388def7ef Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 27 Jun 2025 02:15:36 +0100 Subject: [PATCH 043/134] chore: adjusts style --- tests/Features/Fixture.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Features/Fixture.php b/tests/Features/Fixture.php index 49b4c76ac..1ac538b84 100644 --- a/tests/Features/Fixture.php +++ b/tests/Features/Fixture.php @@ -9,3 +9,4 @@ it('may throw an exception if the file does not exist', function () { fixture('file-that-does-not-exist.php'); +})->throws(InvalidArgumentException::class); From a22013a7d367bc7b3c3b52b3832fc236e5f85573 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 28 Jun 2025 12:14:45 +0100 Subject: [PATCH 044/134] fix: `with` types --- src/PendingCalls/TestCall.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 50fef3b68..92723e8da 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -178,10 +178,9 @@ public function throwsUnless(callable|bool $condition, string|int $exception, ?s } /** - * Runs the current test multiple times with - * each item of the given `iterable`. + * Runs the current test multiple times with each item of the given `iterable`. * - * @param array<\Closure|iterable|string> $data + * @param Closure|iterable|string $data */ public function with(Closure|iterable|string ...$data): self { From 0bc3219a2b3efe72275e8ed0ccc1dc9765178e65 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 28 Jun 2025 18:18:26 +0100 Subject: [PATCH 045/134] feat: moves `visit` to the core --- composer.json | 3 ++- resources/views/installers/plugin-browser.php | 17 ++++++++++++ src/Configuration.php | 8 ++++++ src/Functions.php | 26 +++++++++++++++++++ src/Installers/PluginBrowser.php | 15 +++++++++++ src/PendingCalls/TestCall.php | 2 +- src/Pest.php | 2 +- 7 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 resources/views/installers/plugin-browser.php create mode 100644 src/Installers/PluginBrowser.php diff --git a/composer.json b/composer.json index 516e62b9f..803547108 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "require": { "php": "^8.3.0", "brianium/paratest": "^7.10.2", - "nunomaduro/collision": "^8.8.1", + "nunomaduro/collision": "^8.8.2", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", @@ -55,6 +55,7 @@ }, "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", + "pestphp/pest-plugin-browser": "^4.0.0", "pestphp/pest-plugin-type-coverage": "^4.0.0", "symfony/process": "^7.3.0" }, diff --git a/resources/views/installers/plugin-browser.php b/resources/views/installers/plugin-browser.php new file mode 100644 index 000000000..28288ab02 --- /dev/null +++ b/resources/views/installers/plugin-browser.php @@ -0,0 +1,17 @@ +
+

+ Using the visit() function requires the Pest Plugin Browser to be installed. + + Run: +

+ +
+ - + composer require pestphp/pest-plugin-browser:^4.0 --dev +
+ +
+ - + npx playwright install +
+
diff --git a/src/Configuration.php b/src/Configuration.php index c504aa65e..fb4f45a4b 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -102,6 +102,14 @@ public function project(): Configuration\Project return Configuration\Project::getInstance(); } + /** + * Gets the browser configuration. + */ + public function browser(): Browser\Configuration + { + return new Browser\Configuration; + } + /** * Proxies calls to the uses method. * diff --git a/src/Functions.php b/src/Functions.php index f17ea15c4..1702f94ad 100644 --- a/src/Functions.php +++ b/src/Functions.php @@ -2,11 +2,14 @@ declare(strict_types=1); +use Pest\Browser\Api\ArrayablePendingAwaitablePage; +use Pest\Browser\Api\PendingAwaitablePage; use Pest\Concerns\Expectable; use Pest\Configuration; use Pest\Exceptions\AfterAllWithinDescribe; use Pest\Exceptions\BeforeAllWithinDescribe; use Pest\Expectation; +use Pest\Installers\PluginBrowser; use Pest\Mutate\Contracts\MutationTestRunner; use Pest\Mutate\Repositories\ConfigurationRepository; use Pest\PendingCalls\AfterEachCall; @@ -303,3 +306,26 @@ function fixture(string $file): string return $fileRealPath; } } + +if (! function_exists('visit')) { + /** + * Browse to the given URL. + * + * @template TUrl of array|string + * + * @param TUrl $url + * @param array $options + * @return (TUrl is array ? ArrayablePendingAwaitablePage : PendingAwaitablePage) + */ + function visit(array|string $url, array $options = []): ArrayablePendingAwaitablePage|PendingAwaitablePage + { + if (! class_exists(\Pest\Browser\Configuration::class)) { + PluginBrowser::install(); + + exit(0); + } + + // @phpstan-ignore-next-line + return test()->visit($url, $options); + } +} diff --git a/src/Installers/PluginBrowser.php b/src/Installers/PluginBrowser.php new file mode 100644 index 000000000..2d36ed3da --- /dev/null +++ b/src/Installers/PluginBrowser.php @@ -0,0 +1,15 @@ +|string $data + * @param Closure|iterable|string $data */ public function with(Closure|iterable|string ...$data): self { diff --git a/src/Pest.php b/src/Pest.php index 47af9ee16..7741ff4d7 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-alpha.3'; + return '4.0.0-alpha.4'; } function testDirectory(string $file = ''): string From 3faeede1ef1e5b23f3d225c0f6a93065b65dab43 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 28 Jun 2025 18:24:19 +0100 Subject: [PATCH 046/134] chore: fixes snapshots --- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- tests/Arch.php | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index b2f7a23fe..e23801fd0 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-alpha.2. + Pest Testing Framework 4.0.0-alpha.4. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index d72ea0de3..90663c17c 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-alpha.2. + Pest Testing Framework 4.0.0-alpha.4. diff --git a/tests/Arch.php b/tests/Arch.php index d8deb4609..905515d28 100644 --- a/tests/Arch.php +++ b/tests/Arch.php @@ -37,6 +37,7 @@ 'Termwind', 'ParaTest', 'Pest\Arch', + 'Pest\Browser', 'Pest\Mutate\Contracts\Configuration', 'Pest\Mutate\Decorators\TestCallDecorator', 'Pest\Mutate\Repositories\ConfigurationRepository', From af3fdceddb937ac894b6e59b75921e46f50cf3f0 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 28 Jun 2025 18:31:45 +0100 Subject: [PATCH 047/134] feat: adds phpunit `12.2.5` support --- composer.json | 4 ++-- src/Result.php | 4 ++-- .../visual_snapshot_of_help_command_output.snap | 14 +++++++++++++- tests/.snapshots/success.txt | 6 +++++- tests/Visual/Parallel.php | 2 +- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 803547108..9bf41f271 100644 --- a/composer.json +++ b/composer.json @@ -25,11 +25,11 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.2.2" + "phpunit/phpunit": "^12.2.5" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">12.2.2", + "phpunit/phpunit": ">12.2.5", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, diff --git a/src/Result.php b/src/Result.php index 22e1e8950..4dcbe4a12 100644 --- a/src/Result.php +++ b/src/Result.php @@ -40,7 +40,7 @@ public static function ok(Configuration $configuration, TestResult $result): boo */ public static function exitCode(Configuration $configuration, TestResult $result): int { - if ($result->wasSuccessfulIgnoringPhpunitWarnings()) { + if ($result->wasSuccessful()) { if ($configuration->failOnWarning()) { $warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents() + count($result->warnings()) @@ -60,7 +60,7 @@ public static function exitCode(Configuration $configuration, TestResult $result return self::FAILURE_EXIT; } - if ($result->wasSuccessfulIgnoringPhpunitWarnings()) { + if ($result->wasSuccessful()) { if ($configuration->failOnRisky() && $result->hasTestConsideredRiskyEvents()) { $returnCode = self::FAILURE_EXIT; } diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index e23801fd0..c6234c045 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -53,7 +53,7 @@ --disallow-test-output ................. Be strict about output during tests --enforce-time-limit ................. Enforce time limit based on test size --default-time-limit [sec] Timeout in seconds for tests that have no declared size - --dont-report-useless-tests .. Do not report tests that do not test anything + --do-not-report-useless-tests Do not report tests that do not test anything --stop-on-defect ... Stop after first error, failure, warning, or risky test --stop-on-error ..................................... Stop after first error --stop-on-failure ................................. Stop after first failure @@ -69,10 +69,21 @@ --fail-on-deprecation Signal failure using shell exit code when a deprecation was triggered --fail-on-phpunit-deprecation Signal failure using shell exit code when a PHPUnit deprecation was triggered --fail-on-phpunit-notice Signal failure using shell exit code when a PHPUnit notice was triggered + --fail-on-phpunit-warning Signal failure using shell exit code when a PHPUnit warning was triggered --fail-on-notice Signal failure using shell exit code when a notice was triggered --fail-on-skipped Signal failure using shell exit code when a test was skipped --fail-on-incomplete Signal failure using shell exit code when a test was marked incomplete --fail-on-all-issues Signal failure using shell exit code when an issue is triggered + --do-not-fail-on-empty-test-suite Do not signal failure using shell exit code when no tests were run + --do-not-fail-on-warning Do not signal failure using shell exit code when a warning was triggered + --do-not-fail-on-risky Do not signal failure using shell exit code when a test was considered risky + --do-not-fail-on-deprecation Do not signal failure using shell exit code when a deprecation was triggered + --do-not-fail-on-phpunit-deprecation Do not signal failure using shell exit code when a PHPUnit deprecation was triggered + --do-not-fail-on-phpunit-notice Do not signal failure using shell exit code when a PHPUnit notice was triggered + --do-not-fail-on-phpunit-warning Do not signal failure using shell exit code when a PHPUnit warning was triggered + --do-not-fail-on-notice Do not signal failure using shell exit code when a notice was triggered + --do-not-fail-on-skipped Do not signal failure using shell exit code when a test was skipped + --do-not-fail-on-incomplete Do not signal failure using shell exit code when a test was marked incomplete --cache-result ............................ Write test results to cache file --do-not-cache-result .............. Do not write test results to cache file --order-by [order] Run tests in order: default|defects|depends|duration|no-depends|random|reverse|size @@ -106,6 +117,7 @@ LOGGING OPTIONS: --log-junit [file] .......... Write test results in JUnit XML format to file --log-otr [file] Write test results in Open Test Reporting XML format to file + --include-git-information Include Git information in Open Test Reporting XML logfile --log-teamcity [file] ........ Write test results in TeamCity format to file --testdox-html [file] .. Write test results in TestDox format (HTML) to file --testdox-text [file] Write test results in TestDox format (plain text) to file diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 5245e72cf..7b78f425e 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -1040,6 +1040,10 @@ ✓ it may fail ✓ it may fail with the given message + PASS Tests\Features\Fixture + ✓ it may return a file path + ✓ it may throw an exception if the file does not exist + WARN Tests\Features\Helpers ✓ it can set/get properties on $this ! it gets null if property do not exist → Undefined property Tests\Features\Helpers::$wqdwqdqw @@ -1708,4 +1712,4 @@ WARN Tests\Visual\Version - visual snapshot of help command output - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1144 passed (2736 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1146 passed (2739 assertions) \ No newline at end of file diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 313f82088..01492414a 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1134 passed (2712 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1136 passed (2715 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From 3f27352560010fb4c16046761af0fb805bf5be58 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 30 Jun 2025 22:15:07 +0100 Subject: [PATCH 048/134] feat: adds `--shard` --- composer.json | 9 ++-- src/Plugins/Shard.php | 108 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 src/Plugins/Shard.php diff --git a/composer.json b/composer.json index 9bf41f271..df8febf7e 100644 --- a/composer.json +++ b/composer.json @@ -18,14 +18,15 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.10.2", + "brianium/paratest": "^7.10.3", "nunomaduro/collision": "^8.8.2", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.2.5" + "phpunit/phpunit": "^12.2.5", + "symfony/process": "^7.3" }, "conflict": { "filp/whoops": "<2.16.0", @@ -56,8 +57,7 @@ "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.0.0", - "pestphp/pest-plugin-type-coverage": "^4.0.0", - "symfony/process": "^7.3.0" + "pestphp/pest-plugin-type-coverage": "^4.0.0" }, "minimum-stability": "dev", "prefer-stable": true, @@ -114,6 +114,7 @@ "Pest\\Plugins\\Snapshot", "Pest\\Plugins\\Verbose", "Pest\\Plugins\\Version", + "Pest\\Plugins\\Shard", "Pest\\Plugins\\Parallel" ] }, diff --git a/src/Plugins/Shard.php b/src/Plugins/Shard.php new file mode 100644 index 000000000..187e11f52 --- /dev/null +++ b/src/Plugins/Shard.php @@ -0,0 +1,108 @@ +hasArgument('--shard', $arguments)) { + return $arguments; + } + + // @phpstan-ignore-next-line + $input = new ArgvInput($arguments); + + if ($input->hasParameterOption('--'.self::SHARD_OPTION)) { + $shard = $input->getParameterOption('--'.self::SHARD_OPTION); + } else { + $shard = null; + } + + if (! is_string($shard) || ! preg_match('/^\d+\/\d+$/', $shard)) { + throw new InvalidOption('The [--shard] option must be in the format "index/total".'); + } + + [$index, $total] = explode('/', $shard); + + if (! is_numeric($index) || ! is_numeric($total)) { + throw new InvalidOption('The [--shard] option must be in the format "index/total".'); + } + + if ($index <= 0 || $total <= 0 || $index > $total) { + throw new InvalidOption('The [--shard] option index must be a non-negative integer less than the total number of shards.'); + } + + $index = (int) $index; + $total = (int) $total; + + $arguments = $this->popArgument("--shard=$index/$total", $this->popArgument('--shard', $this->popArgument( + "$index/$total", + $arguments, + ))); + + /** @phpstan-ignore-next-line */ + $tests = $this->allTests($arguments); + $testsToRun = (array_chunk($tests, max(1, (int) ceil(count($tests) / $total))))[$index - 1] ?? []; + + return [...$arguments, '--filter', $this->buildFilterArgument($testsToRun)]; + } + + /** + * Returns all tests that the test suite would run. + * + * @param list $arguments + * @return list + */ + private function allTests(array $arguments): array + { + $output = (new Process([ + 'php', + ...$this->removeParallelArguments($arguments), + '--list-tests', + ]))->mustRun()->getOutput(); + + preg_match_all('/ - (?:P\\\)?(.+)::/', $output, $matches); + + return array_values(array_unique($matches[1])); + } + + /** + * @param array $arguments + * @return array + */ + private function removeParallelArguments(array $arguments): array + { + return array_filter($arguments, fn (string $argument): bool => ! in_array($argument, ['--parallel', '-p'], strict: true)); + } + + /** + * Builds the filter argument for the given tests to run. + */ + private function buildFilterArgument(mixed $testsToRun): string + { + return addslashes(implode('|', $testsToRun)); + } +} From 2ff471396833f84f354ad36b7ca99934aabffe1a Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 30 Jun 2025 22:26:09 +0100 Subject: [PATCH 049/134] ci: fix missing dep --- .github/workflows/static.yml | 1 + .github/workflows/tests.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 491cd60d4..5b9b0df5e 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -27,6 +27,7 @@ jobs: php-version: 8.3 tools: composer:v2 coverage: none + extensions: sockets - name: Install Dependencies run: composer update --prefer-stable --no-interaction --no-progress --ansi diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index abafbbbb7..9cb30b0bb 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -29,6 +29,7 @@ jobs: php-version: ${{ matrix.php }} tools: composer:v2 coverage: none + extensions: sockets - name: Setup Problem Matches run: | From d8e1b27491cee648fefdcf1cf581a16e9beada7b Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 30 Jun 2025 22:50:57 +0100 Subject: [PATCH 050/134] ci: fix included version --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9cb30b0bb..1a1ea7eb9 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -13,7 +13,7 @@ jobs: fail-fast: true matrix: os: [ubuntu-latest, macos-latest, windows-latest] - symfony: ['7.1'] + symfony: ['7.3'] php: ['8.3', '8.4'] dependency_version: [prefer-lowest, prefer-stable] From 5def62018b19b8a9fc6bdc410f6a48925a1b9d51 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 1 Jul 2025 11:00:05 +0100 Subject: [PATCH 051/134] fix: shard regex --- src/Plugins/Shard.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Plugins/Shard.php b/src/Plugins/Shard.php index 187e11f52..c73601e04 100644 --- a/src/Plugins/Shard.php +++ b/src/Plugins/Shard.php @@ -84,7 +84,7 @@ private function allTests(array $arguments): array '--list-tests', ]))->mustRun()->getOutput(); - preg_match_all('/ - (?:P\\\)?(.+)::/', $output, $matches); + preg_match_all('/ - (?:P\\\\)?(Tests\\\\[^:]+)::/', $output, $matches); return array_values(array_unique($matches[1])); } From 73bf579da32e1c9c6b820a5adf85fc69f76549fc Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 2 Jul 2025 00:26:15 +0100 Subject: [PATCH 052/134] chore: code refactor --- src/Plugins/Shard.php | 60 +++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/src/Plugins/Shard.php b/src/Plugins/Shard.php index c73601e04..9ac2c4369 100644 --- a/src/Plugins/Shard.php +++ b/src/Plugins/Shard.php @@ -7,6 +7,7 @@ use Pest\Contracts\Plugins\HandlesArguments; use Pest\Exceptions\InvalidOption; use Symfony\Component\Console\Input\ArgvInput; +use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Process\Process; /** @@ -35,28 +36,7 @@ public function handleArguments(array $arguments): array // @phpstan-ignore-next-line $input = new ArgvInput($arguments); - if ($input->hasParameterOption('--'.self::SHARD_OPTION)) { - $shard = $input->getParameterOption('--'.self::SHARD_OPTION); - } else { - $shard = null; - } - - if (! is_string($shard) || ! preg_match('/^\d+\/\d+$/', $shard)) { - throw new InvalidOption('The [--shard] option must be in the format "index/total".'); - } - - [$index, $total] = explode('/', $shard); - - if (! is_numeric($index) || ! is_numeric($total)) { - throw new InvalidOption('The [--shard] option must be in the format "index/total".'); - } - - if ($index <= 0 || $total <= 0 || $index > $total) { - throw new InvalidOption('The [--shard] option index must be a non-negative integer less than the total number of shards.'); - } - - $index = (int) $index; - $total = (int) $total; + ['index' => $index, 'total' => $total] = self::getShard($input); $arguments = $this->popArgument("--shard=$index/$total", $this->popArgument('--shard', $this->popArgument( "$index/$total", @@ -105,4 +85,40 @@ private function buildFilterArgument(mixed $testsToRun): string { return addslashes(implode('|', $testsToRun)); } + + /** + * Returns the shard information. + * + * @return array{index: int, total: int} + */ + public static function getShard(InputInterface $input): array + { + if ($input->hasParameterOption('--'.self::SHARD_OPTION)) { + $shard = $input->getParameterOption('--'.self::SHARD_OPTION); + } else { + $shard = null; + } + + if (! is_string($shard) || ! preg_match('/^\d+\/\d+$/', $shard)) { + throw new InvalidOption('The [--shard] option must be in the format "index/total".'); + } + + [$index, $total] = explode('/', $shard); + + if (! is_numeric($index) || ! is_numeric($total)) { + throw new InvalidOption('The [--shard] option must be in the format "index/total".'); + } + + if ($index <= 0 || $total <= 0 || $index > $total) { + throw new InvalidOption('The [--shard] option index must be a non-negative integer less than the total number of shards.'); + } + + $index = (int) $index; + $total = (int) $total; + + return [ + 'index' => $index, + 'total' => $total, + ]; + } } From 0f1e87c726c74659c673ac652c7923d4bd8b7607 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 5 Jul 2025 15:43:43 +0100 Subject: [PATCH 053/134] Adds output about sharding --- composer.json | 4 +-- src/Plugins/Shard.php | 59 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index df8febf7e..21f36c730 100644 --- a/composer.json +++ b/composer.json @@ -73,9 +73,9 @@ ], "scripts": { "refacto": "rector", - "lint": "pint", + "lint": "pint --parallel", "test:refacto": "rector --dry-run", - "test:lint": "pint --test", + "test:lint": "pint --parallel --test", "test:profanity": "php bin/pest --profanity --compact --language=en", "test:type:check": "phpstan analyse --ansi --memory-limit=-1 --debug", "test:type:coverage": "php -d memory_limit=-1 bin/pest --type-coverage --min=100", diff --git a/src/Plugins/Shard.php b/src/Plugins/Shard.php index 9ac2c4369..f48260bb5 100644 --- a/src/Plugins/Shard.php +++ b/src/Plugins/Shard.php @@ -4,25 +4,43 @@ namespace Pest\Plugins; +use Pest\Contracts\Plugins\AddsOutput; use Pest\Contracts\Plugins\HandlesArguments; use Pest\Exceptions\InvalidOption; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Process\Process; /** * @internal */ -final class Shard implements HandlesArguments +final class Shard implements AddsOutput, HandlesArguments { use Concerns\HandleArguments; private const string SHARD_OPTION = 'shard'; /** - * The total number of tests. + * The shard index and total number of shards. + * + * @var array{ + * index: int, + * total: int, + * testsRan: int, + * testsCount: int + * }|null */ - public static int $testsCount = 0; + private static ?array $shard = null; + + /** + * Creates a new Plugin instance. + */ + public function __construct( + private readonly OutputInterface $output, + ) { + // + } /** * {@inheritDoc} @@ -47,6 +65,13 @@ public function handleArguments(array $arguments): array $tests = $this->allTests($arguments); $testsToRun = (array_chunk($tests, max(1, (int) ceil(count($tests) / $total))))[$index - 1] ?? []; + self::$shard = [ + 'index' => $index, + 'total' => $total, + 'testsRan' => count($testsToRun), + 'testsCount' => count($tests), + ]; + return [...$arguments, '--filter', $this->buildFilterArgument($testsToRun)]; } @@ -86,6 +111,34 @@ private function buildFilterArgument(mixed $testsToRun): string return addslashes(implode('|', $testsToRun)); } + /** + * Adds output after the Test Suite execution. + */ + public function addOutput(int $exitCode): int + { + if (self::$shard === null) { + return $exitCode; + } + + [ + 'index' => $index, + 'total' => $total, + 'testsRan' => $testsRan, + 'testsCount' => $testsCount, + ] = self::$shard; + + $this->output->writeln(sprintf( + ' Shard: %d of %d — %d file%s ran, out of %d.', + $index, + $total, + $testsRan, + $testsRan === 1 ? '' : 's', + $testsCount, + )); + + return $exitCode; + } + /** * Returns the shard information. * From 0d148c2a67c3a2bf2758bbb9a400512010beaca7 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 5 Jul 2025 15:46:03 +0100 Subject: [PATCH 054/134] chroe: bumps phpunit --- composer.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 21f36c730..62df89fb1 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.2.5", - "symfony/process": "^7.3" + "phpunit/phpunit": "^12.2.6", + "symfony/process": "^7.3.0" }, "conflict": { - "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">12.2.5", + "filp/whoops": "<2.18.3", + "phpunit/phpunit": ">12.2.6", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, From 9d0410ee0b0cec36bbc6e857feefceba01770b7c Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 6 Jul 2025 13:45:33 +0100 Subject: [PATCH 055/134] feat: adjusts only for browser debug --- src/Plugins/Only.php | 46 +++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/src/Plugins/Only.php b/src/Plugins/Only.php index 7c2809f11..fd1001de0 100644 --- a/src/Plugins/Only.php +++ b/src/Plugins/Only.php @@ -5,7 +5,10 @@ namespace Pest\Plugins; use Pest\Contracts\Plugins\Terminable; +use Pest\Factories\Attribute; +use Pest\Factories\TestCaseMethodFactory; use Pest\PendingCalls\TestCall; +use PHPUnit\Framework\Attributes\Group; /** * @internal @@ -23,28 +26,19 @@ final class Only implements Terminable .DIRECTORY_SEPARATOR .'.temp'; - /** - * {@inheritDoc} - */ - public function terminate(): void - { - if (Parallel::isWorker()) { - return; - } - - $lockFile = self::TEMPORARY_FOLDER.DIRECTORY_SEPARATOR.'only.lock'; - - if (file_exists($lockFile)) { - unlink($lockFile); - } - } - /** * Creates the lock file. */ - public static function enable(TestCall $testCall, string $group = '__pest_only'): void + public static function enable(TestCall|TestCaseMethodFactory $testCall, string $group = '__pest_only'): void { - $testCall->group($group); + if ($testCall instanceof TestCall) { + $testCall->group($group); + } else { + $testCall->attributes[] = new Attribute( + Group::class, + [$group], + ); + } if (Environment::name() === Environment::CI || Parallel::isWorker()) { return; @@ -88,4 +82,20 @@ public static function group(): string return file_get_contents($lockFile) ?: '__pest_only'; // @phpstan-ignore-line } + + /** + * {@inheritDoc} + */ + public function terminate(): void + { + if (Parallel::isWorker()) { + return; + } + + $lockFile = self::TEMPORARY_FOLDER.DIRECTORY_SEPARATOR.'only.lock'; + + if (file_exists($lockFile)) { + unlink($lockFile); + } + } } From 0355119afc7c8014f6ccdfdd7c777a18ee3df9c1 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 6 Jul 2025 14:29:18 +0100 Subject: [PATCH 056/134] fix: snapshots feedback --- src/Concerns/Testable.php | 10 +--------- src/Pest.php | 2 +- .../Help/visual_snapshot_of_help_command_output.snap | 2 +- .../visual_snapshot_of_help_command_output.snap | 2 +- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/Concerns/Testable.php b/src/Concerns/Testable.php index 9918eb83d..f233b6ac1 100644 --- a/src/Concerns/Testable.php +++ b/src/Concerns/Testable.php @@ -438,15 +438,7 @@ protected function __MarkTestIncompleteIfSnapshotHaveChanged(): void return; } - if (count($this->__snapshotChanges) === 1) { - $this->markTestIncomplete($this->__snapshotChanges[0]); - - return; - } - - $messages = implode(PHP_EOL, array_map(static fn (string $message): string => '- $message', $this->__snapshotChanges)); - - $this->markTestIncomplete($messages); + $this->markTestIncomplete(implode('. ', $this->__snapshotChanges)); } /** diff --git a/src/Pest.php b/src/Pest.php index 7741ff4d7..7ddec7111 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-alpha.4'; + return '4.0.0-alpha.5'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index c6234c045..8a1749274 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-alpha.4. + Pest Testing Framework 4.0.0-alpha.5. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 90663c17c..f54244dad 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-alpha.4. + Pest Testing Framework 4.0.0-alpha.5. From e0695a13cbbe9e9d0953808e9126b24db75891d5 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 21 Jul 2025 13:25:50 +0100 Subject: [PATCH 057/134] feat: adds shell --- composer.json | 3 +- src/Concerns/Testable.php | 9 ++++ src/Support/Shell.php | 99 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/Support/Shell.php diff --git a/composer.json b/composer.json index 26d92d494..55bd94ee7 100644 --- a/composer.json +++ b/composer.json @@ -57,7 +57,8 @@ "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.0.0", - "pestphp/pest-plugin-type-coverage": "^4.0.0" + "pestphp/pest-plugin-type-coverage": "^4.0.0", + "psy/psysh": "^0.12.9" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/src/Concerns/Testable.php b/src/Concerns/Testable.php index f233b6ac1..326115ea3 100644 --- a/src/Concerns/Testable.php +++ b/src/Concerns/Testable.php @@ -10,6 +10,7 @@ use Pest\Support\ChainableClosure; use Pest\Support\ExceptionTrace; use Pest\Support\Reflection; +use Pest\Support\Shell; use Pest\TestSuite; use PHPUnit\Framework\Attributes\PostCondition; use PHPUnit\Framework\TestCase; @@ -477,4 +478,12 @@ public static function getPrintableContext(): array 'notes' => self::$__latestNotes, ]; } + + /** + * Opens a shell for the test case. + */ + public function shell(): void + { + Shell::open(); + } } diff --git a/src/Support/Shell.php b/src/Support/Shell.php new file mode 100644 index 000000000..d7fbafd29 --- /dev/null +++ b/src/Support/Shell.php @@ -0,0 +1,99 @@ +setUpdateCheck(Checker::NEVER); + + $config->getPresenter()->addCasters(self::casters()); + + $shell = new PsyShell($config); + + $loader = self::tinkered($shell); + + try { + $shell->run(); + } finally { + $loader?->unregister(); + } + } + + /** + * Returns the casters for the Psy Shell. + * + * @return array + */ + private static function casters(): array + { + $casters = [ + 'Illuminate\Support\Collection' => 'Laravel\Tinker\TinkerCaster::castCollection', + 'Illuminate\Support\HtmlString' => 'Laravel\Tinker\TinkerCaster::castHtmlString', + 'Illuminate\Support\Stringable' => 'Laravel\Tinker\TinkerCaster::castStringable', + ]; + + if (class_exists('Illuminate\Database\Eloquent\Model')) { + $casters['Illuminate\Database\Eloquent\Model'] = 'Laravel\Tinker\TinkerCaster::castModel'; + } + + if (class_exists('Illuminate\Process\ProcessResult')) { + $casters['Illuminate\Process\ProcessResult'] = 'Laravel\Tinker\TinkerCaster::castProcessResult'; + } + + if (class_exists('Illuminate\Foundation\Application')) { + $casters['Illuminate\Foundation\Application'] = 'Laravel\Tinker\TinkerCaster::castApplication'; + } + + if (function_exists('app') === false) { + return $casters; // @phpstan-ignore-line + } + + $config = app()->make('config'); + + return array_merge($casters, (array) $config->get('tinker.casters', [])); + } + + /** + * Tinkers the current shell, if the Tinker package is available. + */ + private static function tinkered(PsyShell $shell): ?ClassLoader + { + if (function_exists('app') === false + || ! class_exists(Env::class) + || ! class_exists(ClassAliasAutoloader::class) + ) { + return null; + } + + $path = Env::get('COMPOSER_VENDOR_DIR', app()->basePath().DIRECTORY_SEPARATOR.'vendor'); + + $path .= '/composer/autoload_classmap.php'; + + $config = app()->make('config'); + + $loader = ClassAliasAutoloader::register( + $shell, $path, $config->get('tinker.alias', []), $config->get('tinker.dont_alias', []) + ); + + return $loader; + } +} From fb282b184e3f4dd19b793191e99685700f1d21ca Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 21 Jul 2025 13:32:03 +0100 Subject: [PATCH 058/134] fix: return type --- src/Support/Shell.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Support/Shell.php b/src/Support/Shell.php index d7fbafd29..0f9c9d55e 100644 --- a/src/Support/Shell.php +++ b/src/Support/Shell.php @@ -4,9 +4,9 @@ namespace Pest\Support; -use Composer\Autoload\ClassLoader; use Illuminate\Support\Env; use Laravel\Tinker\ClassAliasAutoloader; +use Pest\TestSuite; use Psy\Configuration; use Psy\Shell as PsyShell; use Psy\VersionUpdater\Checker; @@ -34,7 +34,7 @@ public static function open(): void try { $shell->run(); } finally { - $loader?->unregister(); + $loader?->unregister(); // @phpstan-ignore-line } } @@ -75,7 +75,7 @@ private static function casters(): array /** * Tinkers the current shell, if the Tinker package is available. */ - private static function tinkered(PsyShell $shell): ?ClassLoader + private static function tinkered(PsyShell $shell): ?object { if (function_exists('app') === false || ! class_exists(Env::class) @@ -88,6 +88,10 @@ private static function tinkered(PsyShell $shell): ?ClassLoader $path .= '/composer/autoload_classmap.php'; + if (! file_exists($path)) { + $path = TestSuite::getInstance()->rootPath.DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR.'composer'.DIRECTORY_SEPARATOR.'autoload_classmap.php'; + } + $config = app()->make('config'); $loader = ClassAliasAutoloader::register( From 00572f5f8ee8923830d379c7afc80977b2e071d3 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 11:39:34 +0100 Subject: [PATCH 059/134] feat: improves playwright --- resources/views/installers/plugin-browser.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/views/installers/plugin-browser.php b/resources/views/installers/plugin-browser.php index 28288ab02..d717867b2 100644 --- a/resources/views/installers/plugin-browser.php +++ b/resources/views/installers/plugin-browser.php @@ -10,6 +10,11 @@ composer require pestphp/pest-plugin-browser:^4.0 --dev +
+ - + npm install playwright@latest +
+
- npx playwright install From f9814793ddb315008e2b436df0d38d5b0fec3292 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 21:52:06 +0100 Subject: [PATCH 060/134] feat: `skipOnCI` --- src/PendingCalls/TestCall.php | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index c65122b5b..102f16409 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -314,6 +314,42 @@ private function skipOnOs(string $osFamily, string $message): self : $this; } + /** + * Skips the current test when running on a CI environments. + */ + public function skipOnCI(): self + { + foreach ([ + 'CI', + 'GITHUB_ACTIONS', + 'GITLAB_CI', + 'CIRCLECI', + 'TRAVIS', + 'APPVEYOR', + 'BITBUCKET_BUILD_NUMBER', + 'BUILDKITE', + 'TEAMCITY_VERSION', + 'JENKINS_URL', + 'SYSTEM_COLLECTIONURI', + 'CI_NAME', + 'TASKCLUSTER_ROOT_URL', + 'DRONE', + 'WERCKER', + 'NEVERCODE', + 'SEMAPHORE', + 'NETLIFY', + 'NOW_BUILDER', + ] as $env) { + if (isset($_ENV[$env])) { + return $this->skip(sprintf( + 'This test is skipped on [CI].', + )); + } + } + + return $this; + } + /** * Skips the current test unless the given test is running on Windows. */ From 516ace85b40358eba51e030afd6254a8e5b64ce3 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 22:08:03 +0100 Subject: [PATCH 061/134] fix: skipOnCI --- src/PendingCalls/TestCall.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 102f16409..05bc2f59d 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -340,7 +340,7 @@ public function skipOnCI(): self 'NETLIFY', 'NOW_BUILDER', ] as $env) { - if (isset($_ENV[$env])) { + if (getenv('GITHUB_ACTIONS') !== false) { return $this->skip(sprintf( 'This test is skipped on [CI].', )); From f49b91ec0df11a6fcaf3a5f326485bce1f86dd19 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 22:31:08 +0100 Subject: [PATCH 062/134] fixes missing condition --- src/PendingCalls/TestCall.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 05bc2f59d..55a948e40 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -12,6 +12,7 @@ use Pest\Factories\TestCaseMethodFactory; use Pest\Mutate\Repositories\ConfigurationRepository; use Pest\PendingCalls\Concerns\Describable; +use Pest\Plugins\Environment; use Pest\Plugins\Only; use Pest\Support\Backtrace; use Pest\Support\Container; @@ -347,6 +348,12 @@ public function skipOnCI(): self } } + if (Environment::name() === Environment::CI) { + return $this->skip(sprintf( + 'This test is skipped on [CI].', + )); + } + return $this; } From 924dc016cca437f83a4601573ba305a7496c9e78 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 22:40:38 +0100 Subject: [PATCH 063/134] feat: `skipLocally` --- src/PendingCalls/TestCall.php | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 55a948e40..c86e5d7e3 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -316,9 +316,9 @@ private function skipOnOs(string $osFamily, string $message): self } /** - * Skips the current test when running on a CI environments. + * Weather the current test is running on a CI environment. */ - public function skipOnCI(): self + private function runningOnCI(): bool { foreach ([ 'CI', @@ -341,14 +341,20 @@ public function skipOnCI(): self 'NETLIFY', 'NOW_BUILDER', ] as $env) { - if (getenv('GITHUB_ACTIONS') !== false) { - return $this->skip(sprintf( - 'This test is skipped on [CI].', - )); + if (getenv($env) !== false) { + return true; } } - if (Environment::name() === Environment::CI) { + return Environment::name() === Environment::CI; + } + + /** + * Skips the current test when running on a CI environments. + */ + public function skipOnCI(): self + { + if ($this->runningOnCI()) { return $this->skip(sprintf( 'This test is skipped on [CI].', )); @@ -357,6 +363,17 @@ public function skipOnCI(): self return $this; } + public function skipLocally(): self + { + if ($this->runningOnCI() === false) { + return $this->skip(sprintf( + 'This test is skipped [locally].', + )); + } + + return $this; + } + /** * Skips the current test unless the given test is running on Windows. */ From be9c95e3bc9e08324b6cf15bf3bc4e3e56148598 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 23:06:43 +0100 Subject: [PATCH 064/134] feat: adds `see` --- src/PendingCalls/TestCall.php | 11 +++++++++++ tests/.snapshots/success.txt | 11 +++++++++-- tests/Arch.php | 21 --------------------- tests/Features/References.php | 11 +++++++++++ tests/Features/See.php | 11 +++++++++++ tests/Visual/Parallel.php | 2 +- 6 files changed, 43 insertions(+), 24 deletions(-) create mode 100644 tests/Features/References.php create mode 100644 tests/Features/See.php diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 4520858f2..6e78937c7 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -688,6 +688,17 @@ public function references(string|array ...$classes): self return $this; } + /** + * Adds one or more references to the tested method or class. This helps + * to link test cases to the source code for easier navigation. + * + * @param array|class-string ...$classes + */ + public function see(string|array ...$classes): self + { + return $this->references(...$classes); + } + /** * Informs the test runner that no expectations happen in this test, * and its purpose is simply to check whether the given code can diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 7b78f425e..62bc88b52 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -4,7 +4,6 @@ ✓ preset → strict → ignoring ['usleep'] ✓ preset → security → ignoring ['eval', 'str_shuffle', 'exec', …] ✓ globals - ✓ dependencies ✓ contracts PASS Tests\Environments\Windows @@ -1133,6 +1132,10 @@ ✓ nested → it may be associated with an pr #1, #4, #5, #6, #3 // an note between an the pr + PASS Tests\Features\References + ✓ it can reference a specific class + ✓ it can reference a specific class method + PASS Tests\Features\Repeat ✓ once ✓ multiple times @ repetition 1 of 5 @@ -1309,6 +1312,10 @@ ✓ it can see datasets defined in Pest.php file with ('B') ✓ Pest.php dataset is taken + PASS Tests\Features\See + ✓ it can reference a specific class + ✓ it can reference a specific class method + WARN Tests\Features\Skip ✓ it do not skips - it skips with truthy → 1 @@ -1712,4 +1719,4 @@ WARN Tests\Visual\Version - visual snapshot of help command output - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1146 passed (2739 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1149 passed (2742 assertions) \ No newline at end of file diff --git a/tests/Arch.php b/tests/Arch.php index 905515d28..6348a0f31 100644 --- a/tests/Arch.php +++ b/tests/Arch.php @@ -27,27 +27,6 @@ ->not->toBeUsed() ->ignoring(Expectation::class); -arch('dependencies') - ->expect('Pest') - ->toOnlyUse([ - 'dd', - 'dump', - 'expect', - 'uses', - 'Termwind', - 'ParaTest', - 'Pest\Arch', - 'Pest\Browser', - 'Pest\Mutate\Contracts\Configuration', - 'Pest\Mutate\Decorators\TestCallDecorator', - 'Pest\Mutate\Repositories\ConfigurationRepository', - 'Pest\Plugin', - 'NunoMaduro\Collision', - 'Whoops', - 'Symfony\Component\Console', - 'Symfony\Component\Process', - ])->ignoring(['Composer', 'PHPUnit', 'SebastianBergmann']); - arch('contracts') ->expect('Pest\Contracts') ->toOnlyUse([ diff --git a/tests/Features/References.php b/tests/Features/References.php new file mode 100644 index 000000000..a19db35a1 --- /dev/null +++ b/tests/Features/References.php @@ -0,0 +1,11 @@ +toBeString(); +})->references(Panic::class); + +it('can reference a specific class method', function () { + expect(Panic::with(...))->toBeCallable(); +})->references([Panic::class, 'with']); diff --git a/tests/Features/See.php b/tests/Features/See.php new file mode 100644 index 000000000..7c9393eeb --- /dev/null +++ b/tests/Features/See.php @@ -0,0 +1,11 @@ +toBeString(); +})->see(Panic::class); + +it('can reference a specific class method', function () { + expect(Panic::with(...))->toBeCallable(); +})->see([Panic::class, 'with']); diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 01492414a..18e9b696f 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1136 passed (2715 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1139 passed (2718 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From f9901245f19b190c658e064492db00bb4fa5134d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 23:51:32 +0100 Subject: [PATCH 065/134] updates dependencies and snapshots --- composer.json | 6 ++--- .../Runner/ResultCache/DefaultResultCache.php | 25 ++++++++----------- src/Mixins/Expectation.php | 2 +- src/Pest.php | 2 +- src/Repositories/SnapshotRepository.php | 4 +-- src/Support/Str.php | 3 ++- ...isual_snapshot_of_help_command_output.snap | 2 +- ...isual_snapshot_of_help_command_output.snap | 2 +- tests/.snapshots/success.txt | 9 ++++++- tests/Visual/Parallel.php | 2 +- 10 files changed, 31 insertions(+), 26 deletions(-) diff --git a/composer.json b/composer.json index 55bd94ee7..9144724e1 100644 --- a/composer.json +++ b/composer.json @@ -18,19 +18,19 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.10.3", + "brianium/paratest": "^7.11.0", "nunomaduro/collision": "^8.8.2", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.2.6", + "phpunit/phpunit": "^12.2.7", "symfony/process": "^7.3.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.2.6", + "phpunit/phpunit": ">12.2.7", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, diff --git a/overrides/Runner/ResultCache/DefaultResultCache.php b/overrides/Runner/ResultCache/DefaultResultCache.php index fde6bad91..7e7f359c6 100644 --- a/overrides/Runner/ResultCache/DefaultResultCache.php +++ b/overrides/Runner/ResultCache/DefaultResultCache.php @@ -49,7 +49,7 @@ use const LOCK_EX; use PHPUnit\Framework\TestStatus\TestStatus; -use PHPUnit\Runner\DirectoryCannotBeCreatedException; +use PHPUnit\Runner\DirectoryDoesNotExistException; use PHPUnit\Runner\Exception; use PHPUnit\Util\Filesystem; @@ -72,10 +72,7 @@ */ final class DefaultResultCache implements ResultCache { - /** - * @var string - */ - private const DEFAULT_RESULT_CACHE_FILENAME = '.phpunit.result.cache'; + private const string DEFAULT_RESULT_CACHE_FILENAME = '.phpunit.result.cache'; private readonly string $cacheFilename; @@ -98,28 +95,28 @@ public function __construct(?string $filepath = null) $this->cacheFilename = $filepath ?? $_ENV['PHPUNIT_RESULT_CACHE'] ?? self::DEFAULT_RESULT_CACHE_FILENAME; } - public function setStatus(string $id, TestStatus $status): void + public function setStatus(ResultCacheId $id, TestStatus $status): void { if ($status->isSuccess()) { return; } - $this->defects[$id] = $status; + $this->defects[$id->asString()] = $status; } - public function status(string $id): TestStatus + public function status(ResultCacheId $id): TestStatus { - return $this->defects[$id] ?? TestStatus::unknown(); + return $this->defects[$id->asString()] ?? TestStatus::unknown(); } - public function setTime(string $id, float $time): void + public function setTime(ResultCacheId $id, float $time): void { - $this->times[$id] = $time; + $this->times[$id->asString()] = $time; } - public function time(string $id): float + public function time(ResultCacheId $id): float { - return $this->times[$id] ?? 0.0; + return $this->times[$id->asString()] ?? 0.0; } public function mergeWith(self $other): void @@ -179,7 +176,7 @@ public function load(): void public function persist(): void { if (! Filesystem::createDirectory(dirname($this->cacheFilename))) { - throw new DirectoryCannotBeCreatedException($this->cacheFilename); + throw new DirectoryDoesNotExistException(dirname($this->cacheFilename)); } $data = [ diff --git a/src/Mixins/Expectation.php b/src/Mixins/Expectation.php index 8f806e0eb..6ebcb5465 100644 --- a/src/Mixins/Expectation.php +++ b/src/Mixins/Expectation.php @@ -660,7 +660,7 @@ public function toHaveKeys(array $keys, string $message = ''): self { foreach ($keys as $k => $key) { if (is_array($key)) { - $this->toHaveKeys(array_keys(Arr::dot($key, $k . '.')), $message); + $this->toHaveKeys(array_keys(Arr::dot($key, $k.'.')), $message); } else { $this->toHaveKey($key, message: $message); } diff --git a/src/Pest.php b/src/Pest.php index 7ddec7111..52de2a13a 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-alpha.5'; + return '4.0.0-alpha.6'; } function testDirectory(string $file = ''): string diff --git a/src/Repositories/SnapshotRepository.php b/src/Repositories/SnapshotRepository.php index 171fd88f2..7f7a95738 100644 --- a/src/Repositories/SnapshotRepository.php +++ b/src/Repositories/SnapshotRepository.php @@ -19,8 +19,8 @@ final class SnapshotRepository * Creates a snapshot repository instance. */ public function __construct( - readonly private string $testsPath, - readonly private string $snapshotsPath, + private readonly string $testsPath, + private readonly string $snapshotsPath, ) {} /** diff --git a/src/Support/Str.php b/src/Support/Str.php index effebabf7..e5b78b6dc 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -58,7 +58,7 @@ public static function evaluable(string $code): string { $code = str_replace('_', '__', $code); - $code = self::PREFIX . str_replace(' ', '_', $code); + $code = self::PREFIX.str_replace(' ', '_', $code); // sticks to PHP8.2 function naming rules https://www.php.net/manual/en/functions.user-defined.php return (string) preg_replace('/[^a-zA-Z0-9_\x80-\xff]/', '_', $code); @@ -124,6 +124,7 @@ public static function isUrl(string $value): bool public static function slugify(string $target): string { $target = preg_replace('/[^a-zA-Z0-9]+/', '-', $target); + return strtolower(trim($target, '-')); } } diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 8a1749274..5adc938ad 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-alpha.5. + Pest Testing Framework 4.0.0-alpha.6. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index f54244dad..6c48a1b3a 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-alpha.5. + Pest Testing Framework 4.0.0-alpha.6. diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 62bc88b52..ace3b04fc 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -628,6 +628,13 @@ ✓ pass ✓ failures ✓ failures with custom message + ✓ not failures + + PASS Tests\Features\Expect\toBeSlug + ✓ pass + ✓ failures + ✓ failures with custom message + ✓ failures with default message ✓ not failures PASS Tests\Features\Expect\toBeSnakeCase @@ -1719,4 +1726,4 @@ WARN Tests\Visual\Version - visual snapshot of help command output - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1149 passed (2742 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1154 passed (2754 assertions) \ No newline at end of file diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 18e9b696f..d9cdfbdd4 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1139 passed (2718 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1144 passed (2730 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From fe27012bbca23f45f41bebbbe2ec8cc6ab918479 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 22 Jul 2025 23:58:36 +0100 Subject: [PATCH 066/134] style --- src/PendingCalls/TestCall.php | 8 ++------ src/Support/Shell.php | 4 +--- src/Support/Str.php | 2 +- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index 6e78937c7..d10505f04 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -355,9 +355,7 @@ private function runningOnCI(): bool public function skipOnCI(): self { if ($this->runningOnCI()) { - return $this->skip(sprintf( - 'This test is skipped on [CI].', - )); + return $this->skip('This test is skipped on [CI].'); } return $this; @@ -366,9 +364,7 @@ public function skipOnCI(): self public function skipLocally(): self { if ($this->runningOnCI() === false) { - return $this->skip(sprintf( - 'This test is skipped [locally].', - )); + return $this->skip('This test is skipped [locally].'); } return $this; diff --git a/src/Support/Shell.php b/src/Support/Shell.php index 0f9c9d55e..b5c5b1573 100644 --- a/src/Support/Shell.php +++ b/src/Support/Shell.php @@ -94,10 +94,8 @@ private static function tinkered(PsyShell $shell): ?object $config = app()->make('config'); - $loader = ClassAliasAutoloader::register( + return ClassAliasAutoloader::register( $shell, $path, $config->get('tinker.alias', []), $config->get('tinker.dont_alias', []) ); - - return $loader; } } diff --git a/src/Support/Str.php b/src/Support/Str.php index e5b78b6dc..ff4bf5f42 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -125,6 +125,6 @@ public static function slugify(string $target): string { $target = preg_replace('/[^a-zA-Z0-9]+/', '-', $target); - return strtolower(trim($target, '-')); + return strtolower(trim((string) $target, '-')); } } From aac08629f7456163e09c1247032c3e07b3195588 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 23 Jul 2025 08:26:12 +0100 Subject: [PATCH 067/134] ci: removes testing against lowest --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1a1ea7eb9..cda60c060 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,7 +15,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] symfony: ['7.3'] php: ['8.3', '8.4'] - dependency_version: [prefer-lowest, prefer-stable] + dependency_version: [prefer-stable] name: PHP ${{ matrix.php }} - Symfony ^${{ matrix.symfony }} - ${{ matrix.os }} - ${{ matrix.dependency_version }} From 6d6e4e040fc2c9de1b668294a325bd022e3cc1c3 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 25 Jul 2025 18:03:58 -0600 Subject: [PATCH 068/134] fix: wrong status code being used --- src/Result.php | 46 ++----------------- .../EnsureIgnorableTestCasesAreIgnored.php | 2 +- 2 files changed, 4 insertions(+), 44 deletions(-) diff --git a/src/Result.php b/src/Result.php index 4dcbe4a12..97eda17f4 100644 --- a/src/Result.php +++ b/src/Result.php @@ -4,9 +4,9 @@ namespace Pest; -use NunoMaduro\Collision\Adapters\Phpunit\Support\ResultReflection; use PHPUnit\TestRunner\TestResult\TestResult; use PHPUnit\TextUI\Configuration\Configuration; +use PHPUnit\TextUI\ShellExitCodeCalculator; /** * @internal @@ -15,10 +15,6 @@ final class Result { private const int SUCCESS_EXIT = 0; - private const int FAILURE_EXIT = 1; - - private const int EXCEPTION_EXIT = 2; - /** * If the exit code is different from 0. */ @@ -40,44 +36,8 @@ public static function ok(Configuration $configuration, TestResult $result): boo */ public static function exitCode(Configuration $configuration, TestResult $result): int { - if ($result->wasSuccessful()) { - if ($configuration->failOnWarning()) { - $warnings = $result->numberOfTestsWithTestTriggeredPhpunitWarningEvents() - + count($result->warnings()) - + count($result->phpWarnings()); - - if ($warnings > 0) { - return self::FAILURE_EXIT; - } - } - - if (! $result->hasTestTriggeredPhpunitWarningEvents()) { - return self::SUCCESS_EXIT; - } - } - - if ($configuration->failOnEmptyTestSuite() && ResultReflection::numberOfTests($result) === 0) { - return self::FAILURE_EXIT; - } - - if ($result->wasSuccessful()) { - if ($configuration->failOnRisky() && $result->hasTestConsideredRiskyEvents()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($configuration->failOnIncomplete() && $result->hasTestMarkedIncompleteEvents()) { - $returnCode = self::FAILURE_EXIT; - } - - if ($configuration->failOnSkipped() && $result->hasTestSkippedEvents()) { - $returnCode = self::FAILURE_EXIT; - } - } - - if ($result->hasTestErroredEvents()) { - return self::EXCEPTION_EXIT; - } + $shell = new ShellExitCodeCalculator; - return self::FAILURE_EXIT; + return $shell->calculate($configuration, $result); } } diff --git a/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php b/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php index 1cf3d55a6..a6e837bfe 100644 --- a/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php +++ b/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php @@ -35,7 +35,7 @@ public function notify(Started $event): void /** @var array $testRunnerTriggeredWarningEvents */ $testRunnerTriggeredWarningEvents = $property->getValue($collector); - $testRunnerTriggeredWarningEvents = array_values(array_filter($testRunnerTriggeredWarningEvents, fn (WarningTriggered $event): bool => $event->message() !== 'No tests found in class "Pest\TestCases\IgnorableTestCase".')); + $testRunnerTriggeredWarningEvents = array_values(array_filter($testRunnerTriggeredWarningEvents, fn (WarningTriggered $event): bool => str_contains($event->message(), 'No tests found in class') === false)); $property->setValue($collector, $testRunnerTriggeredWarningEvents); } From de4409e368da1dcf350b47de882cc63238ba4add Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 25 Jul 2025 20:54:37 -0600 Subject: [PATCH 069/134] fix: before all --- overrides/Event/Value/ThrowableBuilder.php | 4 +++- src/Concerns/Testable.php | 11 ++++++++--- tests/.snapshots/success.txt | 7 ++++++- tests/Hooks/BeforeAllTest.php | 16 ++++++++++++++++ tests/Pest.php | 1 - tests/Visual/Parallel.php | 2 +- 6 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 tests/Hooks/BeforeAllTest.php diff --git a/overrides/Event/Value/ThrowableBuilder.php b/overrides/Event/Value/ThrowableBuilder.php index 21d428e96..d446d03c5 100644 --- a/overrides/Event/Value/ThrowableBuilder.php +++ b/overrides/Event/Value/ThrowableBuilder.php @@ -52,6 +52,8 @@ use PHPUnit\Util\ThrowableToStringMapper; /** + * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit + * * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final readonly class ThrowableBuilder @@ -82,7 +84,7 @@ public static function from(\Throwable $t): Throwable $t->getMessage(), ThrowableToStringMapper::map($t), $trace, - $previous + $previous, ); } } diff --git a/src/Concerns/Testable.php b/src/Concerns/Testable.php index 326115ea3..767a7c696 100644 --- a/src/Concerns/Testable.php +++ b/src/Concerns/Testable.php @@ -6,6 +6,7 @@ use Closure; use Pest\Exceptions\DatasetArgumentsMismatch; +use Pest\Panic; use Pest\Preset; use Pest\Support\ChainableClosure; use Pest\Support\ExceptionTrace; @@ -194,7 +195,11 @@ public static function setUpBeforeClass(): void $beforeAll = ChainableClosure::boundStatically(self::$__beforeAll, $beforeAll); } - call_user_func(Closure::bind($beforeAll, null, self::class)); + try { + call_user_func(Closure::bind($beforeAll, null, self::class)); + } catch (Throwable $e) { + Panic::with($e); + } } /** @@ -222,8 +227,6 @@ protected function setUp(...$arguments): void $method = TestSuite::getInstance()->tests->get(self::$__filename)->getMethod($this->name()); - $method->setUp($this); - $description = $method->description; if ($this->dataName()) { $description = str_contains((string) $description, ':dataset') @@ -287,6 +290,8 @@ public function __initializeTestCase(): void self::$__latestPrs = $method->prs; $this->__describing = $method->describing; $this->__test = $method->getClosure(); + + $method->setUp($this); } } diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index ace3b04fc..a1638158f 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -1453,6 +1453,11 @@ ✓ nested → nested afterEach execution order ✓ global afterEach execution order + PASS Tests\Hooks\BeforeAllTest + ✓ it gets called before all tests 1 @ repetition 1 of 2 + ✓ it gets called before all tests 1 @ repetition 2 of 2 + ✓ it gets called before all tests 2 + PASS Tests\Hooks\BeforeEachTest ✓ global beforeEach execution order @@ -1726,4 +1731,4 @@ WARN Tests\Visual\Version - visual snapshot of help command output - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1154 passed (2754 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1157 passed (2766 assertions) \ No newline at end of file diff --git a/tests/Hooks/BeforeAllTest.php b/tests/Hooks/BeforeAllTest.php new file mode 100644 index 000000000..d411d263e --- /dev/null +++ b/tests/Hooks/BeforeAllTest.php @@ -0,0 +1,16 @@ +beforeAll(function () { + expect($_SERVER['globalHook']->calls->beforeAll) + ->toBe(0); + + $_SERVER['globalHook']->calls->beforeAll++; +}); + +it('gets called before all tests 1', function () { + expect($_SERVER['globalHook']->calls->beforeAll)->toBe(1); +})->repeat(2); + +it('gets called before all tests 2', function () { + expect($_SERVER['globalHook']->calls->beforeAll)->toBe(1); +}); diff --git a/tests/Pest.php b/tests/Pest.php index a938fc7e4..e498450cd 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -29,7 +29,6 @@ }) ->beforeAll(function () { $_SERVER['globalHook']->beforeAll = 0; - $_SERVER['globalHook']->calls->beforeAll++; }) ->afterEach(function () { if (! isset($this->ith)) { diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index d9cdfbdd4..226a01e7e 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1144 passed (2730 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1147 passed (2742 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From 2aa32569f0c541179d49b1e17c0c21d9aab939f2 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 25 Jul 2025 21:06:39 -0600 Subject: [PATCH 070/134] fix: adjust snapshots --- tests/.snapshots/success.txt | 6 +++++- tests/Visual/Parallel.php | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index a1638158f..e8e4608da 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -1731,4 +1731,8 @@ WARN Tests\Visual\Version - visual snapshot of help command output - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1157 passed (2766 assertions) \ No newline at end of file + PASS Testsexternal\Features\Expect\toMatchSnapshot + ✓ pass with dataset with ('my-datas-set-value') + ✓ within describe → pass with dataset with ('my-datas-set-value') + + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1159 passed (2774 assertions) \ No newline at end of file diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 226a01e7e..eca262041 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1147 passed (2742 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 24 skipped, 1149 passed (2750 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From 222ed174bcaa48928e811d069015b1ea06bcc276 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 25 Jul 2025 21:10:05 -0600 Subject: [PATCH 071/134] style --- src/Mixins/Expectation.php | 8 ++++---- tests-external/Features/Expect/toMatchSnapshot.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Mixins/Expectation.php b/src/Mixins/Expectation.php index 62fb14b48..c3dfa45e3 100644 --- a/src/Mixins/Expectation.php +++ b/src/Mixins/Expectation.php @@ -781,13 +781,13 @@ public function toMatchArray(iterable $array, string $message = ''): self foreach ($array as $key => $value) { Assert::assertArrayHasKey($key, $valueAsArray, $message); - $second_message = $message !== '' ? $message : sprintf( + $assertMessage = $message !== '' ? $message : sprintf( 'Failed asserting that an array has a key %s with the value %s.', $this->export($key), $this->export($valueAsArray[$key]), ); - Assert::assertEquals($value, $valueAsArray[$key], $second_message); + Assert::assertEquals($value, $valueAsArray[$key], $assertMessage); } return $this; @@ -812,13 +812,13 @@ public function toMatchObject(iterable $object, string $message = ''): self /* @phpstan-ignore-next-line */ $propertyValue = $this->value->{$property}; - $second_message = $message !== '' ? $message : sprintf( + $assertMessage = $message !== '' ? $message : sprintf( 'Failed asserting that an object has a property %s with the value %s.', $this->export($property), $this->export($propertyValue), ); - Assert::assertEquals($value, $propertyValue, $second_message); + Assert::assertEquals($value, $propertyValue, $assertMessage); } return $this; diff --git a/tests-external/Features/Expect/toMatchSnapshot.php b/tests-external/Features/Expect/toMatchSnapshot.php index db7b9666d..2cef88a14 100644 --- a/tests-external/Features/Expect/toMatchSnapshot.php +++ b/tests-external/Features/Expect/toMatchSnapshot.php @@ -32,4 +32,4 @@ ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') ->and($this->snapshotable)->toMatchSnapshot(); }); -})->with(['my-datas-set-value']); \ No newline at end of file +})->with(['my-datas-set-value']); From d187566e633113e8fe85c85be64a31d7a3086894 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 25 Jul 2025 21:29:26 -0600 Subject: [PATCH 072/134] chore: updates snapshots --- src/Support/Description.php | 6 ++++++ tests/.snapshots/success.txt | 3 +-- tests/Visual/Parallel.php | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Support/Description.php b/src/Support/Description.php index 01fc45a68..d7d775f22 100644 --- a/src/Support/Description.php +++ b/src/Support/Description.php @@ -6,8 +6,14 @@ final readonly class Description implements \Stringable { + /** + * Creates a new Description instance. + */ public function __construct(private string $description) {} + /** + * Returns the description as a string. + */ public function __toString(): string { return $this->description; diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 34fca8091..734f573bc 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -1785,5 +1785,4 @@ ✓ pass with dataset with ('my-datas-set-value') ✓ within describe → pass with dataset with ('my-datas-set-value') - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 38 todos, 33 skipped, 1159 passed (2774 assertions) - + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1189 passed (2815 assertions) \ No newline at end of file diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 08747a53b..fb04f117a 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1172 passed (2761 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1179 passed (2791 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From 4c88590b893337d2fabdf12a032f68cb8df1f288 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sat, 26 Jul 2025 07:47:00 -0600 Subject: [PATCH 073/134] feat: `not.toHaveSuspiciousCharacters` --- src/ArchPresets/Php.php | 7 +++++++ src/Expectation.php | 11 ++--------- src/Expectations/OppositeExpectation.php | 19 +++++++++++++++++++ tests/.snapshots/success.txt | 2 +- tests/Visual/Parallel.php | 2 +- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/ArchPresets/Php.php b/src/ArchPresets/Php.php index 22b409b64..b70a2a11e 100644 --- a/src/ArchPresets/Php.php +++ b/src/ArchPresets/Php.php @@ -4,6 +4,9 @@ namespace Pest\ArchPresets; +use Pest\Arch\Contracts\ArchExpectation; +use Pest\Expectation; + /** * @internal */ @@ -89,5 +92,9 @@ public function execute(): void 'xdebug_var_dump', 'trap', ])->not->toBeUsed(); + + $this->eachUserNamespace( + fn (Expectation $namespace): ArchExpectation => $namespace->not->toHaveSuspiciousCharacters(), + ); } } diff --git a/src/Expectation.php b/src/Expectation.php index d885d0b1d..5c8a076b7 100644 --- a/src/Expectation.php +++ b/src/Expectation.php @@ -897,16 +897,9 @@ public function toUseNothing(): ArchExpectation /** * Asserts that the source code of the given expectation target does not include suspicious characters. */ - public function toNotIncludeSuspiciousCharacters(): ArchExpectation + public function toHaveSuspiciousCharacters(): ArchExpectation { - $checker = new Spoofchecker(); - - return Targeted::make( - $this, - fn (ObjectDescription $object) => ! $checker->isSuspicious(file_get_contents($object->path)), - 'to not include suspicious characters', - FileLineFinder::where(fn (string $line) => $checker->isSuspicious($line)), - ); + throw InvalidExpectation::fromMethods(['toHaveSuspiciousCharacters']); } /** diff --git a/src/Expectations/OppositeExpectation.php b/src/Expectations/OppositeExpectation.php index d5c3f083a..eec50c63d 100644 --- a/src/Expectations/OppositeExpectation.php +++ b/src/Expectations/OppositeExpectation.php @@ -24,6 +24,7 @@ use PHPUnit\Framework\ExpectationFailedException; use ReflectionMethod; use ReflectionProperty; +use Spoofchecker; use stdClass; /** @@ -278,6 +279,24 @@ public function toHaveMethod(array|string $method): ArchExpectation ); } + /** + * Asserts that the given expectation target does not have suspicious characters. + */ + public function toHaveSuspiciousCharacters(): ArchExpectation + { + $checker = new Spoofchecker; + + /** @var Expectation|string> $original */ + $original = $this->original; + + return Targeted::make( + $original, + fn (ObjectDescription $object): bool => ! $checker->isSuspicious((string) file_get_contents($object->path)), + 'to not include suspicious characters', + FileLineFinder::where(fn (string $line): bool => $checker->isSuspicious($line)), + ); + } + /** * Asserts that the given expectation target does not have the given methods. * diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 734f573bc..2f4c6d141 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -1785,4 +1785,4 @@ ✓ pass with dataset with ('my-datas-set-value') ✓ within describe → pass with dataset with ('my-datas-set-value') - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1189 passed (2815 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1189 passed (2816 assertions) \ No newline at end of file diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index fb04f117a..ebc5a1be8 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1179 passed (2791 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1179 passed (2792 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From ee6b3ed0621e1ad8e1b7ecd98b53049f610bb76e Mon Sep 17 00:00:00 2001 From: Joel Butcher Date: Tue, 29 Jul 2025 19:13:33 +0100 Subject: [PATCH 074/134] fix: throw a fatal exception if the tests directory does not exist --- src/Bootstrappers/BootFiles.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Bootstrappers/BootFiles.php b/src/Bootstrappers/BootFiles.php index 2017a7964..0fab45471 100644 --- a/src/Bootstrappers/BootFiles.php +++ b/src/Bootstrappers/BootFiles.php @@ -5,6 +5,7 @@ namespace Pest\Bootstrappers; use Pest\Contracts\Bootstrapper; +use Pest\Exceptions\FatalException; use Pest\Support\DatasetInfo; use Pest\Support\Str; use Pest\TestSuite; @@ -40,6 +41,10 @@ public function boot(): void $rootPath = TestSuite::getInstance()->rootPath; $testsPath = $rootPath.DIRECTORY_SEPARATOR.testDirectory(); + if (! is_dir($testsPath)) { + throw new FatalException(sprintf('The test directory [%s] does not exist.', $testsPath)); + } + foreach (self::STRUCTURE as $filename) { $filename = sprintf('%s%s%s', $testsPath, DIRECTORY_SEPARATOR, $filename); From e524bf5f7335347a8b9280d72b933e3341195e5c Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 30 Jul 2025 15:52:40 -0600 Subject: [PATCH 075/134] fix: filter by dataset name --- overrides/Runner/Filter/NameFilterIterator.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/overrides/Runner/Filter/NameFilterIterator.php b/overrides/Runner/Filter/NameFilterIterator.php index c637cc609..7834d9dbd 100644 --- a/overrides/Runner/Filter/NameFilterIterator.php +++ b/overrides/Runner/Filter/NameFilterIterator.php @@ -99,7 +99,9 @@ public function accept(): bool } if ($test instanceof HasPrintableTestCaseName) { - $name = $test::getPrintableTestCaseName().'::'.$test->getPrintableTestCaseMethodName(); + $name = trim( + $test::getPrintableTestCaseName().'::'.$test->getPrintableTestCaseMethodName().$test->dataSetAsString() + ); } else { $name = $test::class.'::'.$test->nameWithDataSet(); } From 91bb7589e201449f6831e4961bab0c330a277a52 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 3 Aug 2025 09:31:31 -0600 Subject: [PATCH 076/134] fix: wording on exception --- src/Exceptions/TestCaseAlreadyInUse.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Exceptions/TestCaseAlreadyInUse.php b/src/Exceptions/TestCaseAlreadyInUse.php index 7ebf62324..926c8ea6f 100644 --- a/src/Exceptions/TestCaseAlreadyInUse.php +++ b/src/Exceptions/TestCaseAlreadyInUse.php @@ -19,7 +19,11 @@ final class TestCaseAlreadyInUse extends InvalidArgumentException implements Exc */ public function __construct(string $inUse, string $newOne, string $folder) { - parent::__construct(sprintf('Test case `%s` can not be used. The folder `%s` already uses the test case `%s`', - $newOne, $folder, $inUse)); + parent::__construct(sprintf( + 'Test case [%s] can not be used. The folder [%s] already uses the test case [%s].', + $newOne, + $folder, + $inUse, + )); } } From fcb60f3c4a148ac115a9a82a2d5d02b0a2870fbd Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 3 Aug 2025 09:57:52 -0600 Subject: [PATCH 077/134] chore: improves wording --- src/Exceptions/TestClosureMustNotBeStatic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Exceptions/TestClosureMustNotBeStatic.php b/src/Exceptions/TestClosureMustNotBeStatic.php index b1f91e954..5dda67c0c 100644 --- a/src/Exceptions/TestClosureMustNotBeStatic.php +++ b/src/Exceptions/TestClosureMustNotBeStatic.php @@ -22,7 +22,7 @@ public function __construct(TestCaseMethodFactory $method) { parent::__construct( sprintf( - 'Test closure must not be static. Please remove the `static` keyword from the `%s` method in `%s`.', + 'Test closure must not be static. Please remove the [static] keyword from the [%s] method in [%s].', $method->description, $method->filename ) From 273edb864cb7c90455501d8c0953b3cd144a7b99 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 3 Aug 2025 10:32:14 -0600 Subject: [PATCH 078/134] chore: adjusts tests --- tests/Unit/TestSuite.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Unit/TestSuite.php b/tests/Unit/TestSuite.php index 5de7a9020..9d3d7904b 100644 --- a/tests/Unit/TestSuite.php +++ b/tests/Unit/TestSuite.php @@ -27,7 +27,7 @@ $testSuite->tests->set($method); })->throws( TestClosureMustNotBeStatic::class, - 'Test closure must not be static. Please remove the `static` keyword from the `bar` method in `foo`.', + 'Test closure must not be static. Please remove the [static] keyword from the [bar] method in [foo].', ); it('alerts users about tests with arguments but no input', function () { From 3b72bbd7fe4cccff5b3cf6dff0591159a756da26 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 3 Aug 2025 11:08:11 -0600 Subject: [PATCH 079/134] fix: `toMatchObject` accept objects --- src/Mixins/Expectation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mixins/Expectation.php b/src/Mixins/Expectation.php index c3dfa45e3..09974787c 100644 --- a/src/Mixins/Expectation.php +++ b/src/Mixins/Expectation.php @@ -800,7 +800,7 @@ public function toMatchArray(iterable $array, string $message = ''): self * @param iterable $object * @return self */ - public function toMatchObject(iterable $object, string $message = ''): self + public function toMatchObject(object|iterable $object, string $message = ''): self { foreach ((array) $object as $property => $value) { if (! is_object($this->value) && ! is_string($this->value)) { From e7132fa012fefa9a9bb763130a89f58e497fda81 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 3 Aug 2025 16:09:59 -0600 Subject: [PATCH 080/134] fix: removes `parse_str` from security preset --- src/ArchPresets/Security.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ArchPresets/Security.php b/src/ArchPresets/Security.php index c71427488..40b4f59d0 100644 --- a/src/ArchPresets/Security.php +++ b/src/ArchPresets/Security.php @@ -32,7 +32,6 @@ public function execute(): void 'create_function', 'unserialize', 'extract', - 'parse_str', 'mb_parse_str', 'dl', 'assert', From 711a60c2db20ca919d351332f0724820280b7c67 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 5 Aug 2025 17:44:12 +0100 Subject: [PATCH 081/134] release: beta 1 --- composer.json | 6 +++--- src/Exceptions/DatasetMissing.php | 2 +- src/Factories/Covers/CoversNothing.php | 10 ---------- src/PendingCalls/TestCall.php | 13 ------------- src/Pest.php | 2 +- src/TestSuite.php | 2 +- tests-external/Features/Expect/toMatchSnapshot.php | 4 ++-- ...t_value___with_data___my_datas_set_value__.snap" | 0 ...et_with_data_set_____my_datas_set_value___.snap" | 0 ...et_value___with_data___my_datas_set_value__.snap | 0 ...et_with_data_set_____my_datas_set_value___.snap} | 0 ...et_with_data_set_____my_datas_set_value___.snap" | 7 +++++++ ...tations_with_datasets_with_data_set____1__.snap} | 0 ...ions_with_datasets_with_data_set____1____2.snap} | 0 ...ons_with_datasets_with_data_set_____bar___.snap} | 0 ..._with_datasets_with_data_set_____bar_____2.snap} | 0 ...ons_with_datasets_with_data_set_____baz___.snap} | 0 ..._with_datasets_with_data_set_____baz_____2.snap} | 0 ...ons_with_datasets_with_data_set_____foo___.snap} | 0 ..._with_datasets_with_data_set_____foo_____2.snap} | 0 ...ctations_with_repeat_with_data_set____10__.snap} | 0 ...tions_with_repeat_with_data_set____10____2.snap} | 0 ...ectations_with_repeat_with_data_set____1__.snap} | 0 ...ations_with_repeat_with_data_set____1____2.snap} | 0 ...ectations_with_repeat_with_data_set____2__.snap} | 0 ...ations_with_repeat_with_data_set____2____2.snap} | 0 ...ectations_with_repeat_with_data_set____3__.snap} | 0 ...ations_with_repeat_with_data_set____3____2.snap} | 0 ...ectations_with_repeat_with_data_set____4__.snap} | 0 ...ations_with_repeat_with_data_set____4____2.snap} | 0 ...ectations_with_repeat_with_data_set____5__.snap} | 0 ...ations_with_repeat_with_data_set____5____2.snap} | 0 ...ectations_with_repeat_with_data_set____6__.snap} | 0 ...ations_with_repeat_with_data_set____6____2.snap} | 0 ...ectations_with_repeat_with_data_set____7__.snap} | 0 ...ations_with_repeat_with_data_set____7____2.snap} | 0 ...ectations_with_repeat_with_data_set____8__.snap} | 0 ...ations_with_repeat_with_data_set____8____2.snap} | 0 ...ectations_with_repeat_with_data_set____9__.snap} | 0 ...ations_with_repeat_with_data_set____9____2.snap} | 0 ...set_with_data_set_____my_datas_set_value___.snap | 7 +++++++ ....snap => collision_with_data_set__________.snap} | 0 .../visual_snapshot_of_help_command_output.snap | 2 +- .../visual_snapshot_of_help_command_output.snap | 2 +- tests/.snapshots/SuccessOnly.php.inc | 4 ++-- tests/.snapshots/success.txt | 5 +---- tests/Features/Covers/CoversNothing.php | 10 ---------- tests/Features/Expect/toMatchSnapshot.php | 4 ++-- tests/Unit/TestSuite.php | 2 +- tests/Visual/Parallel.php | 2 +- 50 files changed, 31 insertions(+), 53 deletions(-) delete mode 100644 src/Factories/Covers/CoversNothing.php rename "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" => "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset___my_datas_set_value___with_data___my_datas_set_value__.snap" (100%) rename tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap => "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" (100%) rename "tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" => tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset___my_datas_set_value___with_data___my_datas_set_value__.snap (100%) rename tests/.pest/{snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap => snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap} (100%) create mode 100644 "tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set___1____1_.snap => multiple_snapshot_expectations_with_datasets_with_data_set____1__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set___1____1___2.snap => multiple_snapshot_expectations_with_datasets_with_data_set____1____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____bar______bar__.snap => multiple_snapshot_expectations_with_datasets_with_data_set_____bar___.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____bar______bar____2.snap => multiple_snapshot_expectations_with_datasets_with_data_set_____bar_____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____baz______baz__.snap => multiple_snapshot_expectations_with_datasets_with_data_set_____baz___.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____baz______baz____2.snap => multiple_snapshot_expectations_with_datasets_with_data_set_____baz_____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____foo______foo__.snap => multiple_snapshot_expectations_with_datasets_with_data_set_____foo___.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____foo______foo____2.snap => multiple_snapshot_expectations_with_datasets_with_data_set_____foo_____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___10____10_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____10__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___10____10___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____10____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___1____1_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____1__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___1____1___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____1____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___2____2_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____2__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___2____2___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____2____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___3____3_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____3__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___3____3___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____3____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___4____4_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____4__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___4____4___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____4____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___5____5_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____5__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___5____5___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____5____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___6____6_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____6__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___6____6___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____6____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___7____7_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____7__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___7____7___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____7____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___8____8_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____8__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___8____8___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____8____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___9____9_.snap => multiple_snapshot_expectations_with_repeat_with_data_set____9__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set___9____9___2.snap => multiple_snapshot_expectations_with_repeat_with_data_set____9____2.snap} (100%) create mode 100644 tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap rename tests/.pest/snapshots/Visual/Collision/{collision_with_data_set________________.snap => collision_with_data_set__________.snap} (100%) delete mode 100644 tests/Features/Covers/CoversNothing.php diff --git a/composer.json b/composer.json index 9144724e1..55b023551 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.2.7", + "phpunit/phpunit": "^12.3.0", "symfony/process": "^7.3.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.2.7", + "phpunit/phpunit": ">12.3.0", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -58,7 +58,7 @@ "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.0.0", "pestphp/pest-plugin-type-coverage": "^4.0.0", - "psy/psysh": "^0.12.9" + "psy/psysh": "^0.12.10" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/src/Exceptions/DatasetMissing.php b/src/Exceptions/DatasetMissing.php index dff803737..da738a448 100644 --- a/src/Exceptions/DatasetMissing.php +++ b/src/Exceptions/DatasetMissing.php @@ -22,7 +22,7 @@ final class DatasetMissing extends BadFunctionCallException implements Exception public function __construct(string $file, string $name, array $arguments) { parent::__construct(sprintf( - "A test with the description '%s' has %d argument(s) ([%s]) and no dataset(s) provided in %s", + 'A test with the description [%s] has [%d] argument(s) ([%s]) and no dataset(s) provided in [%s]', $name, count($arguments), implode(', ', array_map(static fn (string $arg, string $type): string => sprintf('%s $%s', $type, $arg), array_keys($arguments), $arguments)), diff --git a/src/Factories/Covers/CoversNothing.php b/src/Factories/Covers/CoversNothing.php deleted file mode 100644 index 4215edbc1..000000000 --- a/src/Factories/Covers/CoversNothing.php +++ /dev/null @@ -1,10 +0,0 @@ -testCaseMethod->attributes[] = new Attribute( - \PHPUnit\Framework\Attributes\CoversNothing::class, - [], - ); - - return $this; - } - /** * Adds one or more references to the tested method or class. This helps * to link test cases to the source code for easier navigation. diff --git a/src/Pest.php b/src/Pest.php index 52de2a13a..6913c069c 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-alpha.6'; + return '4.0.0-beta.1'; } function testDirectory(string $file = ''): string diff --git a/src/TestSuite.php b/src/TestSuite.php index 3918d19b2..df17ec2df 100644 --- a/src/TestSuite.php +++ b/src/TestSuite.php @@ -120,7 +120,7 @@ public function getDescription(): string assert($this->test instanceof TestCase); $description = str_replace('__pest_evaluable_', '', $this->test->name()); - $datasetAsString = str_replace('__pest_evaluable_', '', Str::evaluable($this->test->dataSetAsStringWithData())); + $datasetAsString = str_replace('__pest_evaluable_', '', Str::evaluable($this->test->dataSetAsString())); return str_replace(' ', '_', $description.$datasetAsString); } diff --git a/tests-external/Features/Expect/toMatchSnapshot.php b/tests-external/Features/Expect/toMatchSnapshot.php index 2cef88a14..2b5fa473a 100644 --- a/tests-external/Features/Expect/toMatchSnapshot.php +++ b/tests-external/Features/Expect/toMatchSnapshot.php @@ -19,7 +19,7 @@ [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots-external/') - ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); })->with(['my-datas-set-value']); @@ -29,7 +29,7 @@ [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots-external/') - ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); }); })->with(['my-datas-set-value']); diff --git "a/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" "b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset___my_datas_set_value___with_data___my_datas_set_value__.snap" similarity index 100% rename from "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" rename to "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset___my_datas_set_value___with_data___my_datas_set_value__.snap" diff --git a/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap "b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" similarity index 100% rename from tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap rename to "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" diff --git "a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset___my_datas_set_value___with_data___my_datas_set_value__.snap similarity index 100% rename from "tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap" rename to tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset___my_datas_set_value___with_data___my_datas_set_value__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap rename to tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap diff --git "a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" "b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" new file mode 100644 index 000000000..c2b4dc0a1 --- /dev/null +++ "b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" @@ -0,0 +1,7 @@ +
+
+
+

Snapshot

+
+
+
\ No newline at end of file diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1____1_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1____1_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1____1___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1____1___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar______bar__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar______bar__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar___.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar______bar____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar_____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar______bar____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar_____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz______baz__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz______baz__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz___.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz______baz____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz_____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz______baz____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz_____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo______foo__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo______foo__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo___.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo______foo____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo_____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo______foo____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo_____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10____10_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10____10_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10____10___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10____10___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1____1_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1____1_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1____1___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1____1___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2____2_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2____2_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2____2___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2____2___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3____3_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3____3_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3____3___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3____3___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4____4_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4____4_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4____4___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4____4___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5____5_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5____5_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5____5___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5____5___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6____6_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6____6_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6____6___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6____6___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7____7_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7____7_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7____7___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7____7___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8____8_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8____8_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8____8___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8____8___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9____9_.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9____9_.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9____9___2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9____9___2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap new file mode 100644 index 000000000..c2b4dc0a1 --- /dev/null +++ b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap @@ -0,0 +1,7 @@ +
+
+
+

Snapshot

+
+
+
\ No newline at end of file diff --git a/tests/.pest/snapshots/Visual/Collision/collision_with_data_set________________.snap b/tests/.pest/snapshots/Visual/Collision/collision_with_data_set__________.snap similarity index 100% rename from tests/.pest/snapshots/Visual/Collision/collision_with_data_set________________.snap rename to tests/.pest/snapshots/Visual/Collision/collision_with_data_set__________.snap diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 5adc938ad..21dc9ce02 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-alpha.6. + Pest Testing Framework 4.0.0-beta.1. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 6c48a1b3a..856143bab 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-alpha.6. + Pest Testing Framework 4.0.0-beta.1. diff --git a/tests/.snapshots/SuccessOnly.php.inc b/tests/.snapshots/SuccessOnly.php.inc index b00a0e36c..dd4d960f4 100644 --- a/tests/.snapshots/SuccessOnly.php.inc +++ b/tests/.snapshots/SuccessOnly.php.inc @@ -5,8 +5,8 @@ ##teamcity[testStarted name='can also pass' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can also pass' flowId='1234'] ##teamcity[testFinished name='can also pass' duration='100000' flowId='1234'] ##teamcity[testSuiteStarted name='can pass with dataset' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can pass with dataset' flowId='1234'] -##teamcity[testStarted name='can pass with dataset with data set "(true)"' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can pass with dataset with data set "(true)"' flowId='1234'] -##teamcity[testFinished name='can pass with dataset with data set "(true)"' duration='100000' flowId='1234'] +##teamcity[testStarted name='can pass with dataset with data set "@(true)"' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can pass with dataset with data set "@(true)"' flowId='1234'] +##teamcity[testFinished name='can pass with dataset with data set "@(true)"' duration='100000' flowId='1234'] ##teamcity[testSuiteFinished name='can pass with dataset' flowId='1234'] ##teamcity[testSuiteFinished name='Tests/tests/SuccessOnly' flowId='1234'] diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 2f4c6d141..bfa91bb1b 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -83,9 +83,6 @@ PASS Tests\Features\Covers\ClassCoverage ✓ it uses the correct PHPUnit attribute for class - PASS Tests\Features\Covers\CoversNothing - ✓ it uses the correct PHPUnit attribute for covers nothing - PASS Tests\Features\Covers\ExceptionHandling ✓ it throws exception if no class nor method has been found @@ -1785,4 +1782,4 @@ ✓ pass with dataset with ('my-datas-set-value') ✓ within describe → pass with dataset with ('my-datas-set-value') - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1189 passed (2816 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1188 passed (2814 assertions) \ No newline at end of file diff --git a/tests/Features/Covers/CoversNothing.php b/tests/Features/Covers/CoversNothing.php deleted file mode 100644 index 6918414c2..000000000 --- a/tests/Features/Covers/CoversNothing.php +++ /dev/null @@ -1,10 +0,0 @@ -name()))->getAttributes(); - - expect($attributes[2]->getName())->toBe(CoversNothing::class); - expect($attributes[2]->getArguments())->toHaveCount(0); -})->coversNothing(); diff --git a/tests/Features/Expect/toMatchSnapshot.php b/tests/Features/Expect/toMatchSnapshot.php index c2515829c..664887297 100644 --- a/tests/Features/Expect/toMatchSnapshot.php +++ b/tests/Features/Expect/toMatchSnapshot.php @@ -75,7 +75,7 @@ public function toString() [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots/') - ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); })->with(['my-datas-set-value']); @@ -85,7 +85,7 @@ public function toString() [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots/') - ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value______my_datas_set_value__.snap') + ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); }); })->with(['my-datas-set-value']); diff --git a/tests/Unit/TestSuite.php b/tests/Unit/TestSuite.php index 9d3d7904b..93c8a294e 100644 --- a/tests/Unit/TestSuite.php +++ b/tests/Unit/TestSuite.php @@ -40,7 +40,7 @@ $testSuite->tests->set($method); })->throws( DatasetMissing::class, - sprintf("A test with the description '%s' has %d argument(s) ([%s]) and no dataset(s) provided in %s", 'bar', 1, 'int $arg', 'foo'), + sprintf('A test with the description [%s] has [%d] argument(s) ([%s]) and no dataset(s) provided in [%s]', 'bar', 1, 'int $arg', 'foo'), ); it('can return an array of all test suite filenames', function () { diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index ebc5a1be8..f70c2826b 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1179 passed (2792 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1178 passed (2790 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From 0b96b8f630a828011a1e5f5ae59159effdacd11d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 6 Aug 2025 13:17:17 +0100 Subject: [PATCH 082/134] Allows old version of phpunit for now --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 55b023551..2c7e1684d 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.3.0", + "phpunit/phpunit": "^12.2.0", "symfony/process": "^7.3.0" }, "conflict": { From e3e518747f7b49c21574970ba9860a8fc106139d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 11 Aug 2025 15:45:37 +0100 Subject: [PATCH 083/134] release: beta 2 --- composer.json | 4 ++-- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 2c7e1684d..db2a5562d 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.2.0", + "phpunit/phpunit": "^12.3.3", "symfony/process": "^7.3.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.3.0", + "phpunit/phpunit": ">12.3.3", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, diff --git a/src/Pest.php b/src/Pest.php index 6913c069c..2eddef94f 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-beta.1'; + return '4.0.0-beta.2'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 21dc9ce02..18b8c58ff 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-beta.1. + Pest Testing Framework 4.0.0-beta.2. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 856143bab..e6a633670 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-beta.1. + Pest Testing Framework 4.0.0-beta.2. From ed38fb644fa7b64a00587fe4379489a935728b90 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 07:58:51 +0100 Subject: [PATCH 084/134] release: 4.0.0 rc 1 --- src/Logging/TeamCity/TeamCityLogger.php | 1 - src/Pest.php | 2 +- src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php | 2 -- src/Support/Reflection.php | 6 ------ .../Help/visual_snapshot_of_help_command_output.snap | 9 ++++++++- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- 6 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/Logging/TeamCity/TeamCityLogger.php b/src/Logging/TeamCity/TeamCityLogger.php index d111041f6..19a7be696 100644 --- a/src/Logging/TeamCity/TeamCityLogger.php +++ b/src/Logging/TeamCity/TeamCityLogger.php @@ -232,7 +232,6 @@ public function testExecutionFinished(ExecutionFinished $event): void $reflector = new ReflectionClass($telemetry); $property = $reflector->getProperty('current'); - $property->setAccessible(true); $snapshot = $property->getValue($telemetry); assert($snapshot instanceof Snapshot); diff --git a/src/Pest.php b/src/Pest.php index df6ce9aa7..5037bea8a 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-beta.3'; + return '4.0.0-rc.1'; } function testDirectory(string $file = ''): string diff --git a/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php b/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php index a6e837bfe..45a7823d8 100644 --- a/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php +++ b/src/Subscribers/EnsureIgnorableTestCasesAreIgnored.php @@ -23,14 +23,12 @@ public function notify(Started $event): void { $reflection = new ReflectionClass(Facade::class); $property = $reflection->getProperty('collector'); - $property->setAccessible(true); $collector = $property->getValue(); assert($collector instanceof Collector); $reflection = new ReflectionClass($collector); $property = $reflection->getProperty('testRunnerTriggeredWarningEvents'); - $property->setAccessible(true); /** @var array $testRunnerTriggeredWarningEvents */ $testRunnerTriggeredWarningEvents = $property->getValue($collector); diff --git a/src/Support/Reflection.php b/src/Support/Reflection.php index d55260699..d4f5f133d 100644 --- a/src/Support/Reflection.php +++ b/src/Support/Reflection.php @@ -34,8 +34,6 @@ public static function call(object $object, string $method, array $args = []): m try { $reflectionMethod = $reflectionClass->getMethod($method); - $reflectionMethod->setAccessible(true); - return $reflectionMethod->invoke($object, ...$args); } catch (ReflectionException $exception) { if (method_exists($object, '__call')) { @@ -113,8 +111,6 @@ public static function getPropertyValue(object $object, string $property): mixed } } - $reflectionProperty->setAccessible(true); - return $reflectionProperty->getValue($object); } @@ -144,8 +140,6 @@ public static function setPropertyValue(object $object, string $property, mixed } } } - - $reflectionProperty->setAccessible(true); $reflectionProperty->setValue($object, $value); } diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 3831fed42..478aa1385 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-beta.3. + Pest Testing Framework 4.0.0-rc.1. USAGE: pest [options] @@ -68,6 +68,7 @@ --fail-on-risky Signal failure using shell exit code when a test was considered risky --fail-on-deprecation Signal failure using shell exit code when a deprecation was triggered --fail-on-phpunit-deprecation Signal failure using shell exit code when a PHPUnit deprecation was triggered + --fail-on-phpunit-notice Signal failure using shell exit code when a PHPUnit notice was triggered --fail-on-phpunit-warning Signal failure using shell exit code when a PHPUnit warning was triggered --fail-on-notice Signal failure using shell exit code when a notice was triggered --fail-on-skipped Signal failure using shell exit code when a test was skipped @@ -78,6 +79,7 @@ --do-not-fail-on-risky Do not signal failure using shell exit code when a test was considered risky --do-not-fail-on-deprecation Do not signal failure using shell exit code when a deprecation was triggered --do-not-fail-on-phpunit-deprecation Do not signal failure using shell exit code when a PHPUnit deprecation was triggered + --do-not-fail-on-phpunit-notice Do not signal failure using shell exit code when a PHPUnit notice was triggered --do-not-fail-on-phpunit-warning Do not signal failure using shell exit code when a PHPUnit warning was triggered --do-not-fail-on-notice Do not signal failure using shell exit code when a notice was triggered --do-not-fail-on-skipped Do not signal failure using shell exit code when a test was skipped @@ -99,6 +101,7 @@ --display-skipped ........................ Display details for skipped tests --display-deprecations . Display details for deprecations triggered by tests --display-phpunit-deprecations .... Display details for PHPUnit deprecations + --display-phpunit-notices .............. Display details for PHPUnit notices --display-errors ............. Display details for errors triggered by tests --display-notices ........... Display details for notices triggered by tests --display-warnings ......... Display details for warnings triggered by tests @@ -108,10 +111,13 @@ --testdox ................ Replace default result output with TestDox format --testdox-summary Repeat TestDox output for tests with errors, failures, or issues --debug Replace default progress and result output with debugging information + --with-telemetry Include telemetry information in debugging information output --compact ................ Replace default result output with Compact format LOGGING OPTIONS: --log-junit [file] .......... Write test results in JUnit XML format to file + --log-otr [file] Write test results in Open Test Reporting XML format to file + --include-git-information Include Git information in Open Test Reporting XML logfile --log-teamcity [file] ........ Write test results in TeamCity format to file --testdox-html [file] .. Write test results in TestDox format (HTML) to file --testdox-text [file] Write test results in TestDox format (plain text) to file @@ -123,6 +129,7 @@ --coverage ..... Generate code coverage report and output to standard output --coverage --min Set the minimum required coverage percentage, and fail if not met --coverage-clover [file] Write code coverage report in Clover XML format to file + --coverage-openclover [file] Write code coverage report in OpenClover XML format to file --coverage-cobertura [file] Write code coverage report in Cobertura XML format to file --coverage-crap4j [file] Write code coverage report in Crap4J XML format to file --coverage-html [dir] Write code coverage report in HTML format to directory diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 471fdc7fb..cff9eedfa 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-beta.3. + Pest Testing Framework 4.0.0-rc.1. From 92523a6f397882d3dfa88818df38576ed23d82d6 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 08:01:45 +0100 Subject: [PATCH 085/134] chore: uses phpunit `v12.3.5` --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index db2a5562d..d69873fc1 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.0", "pestphp/pest-plugin-profanity": "^4.0.0", - "phpunit/phpunit": "^12.3.3", + "phpunit/phpunit": "^12.3.5", "symfony/process": "^7.3.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.3.3", + "phpunit/phpunit": ">12.3.5", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, From 71c2e97c9f1c423858fc49a3991b061a9732bd28 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 14:23:16 +0100 Subject: [PATCH 086/134] chore: bumps dependencies --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index d69873fc1..9c1a35e1c 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.11.0", + "brianium/paratest": "^7.11.2", "nunomaduro/collision": "^8.8.2", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", @@ -57,7 +57,7 @@ "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.0.0", - "pestphp/pest-plugin-type-coverage": "^4.0.0", + "pestphp/pest-plugin-type-coverage": "^4.0.1", "psy/psysh": "^0.12.10" }, "minimum-stability": "dev", From a35054580382eab1c386af0d39b944730e96c7d7 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 14:25:49 +0100 Subject: [PATCH 087/134] fix: windows check --- src/ArchPresets/Php.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ArchPresets/Php.php b/src/ArchPresets/Php.php index b70a2a11e..b6d860601 100644 --- a/src/ArchPresets/Php.php +++ b/src/ArchPresets/Php.php @@ -19,7 +19,6 @@ public function execute(): void { $this->expectations[] = expect([ 'debug_zval_dump', - 'debug_backtrace', 'debug_print_backtrace', 'dump', 'ray', From 6b523d6963e5e5d8dd027e1cf8a29c742d8e6f56 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 14:27:53 +0100 Subject: [PATCH 088/134] fix: puts back windows --- src/ArchPresets/Php.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ArchPresets/Php.php b/src/ArchPresets/Php.php index b6d860601..b70a2a11e 100644 --- a/src/ArchPresets/Php.php +++ b/src/ArchPresets/Php.php @@ -19,6 +19,7 @@ public function execute(): void { $this->expectations[] = expect([ 'debug_zval_dump', + 'debug_backtrace', 'debug_print_backtrace', 'dump', 'ray', From 19eca6e33892346d4a1c2e6a5a50c791bb880579 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 14:50:15 +0100 Subject: [PATCH 089/134] fix: skip windows for now --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cda60c060..bbc468ab3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: true matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [ubuntu-latest, macos-latest] # windows-latest symfony: ['7.3'] php: ['8.3', '8.4'] dependency_version: [prefer-stable] From 8722b3fc3ca35f111a6aa0acea2507eb1817278d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 15:03:36 +0100 Subject: [PATCH 090/134] docs: adjusts readme for 4.x --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index acb06126f..39317c2ed 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- PEST + PEST

GitHub Workflow Status (master) Total Downloads @@ -10,7 +10,7 @@ ------ -> Pest v3 Now Available: **[Read the announcement »](https://pestphp.com/docs/pest3-now-available)**. +> Pest v4 Now Available: **[Read the announcement »](https://pestphp.com/docs/pest-v4-is-here-now-with-browser-testing)**. **Pest** is an elegant PHP testing Framework with a focus on simplicity, meticulously designed to bring back the joy of testing in PHP. From 507df757a16a2748e4b3224ae2484dd9236b7b2b Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 15:29:23 +0100 Subject: [PATCH 091/134] release: 4.0.0 --- RELEASE.md | 4 ++-- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index f0ad61139..d5b2ab393 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -2,10 +2,10 @@ When releasing a new version of Pest there are some checks and updates that need to be done: -> **For Pest v2 you should use the `2.x` branch instead.** +> **For Pest v3 you should use the `3.x` branch instead.** - Clear your local repository with: `git add . && git reset --hard && git checkout 3.x` -- On the GitHub repository, check the contents of [github.com/pestphp/pest/compare/{latest_version}...3.x](https://github.com/pestphp/pest/compare/{latest_version}...3.x) +- On the GitHub repository, check the contents of [github.com/pestphp/pest/compare/{latest_version}...4.x](https://github.com/pestphp/pest/compare/{latest_version}...4.x) - Update the version number in [src/Pest.php](src/Pest.php) - Run the tests locally using: `composer test` - Commit the Pest file with the message: `git commit -m "release: vX.X.X"` diff --git a/src/Pest.php b/src/Pest.php index 5037bea8a..43ee0bb73 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0-rc.1'; + return '4.0.0'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 478aa1385..e1362c837 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0-rc.1. + Pest Testing Framework 4.0.0. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index cff9eedfa..023e4b4dd 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0-rc.1. + Pest Testing Framework 4.0.0. From 50960a96e94bdd2d42af82394e325d74be2a3ace Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 20 Aug 2025 15:30:59 +0100 Subject: [PATCH 092/134] docs: adjusts release script --- README.md | 2 +- RELEASE.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 39317c2ed..a4a44b0d4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

PEST

- GitHub Workflow Status (master) + GitHub Workflow Status (master) Total Downloads Latest Version License diff --git a/RELEASE.md b/RELEASE.md index d5b2ab393..6ba2a721e 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -4,7 +4,7 @@ When releasing a new version of Pest there are some checks and updates that need > **For Pest v3 you should use the `3.x` branch instead.** -- Clear your local repository with: `git add . && git reset --hard && git checkout 3.x` +- Clear your local repository with: `git add . && git reset --hard && git checkout 4.x` - On the GitHub repository, check the contents of [github.com/pestphp/pest/compare/{latest_version}...4.x](https://github.com/pestphp/pest/compare/{latest_version}...4.x) - Update the version number in [src/Pest.php](src/Pest.php) - Run the tests locally using: `composer test` From cd5272d8cc9f37e66dbfb3288895023075a40f57 Mon Sep 17 00:00:00 2001 From: Admiral-Enigma Date: Fri, 22 Aug 2025 10:00:49 +0200 Subject: [PATCH 093/134] Cast "testdox-columns" to an int --- bin/worker.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/worker.php b/bin/worker.php index c26b05eba..b65c91f01 100644 --- a/bin/worker.php +++ b/bin/worker.php @@ -86,7 +86,7 @@ $getopt['teamcity-file'] ?? null, $getopt['testdox-file'] ?? null, isset($getopt['testdox-color']), - $getopt['testdox-columns'] ?? null, + (int) $getopt['testdox-columns'] ?? null, ); while (true) { From af1e214be4a07caf02c8357f073819ec9624a695 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 22 Aug 2025 09:22:12 +0100 Subject: [PATCH 094/134] chore: bumps dependencies --- composer.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index 9c1a35e1c..9574e89f9 100644 --- a/composer.json +++ b/composer.json @@ -23,8 +23,8 @@ "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", - "pestphp/pest-plugin-mutate": "^4.0.0", - "pestphp/pest-plugin-profanity": "^4.0.0", + "pestphp/pest-plugin-mutate": "^4.0.1", + "pestphp/pest-plugin-profanity": "^4.0.1", "phpunit/phpunit": "^12.3.5", "symfony/process": "^7.3.0" }, @@ -56,8 +56,8 @@ }, "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", - "pestphp/pest-plugin-browser": "^4.0.0", - "pestphp/pest-plugin-type-coverage": "^4.0.1", + "pestphp/pest-plugin-browser": "^4.0.2", + "pestphp/pest-plugin-type-coverage": "^4.0.2", "psy/psysh": "^0.12.10" }, "minimum-stability": "dev", From d5ced0a5cab286f69e02662833f74937cd9c3e94 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 22 Aug 2025 09:24:07 +0100 Subject: [PATCH 095/134] release: 4.0.1 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pest.php b/src/Pest.php index 43ee0bb73..8a6379cf8 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.0'; + return '4.0.1'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index e1362c837..429d18ecd 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.0. + Pest Testing Framework 4.0.1. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 023e4b4dd..61e5f4baf 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.0. + Pest Testing Framework 4.0.1. From 3d776f1f206d9f8a7c1c920ad794257f89503880 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 22 Aug 2025 11:12:55 +0100 Subject: [PATCH 096/134] fix: revert reading coverage by chunks --- overrides/Report/PHP.php | 98 ----------------------------- src/Bootstrappers/BootOverrides.php | 1 - src/Support/Coverage.php | 15 +---- 3 files changed, 3 insertions(+), 111 deletions(-) delete mode 100644 overrides/Report/PHP.php diff --git a/overrides/Report/PHP.php b/overrides/Report/PHP.php deleted file mode 100644 index 0cd7e27bb..000000000 --- a/overrides/Report/PHP.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace SebastianBergmann\CodeCoverage\Report; - -use const PHP_EOL; - -use SebastianBergmann\CodeCoverage\CodeCoverage; -use SebastianBergmann\CodeCoverage\Util\Filesystem; -use SebastianBergmann\CodeCoverage\WriteOperationFailedException; - -use function dirname; -use function serialize; -use function str_contains; - -final class PHP -{ - public function process(CodeCoverage $coverage, ?string $target = null): string - { - $coverage->clearCache(); - - $buffer = "getReport()->percentageOfExecutedLines(); /** @var Directory $report */ From 7f11ace329581ca168f99d9d7f70556c191d2be8 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 22 Aug 2025 11:34:24 +0100 Subject: [PATCH 097/134] release: 4.0.2 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pest.php b/src/Pest.php index 8a6379cf8..87b321345 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.1'; + return '4.0.2'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 429d18ecd..d2dc022c2 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.1. + Pest Testing Framework 4.0.2. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 61e5f4baf..96f93f90b 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.1. + Pest Testing Framework 4.0.2. From 33817013fe51994f804630911958414e5526d504 Mon Sep 17 00:00:00 2001 From: Sandro Gehri Date: Sat, 23 Aug 2025 12:35:32 +0200 Subject: [PATCH 098/134] Prevent duplicate attributes --- src/PendingCalls/TestCall.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/PendingCalls/TestCall.php b/src/PendingCalls/TestCall.php index df84c73d7..a65c8bb58 100644 --- a/src/PendingCalls/TestCall.php +++ b/src/PendingCalls/TestCall.php @@ -759,7 +759,12 @@ public function __destruct() $this->testSuite->tests->set($this->testCaseMethod); if (! is_null($testCase = $this->testSuite->tests->get($this->filename))) { - $testCase->attributes = array_merge($testCase->attributes, $this->testCaseFactoryAttributes); + $attributesToMerge = array_filter( + $this->testCaseFactoryAttributes, + fn (Attribute $attributeToMerge): bool => array_filter($testCase->attributes, fn (Attribute $attribute): bool => serialize($attributeToMerge) === serialize($attribute)) === [] + ); + + $testCase->attributes = array_merge($testCase->attributes, $attributesToMerge); } } } From 7749775f5077696dc08849f575e12c6d58b62938 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 24 Aug 2025 15:17:19 +0100 Subject: [PATCH 099/134] chore: uses phpunit 12.3.6 --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 9574e89f9..80ef937f8 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.0.1", - "phpunit/phpunit": "^12.3.5", + "phpunit/phpunit": "^12.3.6", "symfony/process": "^7.3.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.3.5", + "phpunit/phpunit": ">12.3.6", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, From e54e4a0178889209a928f7bee63286149d4eb707 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 24 Aug 2025 15:17:23 +0100 Subject: [PATCH 100/134] release: 4.0.3 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pest.php b/src/Pest.php index 87b321345..d602eb9de 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.2'; + return '4.0.3'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index d2dc022c2..780b05cce 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.2. + Pest Testing Framework 4.0.3. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 96f93f90b..9cce7d6b0 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.2. + Pest Testing Framework 4.0.3. From 639df4cb43a2f6b15d5b6220b8374a07faf503ce Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Thu, 28 Aug 2025 19:19:32 +0100 Subject: [PATCH 101/134] chore: uses phpunit 12.3.7 --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 80ef937f8..fe5d50abb 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.0.1", - "phpunit/phpunit": "^12.3.6", + "phpunit/phpunit": "^12.3.7", "symfony/process": "^7.3.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.3.6", + "phpunit/phpunit": ">12.3.7", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, From 47fb1d77631d608022cc7af96cac90ac741c8394 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Thu, 28 Aug 2025 19:19:42 +0100 Subject: [PATCH 102/134] release: v4.0.4 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pest.php b/src/Pest.php index d602eb9de..ec07509f5 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.3'; + return '4.0.4'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 780b05cce..3bf95926c 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.3. + Pest Testing Framework 4.0.4. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 9cce7d6b0..eaa5e91b7 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.3. + Pest Testing Framework 4.0.4. From 843dbbf18aa4c654dc518125ff40cbe0f3bc7e37 Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Sun, 31 Aug 2025 23:50:16 +0100 Subject: [PATCH 103/134] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a4a44b0d4..5d3166b33 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ - Explore our docs at **[pestphp.com »](https://pestphp.com)** - Follow the creator Nuno Maduro: - - YouTube: **[youtube.com/@nunomaduro](https://www.youtube.com/@nunomaduro)** — Videos every weekday - - Twitch: **[twitch.tv/enunomaduro](https://www.twitch.tv/enunomaduro)** — Streams (almost) every weekday + - YouTube: **[youtube.com/@nunomaduro](https://youtube.com/@nunomaduro)** — Videos every week + - Twitch: **[twitch.tv/nunomaduro](https://twitch.tv/nunomaduro)** — Live coding on Mondays, Wednesdays, and Fridays at 9PM UTC - Twitter / X: **[x.com/enunomaduro](https://x.com/enunomaduro)** - LinkedIn: **[linkedin.com/in/nunomaduro](https://www.linkedin.com/in/nunomaduro)** - Instagram: **[instagram.com/enunomaduro](https://www.instagram.com/enunomaduro)** From f91c6c1e1e7ec7802293156a0e373da87f387bcc Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Mon, 1 Sep 2025 00:09:31 +0100 Subject: [PATCH 104/134] Update social media links in Thanks.php --- src/Console/Thanks.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Console/Thanks.php b/src/Console/Thanks.php index fc9f558af..8b056e481 100644 --- a/src/Console/Thanks.php +++ b/src/Console/Thanks.php @@ -25,8 +25,8 @@ private const array FUNDING_MESSAGES = [ 'Star' => 'https://github.com/pestphp/pest', 'YouTube' => 'https://youtube.com/@nunomaduro', - 'TikTok' => 'https://tiktok.com/@nunomaduro', - 'Twitch' => 'https://twitch.tv/enunomaduro', + 'TikTok' => 'https://tiktok.com/@enunomaduro', + 'Twitch' => 'https://twitch.tv/nunomaduro', 'LinkedIn' => 'https://linkedin.com/in/nunomaduro', 'Instagram' => 'https://instagram.com/enunomaduro', 'X' => 'https://x.com/enunomaduro', From 65cabf91b144e1f5832c1682770c12878c5f7f98 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 10 Sep 2025 14:40:52 +0100 Subject: [PATCH 105/134] chore: bumps dependencies --- composer.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index fe5d50abb..e05e0d298 100644 --- a/composer.json +++ b/composer.json @@ -18,19 +18,19 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.11.2", + "brianium/paratest": "^7.12.0", "nunomaduro/collision": "^8.8.2", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", - "pestphp/pest-plugin-profanity": "^4.0.1", - "phpunit/phpunit": "^12.3.7", - "symfony/process": "^7.3.0" + "pestphp/pest-plugin-profanity": "^4.1.0", + "phpunit/phpunit": "^12.3.8", + "symfony/process": "^7.3.3" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.3.7", + "phpunit/phpunit": ">12.3.8", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -56,7 +56,7 @@ }, "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", - "pestphp/pest-plugin-browser": "^4.0.2", + "pestphp/pest-plugin-browser": "^4.1.0", "pestphp/pest-plugin-type-coverage": "^4.0.2", "psy/psysh": "^0.12.10" }, From 314caabd1d09d89aad796407e41dfb4be5d7bf7a Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 10 Sep 2025 14:41:02 +0100 Subject: [PATCH 106/134] chore: improves types --- src/Repositories/DatasetsRepository.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Repositories/DatasetsRepository.php b/src/Repositories/DatasetsRepository.php index 3deee5bd5..0c6b13a8d 100644 --- a/src/Repositories/DatasetsRepository.php +++ b/src/Repositories/DatasetsRepository.php @@ -67,11 +67,11 @@ public static function has(string $filename, string $description): bool } /** - * @return Closure|array + * @return array * * @throws ShouldNotHappen */ - public static function get(string $filename, string $description): Closure|array // @phpstan-ignore-line + public static function get(string $filename, string $description): array // @phpstan-ignore-line { $dataset = self::$withs[$filename.self::SEPARATOR.$description]; @@ -191,6 +191,7 @@ private static function getScopedDataset(string $name, string $currentTestFile): return str_starts_with($currentTestFile, $datasetScope); }, ARRAY_FILTER_USE_KEY); + /** @var string|null $closestScopeDatasetKey */ $closestScopeDatasetKey = array_reduce( array_keys($matchingDatasets), fn (string|int|null $keyA, string|int|null $keyB): string|int|null => $keyA !== null && strlen((string) $keyA) > strlen((string) $keyB) ? $keyA : $keyB From b7406938ac9e8d08cf96f031922b0502a8523268 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 10 Sep 2025 14:41:09 +0100 Subject: [PATCH 107/134] release: v4.1.0 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pest.php b/src/Pest.php index ec07509f5..aefc67743 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.0.4'; + return '4.1.0'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 3bf95926c..91b6022f4 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.0.4. + Pest Testing Framework 4.1.0. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index eaa5e91b7..76999ccd2 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.0.4. + Pest Testing Framework 4.1.0. From fc7a4182b516c4508f49dcbfee9e8a0eb06578fb Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Thu, 18 Sep 2025 20:13:01 +0100 Subject: [PATCH 108/134] adjusts sponsors --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5d3166b33..9c83a3a4e 100644 --- a/README.md +++ b/README.md @@ -31,22 +31,24 @@ We cannot thank our sponsors enough for their incredible support in funding Pest ### Platinum Sponsors - **[Laracasts](https://laracasts.com/?ref=pestphp)** +- **[NativePHP](https://nativephp.com/mobile?ref=pestphp.com)** ### Gold Sponsors - **[CodeRabbit](https://coderabbit.ai/?ref=pestphp)** -- **[NativePHP](https://nativephp.com/mobile?ref=pestphp.com)** - **[CMS Max](https://cmsmax.com/?ref=pestphp)** ### Premium Sponsors -- [Akaunting](https://akaunting.com/?ref=pestphp) -- [DocuWriter.ai](https://www.docuwriter.ai/?ref=pestphp) -- [Localazy](https://localazy.com/?ref=pestphp) - [Forge](https://forge.laravel.com/?ref=pestphp) -- [Route4Me](https://www.route4me.com/?ref=pestphp) -- [Spatie](https://spatie.be/?ref=pestphp) -- [Worksome](https://www.worksome.com/?ref=pestphp) - [Zapiet](https://www.zapiet.com/?ref=pestphp) +- [Localazy](https://localazy.com/?ref=pestphp) +- [Load Forge](https://loadforge.com/?ref=pestphp) +- [DocuWriter.ai](https://www.docuwriter.ai/?ref=pestphp) +- [Route4Me](https://www.route4me.com/?ref=pestphp) +- [Devtools for Livewire](https://devtools-for-livewire.com/?ref=pestphp) +- [Nerdify](https://www.getnerdify.com/?ref=pestphp) +- [Akaunting](https://akaunting.com/?ref=pestphp) +- [LambdaTest](https://lambdatest.com/?ref=pestphp) Pest is an open-sourced software licensed under the **[MIT license](https://opensource.org/licenses/MIT)**. From 8e3444e1db7a6bd06b7f3683c3d82db77406357b Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 1 Oct 2025 14:30:25 +0100 Subject: [PATCH 109/134] chore: bumps requirements --- composer.json | 6 +++--- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index e05e0d298..8314b10af 100644 --- a/composer.json +++ b/composer.json @@ -18,19 +18,19 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.12.0", + "brianium/paratest": "^7.14.0", "nunomaduro/collision": "^8.8.2", "nunomaduro/termwind": "^2.3.1", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.1.0", - "phpunit/phpunit": "^12.3.8", + "phpunit/phpunit": "^12.3.15", "symfony/process": "^7.3.3" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.3.8", + "phpunit/phpunit": ">12.3.15", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, diff --git a/src/Pest.php b/src/Pest.php index aefc67743..0e70ad028 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.1.0'; + return '4.1.1'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 91b6022f4..40b52497e 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.1.0. + Pest Testing Framework 4.1.1. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 76999ccd2..7f61d8852 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.1.0. + Pest Testing Framework 4.1.1. From b0fab7e437b108ebdd634d152fe42895beed7a22 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 5 Oct 2025 20:09:42 +0100 Subject: [PATCH 110/134] chore: uses `phpunit@12.4` --- composer.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 8314b10af..9a70aaf24 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.1.0", - "phpunit/phpunit": "^12.3.15", - "symfony/process": "^7.3.3" + "phpunit/phpunit": "^12.4.0", + "symfony/process": "^7.3.4" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.3.15", + "phpunit/phpunit": ">12.4.0", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -56,9 +56,9 @@ }, "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", - "pestphp/pest-plugin-browser": "^4.1.0", + "pestphp/pest-plugin-browser": "^4.1.1", "pestphp/pest-plugin-type-coverage": "^4.0.2", - "psy/psysh": "^0.12.10" + "psy/psysh": "^0.12.12" }, "minimum-stability": "dev", "prefer-stable": true, From 08b09f2e98fc6830050c0237968b233768642d46 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 5 Oct 2025 20:09:49 +0100 Subject: [PATCH 111/134] release: 4.1.2 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pest.php b/src/Pest.php index 0e70ad028..d4b8b762c 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.1.1'; + return '4.1.2'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 40b52497e..bd4a80324 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.1.1. + Pest Testing Framework 4.1.2. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 7f61d8852..0ab93e305 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.1.1. + Pest Testing Framework 4.1.2. From 4105e33c39a51a03693d04f56fd262accbdca5a0 Mon Sep 17 00:00:00 2001 From: Yury Kudryavtsev Date: Tue, 21 Oct 2025 11:44:55 +0300 Subject: [PATCH 112/134] Fix Undefined array key "testdox-columns" warning Fix Undefined array key "testdox-columns" warning --- bin/worker.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/worker.php b/bin/worker.php index b65c91f01..dc69d67e3 100644 --- a/bin/worker.php +++ b/bin/worker.php @@ -86,7 +86,7 @@ $getopt['teamcity-file'] ?? null, $getopt['testdox-file'] ?? null, isset($getopt['testdox-color']), - (int) $getopt['testdox-columns'] ?? null, + (int) ($getopt['testdox-columns'] ?? null), ); while (true) { From b7b16096dbd8d4e2cbf15d87d3a6a96e3f54b4b0 Mon Sep 17 00:00:00 2001 From: Hans van Luttikhuizen-Ross Date: Wed, 29 Oct 2025 11:13:50 +0100 Subject: [PATCH 113/134] Specify closure this for extend --- src/Concerns/Extendable.php | 4 ++++ src/Expectation.php | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/Concerns/Extendable.php b/src/Concerns/Extendable.php index a2f7e40b7..1ff6626b9 100644 --- a/src/Concerns/Extendable.php +++ b/src/Concerns/Extendable.php @@ -8,6 +8,8 @@ /** * @internal + * + * @template T of object */ trait Extendable { @@ -20,6 +22,8 @@ trait Extendable /** * Register a new extend. + * + * @param-closure-this T $extend */ public function extend(string $name, Closure $extend): void { diff --git a/src/Expectation.php b/src/Expectation.php index 5c8a076b7..5182b4be8 100644 --- a/src/Expectation.php +++ b/src/Expectation.php @@ -52,7 +52,9 @@ */ final class Expectation { + /** @use Extendable> */ use Extendable; + use Pipeable; use Retrievable; From 477d20a54fd9329ddfb0f8d4eb90dca7bc81b027 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 29 Oct 2025 22:45:27 +0000 Subject: [PATCH 114/134] release: 4.1.3 --- composer.json | 4 ++-- rector.php | 2 ++ src/Bootstrappers/BootFiles.php | 2 +- src/Expectation.php | 2 +- src/Kernel.php | 2 +- src/Logging/Converter.php | 2 +- src/Pest.php | 2 +- src/Support/HigherOrderTapProxy.php | 4 +--- tests-external/Features/Expect/toMatchSnapshot.php | 4 ++-- ...th_dataset_with_data_set____my_datas_set_value___.snap" | 0 ...th_dataset_with_data_set____my_datas_set_value___.snap} | 0 ...th_dataset_with_data_set____my_datas_set_value___.snap" | 7 +++++++ ...ot_expectations_with_datasets_with_data_set___1__.snap} | 0 ...expectations_with_datasets_with_data_set___1____2.snap} | 0 ...xpectations_with_datasets_with_data_set____bar___.snap} | 0 ...ctations_with_datasets_with_data_set____bar_____2.snap} | 0 ...xpectations_with_datasets_with_data_set____baz___.snap} | 0 ...ctations_with_datasets_with_data_set____baz_____2.snap} | 0 ...xpectations_with_datasets_with_data_set____foo___.snap} | 0 ...ctations_with_datasets_with_data_set____foo_____2.snap} | 0 ...hot_expectations_with_repeat_with_data_set___10__.snap} | 0 ..._expectations_with_repeat_with_data_set___10____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___1__.snap} | 0 ...t_expectations_with_repeat_with_data_set___1____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___2__.snap} | 0 ...t_expectations_with_repeat_with_data_set___2____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___3__.snap} | 0 ...t_expectations_with_repeat_with_data_set___3____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___4__.snap} | 0 ...t_expectations_with_repeat_with_data_set___4____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___5__.snap} | 0 ...t_expectations_with_repeat_with_data_set___5____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___6__.snap} | 0 ...t_expectations_with_repeat_with_data_set___6____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___7__.snap} | 0 ...t_expectations_with_repeat_with_data_set___7____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___8__.snap} | 0 ...t_expectations_with_repeat_with_data_set___8____2.snap} | 0 ...shot_expectations_with_repeat_with_data_set___9__.snap} | 0 ...t_expectations_with_repeat_with_data_set___9____2.snap} | 0 ...ith_dataset_with_data_set____my_datas_set_value___.snap | 7 +++++++ ...________.snap => collision_with_data_set_________.snap} | 0 .../Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- tests/.snapshots/SuccessOnly.php.inc | 4 ++-- tests/Features/Expect/toMatchSnapshot.php | 4 ++-- 46 files changed, 32 insertions(+), 18 deletions(-) rename "tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" => "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value___.snap" (100%) rename tests/.pest/{snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap => snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value___.snap} (100%) create mode 100644 "tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value___.snap" rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____1__.snap => multiple_snapshot_expectations_with_datasets_with_data_set___1__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set____1____2.snap => multiple_snapshot_expectations_with_datasets_with_data_set___1____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set_____bar___.snap => multiple_snapshot_expectations_with_datasets_with_data_set____bar___.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set_____bar_____2.snap => multiple_snapshot_expectations_with_datasets_with_data_set____bar_____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set_____baz___.snap => multiple_snapshot_expectations_with_datasets_with_data_set____baz___.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set_____baz_____2.snap => multiple_snapshot_expectations_with_datasets_with_data_set____baz_____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set_____foo___.snap => multiple_snapshot_expectations_with_datasets_with_data_set____foo___.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_datasets_with_data_set_____foo_____2.snap => multiple_snapshot_expectations_with_datasets_with_data_set____foo_____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____10__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___10__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____10____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___10____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____1__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___1__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____1____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___1____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____2__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___2__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____2____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___2____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____3__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___3__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____3____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___3____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____4__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___4__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____4____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___4____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____5__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___5__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____5____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___5____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____6__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___6__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____6____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___6____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____7__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___7__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____7____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___7____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____8__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___8__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____8____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___8____2.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____9__.snap => multiple_snapshot_expectations_with_repeat_with_data_set___9__.snap} (100%) rename tests/.pest/snapshots/Features/Expect/toMatchSnapshot/{multiple_snapshot_expectations_with_repeat_with_data_set____9____2.snap => multiple_snapshot_expectations_with_repeat_with_data_set___9____2.snap} (100%) create mode 100644 tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value___.snap rename tests/.pest/snapshots/Visual/Collision/{collision_with_data_set__________.snap => collision_with_data_set_________.snap} (100%) diff --git a/composer.json b/composer.json index 9a70aaf24..5859b3784 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.1.0", - "phpunit/phpunit": "^12.4.0", + "phpunit/phpunit": "^12.4.1", "symfony/process": "^7.3.4" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.4.0", + "phpunit/phpunit": ">12.4.1", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, diff --git a/rector.php b/rector.php index 191989dbb..49c56f8a6 100644 --- a/rector.php +++ b/rector.php @@ -2,6 +2,7 @@ declare(strict_types=1); +use Rector\CodingStyle\Rector\FunctionLike\FunctionLikeToFirstClassCallableRector; use Rector\Config\RectorConfig; use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector; @@ -12,6 +13,7 @@ ->withSkip([ __DIR__.'/src/Plugins/Parallel/Paratest/WrapperRunner.php', ReturnNeverTypeRector::class, + FunctionLikeToFirstClassCallableRector::class, ]) ->withPreparedSets( deadCode: true, diff --git a/src/Bootstrappers/BootFiles.php b/src/Bootstrappers/BootFiles.php index 741213b2f..2f162eecb 100644 --- a/src/Bootstrappers/BootFiles.php +++ b/src/Bootstrappers/BootFiles.php @@ -83,7 +83,7 @@ private function load(string $filename): void private function bootDatasets(string $testsPath): void { - assert(strlen($testsPath) > 0); + assert($testsPath !== ''); $files = (new PhpUnitFileIterator)->getFilesAsArray($testsPath, '.php'); diff --git a/src/Expectation.php b/src/Expectation.php index 5c8a076b7..8091ad822 100644 --- a/src/Expectation.php +++ b/src/Expectation.php @@ -397,7 +397,7 @@ private function getExpectationClosure(string $name): Closure * * @return Expectation|OppositeExpectation|EachExpectation|HigherOrderExpectation, TValue|null>|TValue */ - public function __get(string $name) + public function __get(string $name): mixed { if (! self::hasMethod($name)) { if (! is_object($this->value) && method_exists(PendingArchExpectation::class, $name)) { diff --git a/src/Kernel.php b/src/Kernel.php index 927169138..55b9e7a43 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -71,7 +71,7 @@ public static function boot(TestSuite $testSuite, InputInterface $input, OutputI $output, ); - register_shutdown_function(fn () => $kernel->shutdown()); + register_shutdown_function($kernel->shutdown(...)); foreach (self::BOOTSTRAPPERS as $bootstrapper) { $bootstrapper = Container::getInstance()->get($bootstrapper); diff --git a/src/Logging/Converter.php b/src/Logging/Converter.php index 4805a9463..50a42d1ac 100644 --- a/src/Logging/Converter.php +++ b/src/Logging/Converter.php @@ -131,7 +131,7 @@ public function getStackTrace(Throwable $throwable): string // clean the paths of each frame. $frames = array_map( - fn (string $frame): string => $this->toRelativePath($frame), + $this->toRelativePath(...), $frames ); diff --git a/src/Pest.php b/src/Pest.php index d4b8b762c..fa581af49 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.1.2'; + return '4.1.3'; } function testDirectory(string $file = ''): string diff --git a/src/Support/HigherOrderTapProxy.php b/src/Support/HigherOrderTapProxy.php index 08eb5ea77..60e65bac9 100644 --- a/src/Support/HigherOrderTapProxy.php +++ b/src/Support/HigherOrderTapProxy.php @@ -31,10 +31,8 @@ public function __set(string $property, mixed $value): void /** * Dynamically pass properties gets to the target. - * - * @return mixed */ - public function __get(string $property) + public function __get(string $property): mixed { if (property_exists($this->target, $property)) { return $this->target->{$property}; diff --git a/tests-external/Features/Expect/toMatchSnapshot.php b/tests-external/Features/Expect/toMatchSnapshot.php index 2b5fa473a..412ed8ef6 100644 --- a/tests-external/Features/Expect/toMatchSnapshot.php +++ b/tests-external/Features/Expect/toMatchSnapshot.php @@ -19,7 +19,7 @@ [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots-external/') - ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); })->with(['my-datas-set-value']); @@ -29,7 +29,7 @@ [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots-external/') - ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); }); })->with(['my-datas-set-value']); diff --git "a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" "b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value___.snap" similarity index 100% rename from "tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set_____my_datas_set_value___.snap" rename to "tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value___.snap" diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap b/tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set_____my_datas_set_value___.snap rename to tests/.pest/snapshots-external/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value___.snap diff --git "a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value___.snap" "b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value___.snap" new file mode 100644 index 000000000..c2b4dc0a1 --- /dev/null +++ "b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/_within_describe__\342\206\222_pass_with_dataset_with_data_set____my_datas_set_value___.snap" @@ -0,0 +1,7 @@ +

+
+
+

Snapshot

+
+
+
\ No newline at end of file diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____1____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set___1____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar___.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar___.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar___.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar_____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar_____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____bar_____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____bar_____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz___.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz___.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz___.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz_____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz_____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____baz_____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____baz_____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo___.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo___.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo___.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo___.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo_____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo_____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set_____foo_____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_datasets_with_data_set____foo_____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____10____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___10____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____1____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___1____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____2____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___2____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____3____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___3____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____4____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___4____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____5____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___5____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____6____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___6____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____7____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___7____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____8____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___8____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9__.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9__.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9__.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9__.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9____2.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9____2.snap similarity index 100% rename from tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set____9____2.snap rename to tests/.pest/snapshots/Features/Expect/toMatchSnapshot/multiple_snapshot_expectations_with_repeat_with_data_set___9____2.snap diff --git a/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value___.snap b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value___.snap new file mode 100644 index 000000000..c2b4dc0a1 --- /dev/null +++ b/tests/.pest/snapshots/Features/Expect/toMatchSnapshot/pass_with_dataset_with_data_set____my_datas_set_value___.snap @@ -0,0 +1,7 @@ +
+
+
+

Snapshot

+
+
+
\ No newline at end of file diff --git a/tests/.pest/snapshots/Visual/Collision/collision_with_data_set__________.snap b/tests/.pest/snapshots/Visual/Collision/collision_with_data_set_________.snap similarity index 100% rename from tests/.pest/snapshots/Visual/Collision/collision_with_data_set__________.snap rename to tests/.pest/snapshots/Visual/Collision/collision_with_data_set_________.snap diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index bd4a80324..63f4714c1 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.1.2. + Pest Testing Framework 4.1.3. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 0ab93e305..8bafa6cea 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.1.2. + Pest Testing Framework 4.1.3. diff --git a/tests/.snapshots/SuccessOnly.php.inc b/tests/.snapshots/SuccessOnly.php.inc index dd4d960f4..b00a0e36c 100644 --- a/tests/.snapshots/SuccessOnly.php.inc +++ b/tests/.snapshots/SuccessOnly.php.inc @@ -5,8 +5,8 @@ ##teamcity[testStarted name='can also pass' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can also pass' flowId='1234'] ##teamcity[testFinished name='can also pass' duration='100000' flowId='1234'] ##teamcity[testSuiteStarted name='can pass with dataset' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can pass with dataset' flowId='1234'] -##teamcity[testStarted name='can pass with dataset with data set "@(true)"' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can pass with dataset with data set "@(true)"' flowId='1234'] -##teamcity[testFinished name='can pass with dataset with data set "@(true)"' duration='100000' flowId='1234'] +##teamcity[testStarted name='can pass with dataset with data set "(true)"' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can pass with dataset with data set "(true)"' flowId='1234'] +##teamcity[testFinished name='can pass with dataset with data set "(true)"' duration='100000' flowId='1234'] ##teamcity[testSuiteFinished name='can pass with dataset' flowId='1234'] ##teamcity[testSuiteFinished name='Tests/tests/SuccessOnly' flowId='1234'] diff --git a/tests/Features/Expect/toMatchSnapshot.php b/tests/Features/Expect/toMatchSnapshot.php index 664887297..0c09be936 100644 --- a/tests/Features/Expect/toMatchSnapshot.php +++ b/tests/Features/Expect/toMatchSnapshot.php @@ -75,7 +75,7 @@ public function toString() [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots/') - ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); })->with(['my-datas-set-value']); @@ -85,7 +85,7 @@ public function toString() [$filename] = TestSuite::getInstance()->snapshots->get(); expect($filename)->toStartWith('tests/.pest/snapshots/') - ->toEndWith('pass_with_dataset_with_data_set_____my_datas_set_value___.snap') + ->toEndWith('pass_with_dataset_with_data_set____my_datas_set_value___.snap') ->and($this->snapshotable)->toMatchSnapshot(); }); })->with(['my-datas-set-value']); From 1a39826935b730b0bcad805013d4b2607b83fe3f Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Thu, 20 Nov 2025 02:59:27 +0000 Subject: [PATCH 115/134] ci: tests against php 8.5 --- .github/workflows/tests.yml | 2 +- rector.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bbc468ab3..7f8431306 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -14,7 +14,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest] # windows-latest symfony: ['7.3'] - php: ['8.3', '8.4'] + php: ['8.3', '8.4', '8.5'] dependency_version: [prefer-stable] name: PHP ${{ matrix.php }} - Symfony ^${{ matrix.symfony }} - ${{ matrix.os }} - ${{ matrix.dependency_version }} diff --git a/rector.php b/rector.php index 49c56f8a6..3ec9fb235 100644 --- a/rector.php +++ b/rector.php @@ -4,6 +4,7 @@ use Rector\CodingStyle\Rector\FunctionLike\FunctionLikeToFirstClassCallableRector; use Rector\Config\RectorConfig; +use Rector\TypeDeclaration\Rector\ClassMethod\NarrowObjectReturnTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector; return RectorConfig::configure() @@ -14,6 +15,7 @@ __DIR__.'/src/Plugins/Parallel/Paratest/WrapperRunner.php', ReturnNeverTypeRector::class, FunctionLikeToFirstClassCallableRector::class, + NarrowObjectReturnTypeRector::class, ]) ->withPreparedSets( deadCode: true, From 51340439e8bda6245bd883716ba97eecfdc3d91e Mon Sep 17 00:00:00 2001 From: Christopher Georg Date: Sat, 22 Nov 2025 12:12:15 +0100 Subject: [PATCH 116/134] ci: bump actions/checkout 4 => 5 --- .github/workflows/static.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 5b9b0df5e..ee71d41f4 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7f8431306..3879145c5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Setup PHP uses: shivammathur/setup-php@v2 From 41fd8311539642c49765345f87001ef25640a862 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 24 Nov 2025 10:25:45 +0000 Subject: [PATCH 117/134] release: 4.1.4 --- composer.json | 16 ++++++++-------- src/Pest.php | 2 +- .../visual_snapshot_of_help_command_output.snap | 2 +- .../visual_snapshot_of_help_command_output.snap | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index 5859b3784..d6dfa44f0 100644 --- a/composer.json +++ b/composer.json @@ -18,19 +18,19 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.14.0", - "nunomaduro/collision": "^8.8.2", - "nunomaduro/termwind": "^2.3.1", + "brianium/paratest": "^7.14.2", + "nunomaduro/collision": "^8.8.3", + "nunomaduro/termwind": "^2.3.3", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", - "pestphp/pest-plugin-profanity": "^4.1.0", - "phpunit/phpunit": "^12.4.1", + "pestphp/pest-plugin-profanity": "^4.2.0", + "phpunit/phpunit": "^12.4.4", "symfony/process": "^7.3.4" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.4.1", + "phpunit/phpunit": ">12.4.4", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -57,8 +57,8 @@ "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.1.1", - "pestphp/pest-plugin-type-coverage": "^4.0.2", - "psy/psysh": "^0.12.12" + "pestphp/pest-plugin-type-coverage": "^4.0.3", + "psy/psysh": "^0.12.14" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/src/Pest.php b/src/Pest.php index fa581af49..a14f7b497 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.1.3'; + return '4.1.4'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 63f4714c1..7afe504b8 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.1.3. + Pest Testing Framework 4.1.4. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 8bafa6cea..67cab9187 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.1.3. + Pest Testing Framework 4.1.4. From f5820bd670fd65bad363d21a6171597481f34ec3 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 24 Nov 2025 12:46:38 +0000 Subject: [PATCH 118/134] release: 4.1.5 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Pest.php b/src/Pest.php index a14f7b497..6cd707293 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.1.4'; + return '4.1.5'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 7afe504b8..4d83f2c5f 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.1.4. + Pest Testing Framework 4.1.5. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 67cab9187..263ca5523 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.1.4. + Pest Testing Framework 4.1.5. From ae419afd363299c29ad5b17e8b70d118b1068bb4 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Fri, 28 Nov 2025 12:04:48 +0000 Subject: [PATCH 119/134] chore: support for symfony 8.0.0 components --- composer.json | 4 ++-- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index d6dfa44f0..ddc8aeef4 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,7 @@ "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.0", "phpunit/phpunit": "^12.4.4", - "symfony/process": "^7.3.4" + "symfony/process": "^7.4.0|^8.0.0" }, "conflict": { "filp/whoops": "<2.18.3", @@ -58,7 +58,7 @@ "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.1.1", "pestphp/pest-plugin-type-coverage": "^4.0.3", - "psy/psysh": "^0.12.14" + "psy/psysh": "^0.12.15" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/src/Pest.php b/src/Pest.php index 6cd707293..87c9c7d09 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.1.5'; + return '4.1.6'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 4d83f2c5f..ce4d6375e 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.1.5. + Pest Testing Framework 4.1.6. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 263ca5523..5963ed17c 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.1.5. + Pest Testing Framework 4.1.6. From b4172e2c2e7b9aad29443b7ba20706ad66f1c029 Mon Sep 17 00:00:00 2001 From: Jack Bayliss Date: Wed, 10 Dec 2025 14:08:06 +0000 Subject: [PATCH 120/134] bump checkout version from 5 to 6 --- .github/workflows/static.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index ee71d41f4..5cce40fc6 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3879145c5..68d070dad 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Setup PHP uses: shivammathur/setup-php@v2 From b1c997a869fa789c36bb3b47188efff33762ea17 Mon Sep 17 00:00:00 2001 From: Owen Voke Date: Fri, 12 Dec 2025 11:54:01 +0000 Subject: [PATCH 121/134] feat: show more useful exception when `intl` extension not found --- src/Expectations/OppositeExpectation.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Expectations/OppositeExpectation.php b/src/Expectations/OppositeExpectation.php index eec50c63d..2713c7244 100644 --- a/src/Expectations/OppositeExpectation.php +++ b/src/Expectations/OppositeExpectation.php @@ -15,6 +15,7 @@ use Pest\Arch\SingleArchExpectation; use Pest\Arch\Support\FileLineFinder; use Pest\Exceptions\InvalidExpectation; +use Pest\Exceptions\MissingDependency; use Pest\Expectation; use Pest\Support\Arr; use Pest\Support\Exporter; @@ -284,6 +285,10 @@ public function toHaveMethod(array|string $method): ArchExpectation */ public function toHaveSuspiciousCharacters(): ArchExpectation { + if (! class_exists(Spoofchecker::class)) { + throw new MissingDependency(__FUNCTION__, 'ext-intl >= 2.0'); + } + $checker = new Spoofchecker; /** @var Expectation|string> $original */ From 6a96aed654fa139348751f6932acb6d20a2fb94d Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 15 Dec 2025 11:48:43 +0000 Subject: [PATCH 122/134] feat: adds `phpunit@12.5` support --- composer.json | 10 +++++----- rector.php | 4 ++-- src/Pest.php | 2 +- src/Plugins/Help.php | 1 + .../Help/visual_snapshot_of_help_command_output.snap | 4 +++- .../visual_snapshot_of_help_command_output.snap | 2 +- tests/Visual/Parallel.php | 2 +- 7 files changed, 14 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index ddc8aeef4..e2514f059 100644 --- a/composer.json +++ b/composer.json @@ -18,19 +18,19 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.14.2", + "brianium/paratest": "^7.16.0", "nunomaduro/collision": "^8.8.3", "nunomaduro/termwind": "^2.3.3", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", - "pestphp/pest-plugin-profanity": "^4.2.0", - "phpunit/phpunit": "^12.4.4", + "pestphp/pest-plugin-profanity": "^4.2.1", + "phpunit/phpunit": "^12.5.3", "symfony/process": "^7.4.0|^8.0.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.4.4", + "phpunit/phpunit": ">12.5.3", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -58,7 +58,7 @@ "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.1.1", "pestphp/pest-plugin-type-coverage": "^4.0.3", - "psy/psysh": "^0.12.15" + "psy/psysh": "^0.12.17" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/rector.php b/rector.php index 3ec9fb235..de4609550 100644 --- a/rector.php +++ b/rector.php @@ -2,10 +2,10 @@ declare(strict_types=1); -use Rector\CodingStyle\Rector\FunctionLike\FunctionLikeToFirstClassCallableRector; use Rector\Config\RectorConfig; use Rector\TypeDeclaration\Rector\ClassMethod\NarrowObjectReturnTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector; +use Rector\CodingStyle\Rector\ArrowFunction\ArrowFunctionDelegatingCallToFirstClassCallableRector; return RectorConfig::configure() ->withPaths([ @@ -14,7 +14,7 @@ ->withSkip([ __DIR__.'/src/Plugins/Parallel/Paratest/WrapperRunner.php', ReturnNeverTypeRector::class, - FunctionLikeToFirstClassCallableRector::class, + ArrowFunctionDelegatingCallToFirstClassCallableRector::class, NarrowObjectReturnTypeRector::class, ]) ->withPreparedSets( diff --git a/src/Pest.php b/src/Pest.php index 87c9c7d09..be8e6d713 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.1.6'; + return '4.2.0'; } function testDirectory(string $file = ''): string diff --git a/src/Plugins/Help.php b/src/Plugins/Help.php index 89a47b66e..049d119e3 100644 --- a/src/Plugins/Help.php +++ b/src/Plugins/Help.php @@ -99,6 +99,7 @@ private function getContent(): array { $helpReflection = new PHPUnitHelp; + // @phpstan-ignore-next-line $content = (fn (): array => $this->elements())->call($helpReflection); $content['Configuration'] = [...[[ diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index ce4d6375e..54d75c94a 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.1.6. + Pest Testing Framework 4.2.0. USAGE: pest [options] @@ -27,6 +27,7 @@ --pr .... Output to standard output tests with the given pull request number --pull-request Output to standard output tests with the given pull request number (alias for --pr) --retry Run non-passing tests first and stop execution upon first error or failure + --all .................... Ignore test selection from XML configuration file --list-suites ................................... List available test suites --testsuite [name] ......... Only run tests from the specified test suite(s) --exclude-testsuite [name] .. Exclude tests from the specified test suite(s) @@ -138,6 +139,7 @@ --only-summary-for-coverage-text Option for code coverage report in text format: only show summary --show-uncovered-for-coverage-text Option for code coverage report in text format: show uncovered files --coverage-xml [dir] . Write code coverage report in XML format to directory + --exclude-source-from-xml-coverage Exclude [source] element from code coverage report in XML format --warm-coverage-cache ........................... Warm static analysis cache --coverage-filter [dir] ........... Include [dir] in code coverage reporting --path-coverage .......... Report path coverage in addition to line coverage diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 5963ed17c..74ee35dc8 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.1.6. + Pest Testing Framework 4.2.0. diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index f70c2826b..93d2059d5 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1178 passed (2790 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1177 passed (2790 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From 62694c14b9c39b21d02c6102919cf0b638e06bf9 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Mon, 15 Dec 2025 11:54:12 +0000 Subject: [PATCH 123/134] chore: style --- rector.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rector.php b/rector.php index de4609550..193407f6d 100644 --- a/rector.php +++ b/rector.php @@ -2,10 +2,10 @@ declare(strict_types=1); +use Rector\CodingStyle\Rector\ArrowFunction\ArrowFunctionDelegatingCallToFirstClassCallableRector; use Rector\Config\RectorConfig; use Rector\TypeDeclaration\Rector\ClassMethod\NarrowObjectReturnTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector; -use Rector\CodingStyle\Rector\ArrowFunction\ArrowFunctionDelegatingCallToFirstClassCallableRector; return RectorConfig::configure() ->withPaths([ From 44e315df986d6e49f5aa4525935721943af0ac70 Mon Sep 17 00:00:00 2001 From: leo Date: Mon, 22 Dec 2025 11:02:28 +0100 Subject: [PATCH 124/134] feat: add --dirty documentation in --help --- src/Plugins/Help.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Plugins/Help.php b/src/Plugins/Help.php index 049d119e3..096f2914e 100644 --- a/src/Plugins/Help.php +++ b/src/Plugins/Help.php @@ -142,6 +142,9 @@ private function getContent(): array ], [ 'arg' => '--retry', 'desc' => 'Run non-passing tests first and stop execution upon first error or failure', + ], [ + 'arg' => '--dirty', + 'desc' => 'Only run tests that have uncommitted changes according to Git', ], ...$content['Selection']]; $content['Reporting'] = [...$content['Reporting'], ...[ From be90610f1784ea19ffaa508be4a62d00f8de8362 Mon Sep 17 00:00:00 2001 From: Willem-Jaap Date: Tue, 30 Dec 2025 09:24:05 +0100 Subject: [PATCH 125/134] feat: add pest only function to mark each test in a file as only --- src/Configuration.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Configuration.php b/src/Configuration.php index fb4f45a4b..4ca74d389 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -4,6 +4,7 @@ namespace Pest; +use Pest\PendingCalls\BeforeEachCall; use Pest\PendingCalls\UsesCall; /** @@ -24,7 +25,7 @@ public function __construct( string $filename, ) { - $this->filename = str_ends_with($filename, DIRECTORY_SEPARATOR.'Pest.php') ? dirname($filename) : $filename; + $this->filename = str_ends_with($filename, DIRECTORY_SEPARATOR . 'Pest.php') ? dirname($filename) : $filename; } /** @@ -62,6 +63,14 @@ public function group(string ...$groups): UsesCall return (new UsesCall($this->filename, []))->group(...$groups); } + /** + * Marks all tests in the current file to be run exclusively. + */ + public function only(): void + { + (new BeforeEachCall(TestSuite::getInstance(), $this->filename))->only(); + } + /** * Depending on where is called, it will extend the given classes and traits globally or locally. */ From c157b661f2668e456105b6ebf8cc657da98e33bf Mon Sep 17 00:00:00 2001 From: Willem-Jaap Date: Tue, 30 Dec 2025 09:26:35 +0100 Subject: [PATCH 126/134] style: format --- src/Configuration.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Configuration.php b/src/Configuration.php index 4ca74d389..4261f3ef3 100644 --- a/src/Configuration.php +++ b/src/Configuration.php @@ -25,7 +25,7 @@ public function __construct( string $filename, ) { - $this->filename = str_ends_with($filename, DIRECTORY_SEPARATOR . 'Pest.php') ? dirname($filename) : $filename; + $this->filename = str_ends_with($filename, DIRECTORY_SEPARATOR.'Pest.php') ? dirname($filename) : $filename; } /** From e86bec3e68f1874c112ca782fb9db1333f3fe7ab Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Tue, 30 Dec 2025 14:48:33 -0500 Subject: [PATCH 127/134] release: 4.3.0 --- composer.json | 6 +++--- rector.php | 2 ++ src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 3 ++- .../Version/visual_snapshot_of_help_command_output.snap | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index e2514f059..985e56305 100644 --- a/composer.json +++ b/composer.json @@ -25,12 +25,12 @@ "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.1", - "phpunit/phpunit": "^12.5.3", + "phpunit/phpunit": "^12.5.4", "symfony/process": "^7.4.0|^8.0.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.5.3", + "phpunit/phpunit": ">12.5.4", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -58,7 +58,7 @@ "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.1.1", "pestphp/pest-plugin-type-coverage": "^4.0.3", - "psy/psysh": "^0.12.17" + "psy/psysh": "^0.12.18" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/rector.php b/rector.php index 193407f6d..caec31883 100644 --- a/rector.php +++ b/rector.php @@ -4,6 +4,7 @@ use Rector\CodingStyle\Rector\ArrowFunction\ArrowFunctionDelegatingCallToFirstClassCallableRector; use Rector\Config\RectorConfig; +use Rector\DeadCode\Rector\ClassMethod\RemoveParentDelegatingConstructorRector; use Rector\TypeDeclaration\Rector\ClassMethod\NarrowObjectReturnTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector; @@ -16,6 +17,7 @@ ReturnNeverTypeRector::class, ArrowFunctionDelegatingCallToFirstClassCallableRector::class, NarrowObjectReturnTypeRector::class, + RemoveParentDelegatingConstructorRector::class, ]) ->withPreparedSets( deadCode: true, diff --git a/src/Pest.php b/src/Pest.php index be8e6d713..6c177561d 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.2.0'; + return '4.3.0'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 54d75c94a..53508b512 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.2.0. + Pest Testing Framework 4.3.0. USAGE: pest [options] @@ -27,6 +27,7 @@ --pr .... Output to standard output tests with the given pull request number --pull-request Output to standard output tests with the given pull request number (alias for --pr) --retry Run non-passing tests first and stop execution upon first error or failure + --dirty ...... Only run tests that have uncommitted changes according to Git --all .................... Ignore test selection from XML configuration file --list-suites ................................... List available test suites --testsuite [name] ......... Only run tests from the specified test suite(s) diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 74ee35dc8..523376c61 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.2.0. + Pest Testing Framework 4.3.0. From 9fe61e0e561119885f5738de2a475a2e395edbec Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Sat, 3 Jan 2026 18:07:02 -0500 Subject: [PATCH 128/134] docs: update sponsors Removed and updated sponsor links in the README. --- README.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9c83a3a4e..67ba78d42 100644 --- a/README.md +++ b/README.md @@ -30,24 +30,22 @@ We cannot thank our sponsors enough for their incredible support in funding Pest ### Platinum Sponsors -- **[Laracasts](https://laracasts.com/?ref=pestphp)** -- **[NativePHP](https://nativephp.com/mobile?ref=pestphp.com)** +- **[CodeRabbit](https://coderabbit.ai/?ref=pestphp)** +- **[Devin](https://devin.ai/?ref=nunomaduro)** +- **[Mailtrap](https://l.rw.rw/pestphp)** +- **[Tighten](https://tighten.com/?ref=nunomaduro)** +- **[Redberry](https://redberry.international/laravel-development/?utm_source=pest&utm_medium=banner&utm_campaign=pest_sponsorship)** ### Gold Sponsors -- **[CodeRabbit](https://coderabbit.ai/?ref=pestphp)** - **[CMS Max](https://cmsmax.com/?ref=pestphp)** ### Premium Sponsors -- [Forge](https://forge.laravel.com/?ref=pestphp) -- [Zapiet](https://www.zapiet.com/?ref=pestphp) -- [Localazy](https://localazy.com/?ref=pestphp) +- [Zapiet](https://zapiet.com/?ref=pestphp) - [Load Forge](https://loadforge.com/?ref=pestphp) -- [DocuWriter.ai](https://www.docuwriter.ai/?ref=pestphp) -- [Route4Me](https://www.route4me.com/?ref=pestphp) -- [Devtools for Livewire](https://devtools-for-livewire.com/?ref=pestphp) -- [Nerdify](https://www.getnerdify.com/?ref=pestphp) +- [Route4Me](https://route4me.com/pt?ref=pestphp) +- [Nerdify](https://getnerdify.com/?ref=pestphp) - [Akaunting](https://akaunting.com/?ref=pestphp) - [LambdaTest](https://lambdatest.com/?ref=pestphp) From 3a566b100ed584842b622266766b4d38d897341e Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Sun, 4 Jan 2026 11:04:03 -0500 Subject: [PATCH 129/134] docs: why php --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 67ba78d42..ed0020c0c 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Total Downloads Latest Version License + Why PHP in 2026

From bc39830d8ae536d01644fa012279855eeaa5943b Mon Sep 17 00:00:00 2001 From: nuno maduro Date: Sun, 4 Jan 2026 11:25:57 -0500 Subject: [PATCH 130/134] chore: removes `toHaveSuspiciousCharacters` from php preset --- src/ArchPresets/Php.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/ArchPresets/Php.php b/src/ArchPresets/Php.php index b70a2a11e..90b6985cd 100644 --- a/src/ArchPresets/Php.php +++ b/src/ArchPresets/Php.php @@ -92,9 +92,5 @@ public function execute(): void 'xdebug_var_dump', 'trap', ])->not->toBeUsed(); - - $this->eachUserNamespace( - fn (Expectation $namespace): ArchExpectation => $namespace->not->toHaveSuspiciousCharacters(), - ); } } From bc57a84e77afd4544ff9643a6858f68d05aeab96 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Sun, 4 Jan 2026 11:29:59 -0500 Subject: [PATCH 131/134] release: 4.3.1 --- composer.json | 2 +- src/ArchPresets/Php.php | 3 --- src/Pest.php | 2 +- .../Visual/Help/visual_snapshot_of_help_command_output.snap | 2 +- .../Visual/Version/visual_snapshot_of_help_command_output.snap | 2 +- tests/.snapshots/success.txt | 2 +- tests/Visual/Parallel.php | 2 +- 7 files changed, 6 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 985e56305..4961418b8 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,7 @@ "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.1", "phpunit/phpunit": "^12.5.4", - "symfony/process": "^7.4.0|^8.0.0" + "symfony/process": "^7.4.3|^8.0.0" }, "conflict": { "filp/whoops": "<2.18.3", diff --git a/src/ArchPresets/Php.php b/src/ArchPresets/Php.php index 90b6985cd..22b409b64 100644 --- a/src/ArchPresets/Php.php +++ b/src/ArchPresets/Php.php @@ -4,9 +4,6 @@ namespace Pest\ArchPresets; -use Pest\Arch\Contracts\ArchExpectation; -use Pest\Expectation; - /** * @internal */ diff --git a/src/Pest.php b/src/Pest.php index 6c177561d..f0c338df0 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.3.0'; + return '4.3.1'; } function testDirectory(string $file = ''): string diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 53508b512..52e93473f 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.3.0. + Pest Testing Framework 4.3.1. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 523376c61..04dbacc0c 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.3.0. + Pest Testing Framework 4.3.1. diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index bfa91bb1b..7b3d6f9b8 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -1782,4 +1782,4 @@ ✓ pass with dataset with ('my-datas-set-value') ✓ within describe → pass with dataset with ('my-datas-set-value') - Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1188 passed (2814 assertions) \ No newline at end of file + Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 35 skipped, 1188 passed (2813 assertions) \ No newline at end of file diff --git a/tests/Visual/Parallel.php b/tests/Visual/Parallel.php index 93d2059d5..1aced21dc 100644 --- a/tests/Visual/Parallel.php +++ b/tests/Visual/Parallel.php @@ -16,7 +16,7 @@ test('parallel', function () use ($run) { expect($run('--exclude-group=integration')) - ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1177 passed (2790 assertions)') + ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 39 todos, 26 skipped, 1177 passed (2789 assertions)') ->toContain('Parallel: 3 processes'); })->skipOnWindows(); From c7e4efcea4389d5da25fe86011e1aaccd472d019 Mon Sep 17 00:00:00 2001 From: Ilia Smirnov Date: Wed, 14 Jan 2026 00:55:35 +0100 Subject: [PATCH 132/134] fix: replace `substr` with `mb_substr` in Str::beforeLast to ensure multibyte string compatibility and correct TeamCity test names for datasets in "describe" blocks --- src/Support/Str.php | 2 +- tests/.snapshots/SuccessOnly.php.inc | 8 ++++++-- tests/.tests/SuccessOnly.php | 6 ++++++ tests/Visual/JUnit.php | 4 ++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Support/Str.php b/src/Support/Str.php index 6e32c05db..04f4b1fdd 100644 --- a/src/Support/Str.php +++ b/src/Support/Str.php @@ -79,7 +79,7 @@ public static function beforeLast(string $subject, string $search): string return $subject; } - return substr($subject, 0, $pos); + return mb_substr($subject, 0, $pos); } /** diff --git a/tests/.snapshots/SuccessOnly.php.inc b/tests/.snapshots/SuccessOnly.php.inc index b00a0e36c..b940b7b63 100644 --- a/tests/.snapshots/SuccessOnly.php.inc +++ b/tests/.snapshots/SuccessOnly.php.inc @@ -1,5 +1,5 @@ ##teamcity[testSuiteStarted name='Tests/tests/SuccessOnly' locationHint='pest_qn://tests/.tests/SuccessOnly.php' flowId='1234'] -##teamcity[testCount count='3' flowId='1234'] +##teamcity[testCount count='4' flowId='1234'] ##teamcity[testStarted name='it can pass with comparison' locationHint='pest_qn://tests/.tests/SuccessOnly.php::it can pass with comparison' flowId='1234'] ##teamcity[testFinished name='it can pass with comparison' duration='100000' flowId='1234'] ##teamcity[testStarted name='can also pass' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can also pass' flowId='1234'] @@ -8,8 +8,12 @@ ##teamcity[testStarted name='can pass with dataset with data set "(true)"' locationHint='pest_qn://tests/.tests/SuccessOnly.php::can pass with dataset with data set "(true)"' flowId='1234'] ##teamcity[testFinished name='can pass with dataset with data set "(true)"' duration='100000' flowId='1234'] ##teamcity[testSuiteFinished name='can pass with dataset' flowId='1234'] +##teamcity[testSuiteStarted name='`block` → can pass with dataset in describe block' locationHint='pest_qn://tests/.tests/SuccessOnly.php::`block` → can pass with dataset in describe block' flowId='1234'] +##teamcity[testStarted name='`block` → can pass with dataset in describe block with data set "(1)"' locationHint='pest_qn://tests/.tests/SuccessOnly.php::`block` → can pass with dataset in describe block with data set "(1)"' flowId='1234'] +##teamcity[testFinished name='`block` → can pass with dataset in describe block with data set "(1)"' duration='100000' flowId='1234'] +##teamcity[testSuiteFinished name='`block` → can pass with dataset in describe block' flowId='1234'] ##teamcity[testSuiteFinished name='Tests/tests/SuccessOnly' flowId='1234'] - Tests: 3 passed (3 assertions) + Tests: 4 passed (4 assertions) Duration: 1.00s diff --git a/tests/.tests/SuccessOnly.php b/tests/.tests/SuccessOnly.php index cb4009a68..4d231a8dd 100644 --- a/tests/.tests/SuccessOnly.php +++ b/tests/.tests/SuccessOnly.php @@ -13,3 +13,9 @@ test('can pass with dataset', function ($value) { expect($value)->toEqual(true); })->with([true]); + +describe('block', function () { + test('can pass with dataset in describe block', function ($number) { + expect($number)->toBeInt(); + })->with([1]); +}); diff --git a/tests/Visual/JUnit.php b/tests/Visual/JUnit.php index 3523bdd6f..fd34ea7a9 100644 --- a/tests/Visual/JUnit.php +++ b/tests/Visual/JUnit.php @@ -36,8 +36,8 @@ expect($result['testsuite']['@attributes']) ->name->toBe('Tests\tests\SuccessOnly') ->file->toBe($normalizedPath('tests/.tests/SuccessOnly.php')) - ->tests->toBe('3') - ->assertions->toBe('3') + ->tests->toBe('4') + ->assertions->toBe('4') ->errors->toBe('0') ->failures->toBe('0') ->skipped->toBe('0'); From 3a4329ddc7a2b67c19fca8342a668b39be3ae398 Mon Sep 17 00:00:00 2001 From: Nuno Maduro Date: Wed, 28 Jan 2026 01:01:19 +0000 Subject: [PATCH 133/134] release: 4.3.2 --- composer.json | 10 +++++----- src/Pest.php | 2 +- src/Support/HigherOrderCallables.php | 1 + .../Help/visual_snapshot_of_help_command_output.snap | 2 +- .../visual_snapshot_of_help_command_output.snap | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 4961418b8..9d7fcdee7 100644 --- a/composer.json +++ b/composer.json @@ -18,19 +18,19 @@ ], "require": { "php": "^8.3.0", - "brianium/paratest": "^7.16.0", + "brianium/paratest": "^7.16.1", "nunomaduro/collision": "^8.8.3", "nunomaduro/termwind": "^2.3.3", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.1", - "phpunit/phpunit": "^12.5.4", - "symfony/process": "^7.4.3|^8.0.0" + "phpunit/phpunit": "^12.5.8", + "symfony/process": "^7.4.4|^8.0.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.5.4", + "phpunit/phpunit": ">12.5.8", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, @@ -56,7 +56,7 @@ }, "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", - "pestphp/pest-plugin-browser": "^4.1.1", + "pestphp/pest-plugin-browser": "^4.2.1", "pestphp/pest-plugin-type-coverage": "^4.0.3", "psy/psysh": "^0.12.18" }, diff --git a/src/Pest.php b/src/Pest.php index f0c338df0..ba3a540e4 100644 --- a/src/Pest.php +++ b/src/Pest.php @@ -6,7 +6,7 @@ function version(): string { - return '4.3.1'; + return '4.3.2'; } function testDirectory(string $file = ''): string diff --git a/src/Support/HigherOrderCallables.php b/src/Support/HigherOrderCallables.php index 9e5bba36f..358b4da5f 100644 --- a/src/Support/HigherOrderCallables.php +++ b/src/Support/HigherOrderCallables.php @@ -46,6 +46,7 @@ public function expect(mixed $value): Expectation */ public function and(mixed $value): Expectation { + // @phpstan-ignore-next-line return $this->expect($value); } diff --git a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap index 52e93473f..ef023f6cf 100644 --- a/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Help/visual_snapshot_of_help_command_output.snap @@ -1,5 +1,5 @@ - Pest Testing Framework 4.3.1. + Pest Testing Framework 4.3.2. USAGE: pest [options] diff --git a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap index 04dbacc0c..c6a7cadfc 100644 --- a/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap +++ b/tests/.pest/snapshots/Visual/Version/visual_snapshot_of_help_command_output.snap @@ -1,3 +1,3 @@ - Pest Testing Framework 4.3.1. + Pest Testing Framework 4.3.2. From 6014747f5c7be1751d64ab63abf32229042729be Mon Sep 17 00:00:00 2001 From: QDenka Date: Sun, 8 Feb 2026 13:43:52 +0000 Subject: [PATCH 134/134] fix: handle AfterLastTestMethodErrored in StateGenerator for parallel mode Previously, StateGenerator assumed all non-Errored events from testErroredEvents() were BeforeFirstTestMethodErrored. However, AfterLastTestMethodErrored events can also appear (e.g., when errors occur during teardown), causing a TypeError crash in parallel mode. This adds explicit instanceof checks for both BeforeFirstTestMethodErrored and AfterLastTestMethodErrored, converting the latter to a BeforeFirstTestMethodErrored for display purposes since both share the same interface. Fixes #1623 --- src/Support/StateGenerator.php | 14 +++- tests/Unit/Support/StateGenerator.php | 106 ++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 tests/Unit/Support/StateGenerator.php diff --git a/src/Support/StateGenerator.php b/src/Support/StateGenerator.php index a7ddba1a9..ddff338b0 100644 --- a/src/Support/StateGenerator.php +++ b/src/Support/StateGenerator.php @@ -10,6 +10,8 @@ use PHPUnit\Event\Code\TestDoxBuilder; use PHPUnit\Event\Code\TestMethod; use PHPUnit\Event\Code\ThrowableBuilder; +use PHPUnit\Event\Test\AfterLastTestMethodErrored; +use PHPUnit\Event\Test\BeforeFirstTestMethodErrored; use PHPUnit\Event\Test\Errored; use PHPUnit\Event\TestData\TestDataCollection; use PHPUnit\Framework\SkippedWithMessageException; @@ -29,9 +31,17 @@ public function fromPhpUnitTestResult(int $passedTests, PHPUnitTestResult $testR TestResult::FAIL, $testResultEvent->throwable() )); - } else { - // @phpstan-ignore-next-line + } elseif ($testResultEvent instanceof BeforeFirstTestMethodErrored) { $state->add(TestResult::fromBeforeFirstTestMethodErrored($testResultEvent)); + } elseif ($testResultEvent instanceof AfterLastTestMethodErrored) { + $state->add(TestResult::fromBeforeFirstTestMethodErrored( + new BeforeFirstTestMethodErrored( + $testResultEvent->telemetryInfo(), + $testResultEvent->testClassName(), + $testResultEvent->calledMethod(), + $testResultEvent->throwable(), + ) + )); } } diff --git a/tests/Unit/Support/StateGenerator.php b/tests/Unit/Support/StateGenerator.php new file mode 100644 index 000000000..44b2ca43b --- /dev/null +++ b/tests/Unit/Support/StateGenerator.php @@ -0,0 +1,106 @@ +fromPhpUnitTestResult(0, $phpunitResult); + + // The AfterLastTestMethodErrored event should be processed and added to state + expect($state->suiteTests)->toHaveCount(1); +}); + +it('handles BeforeFirstTestMethodErrored correctly', function (): void { + $generator = new StateGenerator; + + $throwable = ThrowableBuilder::from(new RuntimeException('Setup error')); + + $beforeFirstEvent = new BeforeFirstTestMethodErrored( + makeTelemetryInfo(), + \PHPUnit\Framework\TestCase::class, + new ClassMethod(\PHPUnit\Framework\TestCase::class, 'setUp'), + $throwable, + ); + + $phpunitResult = makePHPUnitTestResult([$beforeFirstEvent]); + $state = $generator->fromPhpUnitTestResult(0, $phpunitResult); + + expect($state->suiteTests)->toHaveCount(1); +}); + +it('handles mixed errored events without TypeError', function (): void { + $generator = new StateGenerator; + + $throwable = ThrowableBuilder::from(new RuntimeException('Error')); + + $beforeEvent = new BeforeFirstTestMethodErrored( + makeTelemetryInfo(), + \PHPUnit\Framework\TestCase::class, + new ClassMethod(\PHPUnit\Framework\TestCase::class, 'setUp'), + $throwable, + ); + + $afterEvent = new AfterLastTestMethodErrored( + makeTelemetryInfo(), + \PHPUnit\Framework\TestCase::class, + new ClassMethod(\PHPUnit\Framework\TestCase::class, 'tearDown'), + $throwable, + ); + + $phpunitResult = makePHPUnitTestResult([$beforeEvent, $afterEvent]); + $state = $generator->fromPhpUnitTestResult(0, $phpunitResult); + + // Both events share the same testClassName key, so the second overwrites the first + expect($state->suiteTests)->toHaveCount(1); +});