* fix: update dd method to return never type

Co-authored-by: Copilot <copilot@github.com>

* fix: enhance var_dump calls to accept additional arguments

* fix: update dd method to handle paratest and collision printer environments

* test: add dd method tests for ExpectationFailedException in parallel mode

Co-authored-by: Copilot <copilot@github.com>

---------

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Punyapal Shah
2026-06-11 14:46:07 +05:30
committed by GitHub
parent 04c9d41895
commit be49a3ce18
2 changed files with 51 additions and 4 deletions

View File

@ -112,7 +112,7 @@ final class Expectation
if (function_exists('dump')) {
dump($this->value, ...$arguments);
} else {
var_dump($this->value);
var_dump($this->value, ...$arguments);
}
return $this;
@ -123,15 +123,23 @@ final class Expectation
*
* @return never
*/
public function dd(mixed ...$arguments): void
public function dd(mixed ...$arguments): never
{
if (function_exists('dd')) {
dd($this->value, ...$arguments);
}
var_dump($this->value);
if (getenv('PARATEST') !== false || isset($_SERVER['COLLISION_PRINTER'])) {
ob_start();
var_dump($this->value, ...$arguments);
$output = (string) ob_get_clean();
exit(1);
throw new ExpectationFailedException($output);
}
var_dump($this->value, ...$arguments);
exit(0);
}
/**

View File

@ -0,0 +1,39 @@
<?php
use PHPUnit\Framework\ExpectationFailedException;
it('dd throws ExpectationFailedException with dumped value in parallel mode', function () {
putenv('PARATEST=1');
try {
expect(42)->dd();
} catch (ExpectationFailedException $e) {
expect($e->getMessage())->toContain('42');
} finally {
putenv('PARATEST');
}
});
it('dd throws ExpectationFailedException with all dumped arguments in parallel mode', function () {
putenv('PARATEST=1');
try {
expect('hello')->dd('extra');
} catch (ExpectationFailedException $e) {
expect($e->getMessage())
->toContain('hello')
->toContain('extra');
} finally {
putenv('PARATEST');
}
});
it('dd throws ExpectationFailedException with dumped value when running under pest', function () {
expect($_SERVER['COLLISION_PRINTER'])->toBe('DefaultPrinter');
try {
expect(42)->dd();
} catch (ExpectationFailedException $e) {
expect($e->getMessage())->toContain('42');
}
});