* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PHPUnit\TextUI\Output\Default\ProgressPrinter; use PHPUnit\Event\Test\Skipped; use PHPUnit\Event\Test\SkippedSubscriber; use ReflectionClass; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit * * This file is overridden so PHPUnit's progress output emits a "T" before the * regular "S" for "todo" tests — Pest's parallel result printer consumes the * "T" and swallows the "S" that follows it. */ final readonly class TestSkippedSubscriber extends Subscriber implements SkippedSubscriber { public function notify(Skipped $event): void { if ($event->message() === '__TODO__') { $this->printTodoItem(); } $this->printer()->testSkipped(); } /** * Prints a "T" to the standard PHPUnit output to indicate a todo item. */ private function printTodoItem(): void { $mirror = new ReflectionClass($this->printer()); $printProgress = $mirror->getMethod('printProgress'); $printProgress->invoke($this->printer(), 'T'); } }