feat: allows to chain todo

This commit is contained in:
Nuno Maduro
2023-01-10 20:21:33 +00:00
parent 51bcf6a2be
commit e228d565af
6 changed files with 30 additions and 7 deletions

View File

@ -87,7 +87,7 @@ if (! function_exists('test')) {
* is the test description; the second argument is
* a closure that contains the test expectations.
*
* @return TestCall|TestCase|mixed
* @return HigherOrderTapProxy<TestCall|TestCase>|TestCall
*/
function test(string $description = null, Closure $closure = null): HigherOrderTapProxy|TestCall
{
@ -130,10 +130,11 @@ if (! function_exists('todo')) {
*/
function todo(string $description): TestCall
{
/* @phpstan-ignore-next-line */
return test($description, fn () => self::markTestSkipped(
'__TODO__',
));
$test = test($description);
assert($test instanceof TestCall);
return $test->skip('__TODO__');
}
}

View File

@ -170,6 +170,16 @@ final class TestCall
return $this;
}
/**
* Sets the test as "todo".
*/
public function todo(): self
{
$this->skip('__TODO__');
return $this;
}
/**
* Sets the covered classes or methods.
*/

View File

@ -44,7 +44,7 @@ final class ExceptionTrace
*/
public static function removePestReferences(Throwable $t): void
{
if (! property_exists($t, 'serializableTrace')) { // @phpstan-ignore-line
if (! property_exists($t, 'serializableTrace')) {
return;
}

View File

@ -10,6 +10,10 @@ use Throwable;
/**
* @internal
*
* @template TProxy
*
* @mixin TProxy
*/
final class HigherOrderTapProxy
{

View File

@ -734,6 +734,8 @@
PASS Tests\Features\Todo
↓ something todo later
↓ something todo later chained
↓ something todo later chained and with function body
✓ it does something within a file with a todo
PASS Tests\Fixtures\DirectoryWithTests\ExampleTest
@ -896,4 +898,4 @@
PASS Tests\Visual\Version
✓ visual snapshot of help command output
Tests: 4 incomplete, 2 todos, 17 skipped, 624 passed (1511 assertions)
Tests: 4 incomplete, 4 todos, 17 skipped, 624 passed (1511 assertions)

View File

@ -2,6 +2,12 @@
todo('something todo later');
test('something todo later chained')->todo();
test('something todo later chained and with function body', function () {
expect(true)->toBeFalse();
})->todo();
it('does something within a file with a todo', function () {
expect(true)->toBeTrue();
});