= 10) { /** * @internal */ final class EnsurePrinterIsRegisteredSubscriber implements StartedSubscriber { /** * If this subscriber has been registered on PHPUnit's facade. */ private static bool $registered = false; /** * Runs the subscriber. */ public function notify(Started $event): void { $printer = new ReportablePrinter(new DefaultPrinter(true)); if (isset($_SERVER['COLLISION_PRINTER_COMPACT'])) { DefaultPrinter::compact(true); } if (isset($_SERVER['COLLISION_PRINTER_PROFILE'])) { DefaultPrinter::profile(true); } $subscribers = [ // Configured new class($printer) extends Subscriber implements ConfiguredSubscriber { public function notify(Configured $event): void { $this->printer()->setDecorated( $event->configuration()->colors() ); } }, // Test new class($printer) extends Subscriber implements PrintedUnexpectedOutputSubscriber { public function notify(PrintedUnexpectedOutput $event): void { $this->printer()->testPrintedUnexpectedOutput($event); } }, // Test Runner new class($printer) extends Subscriber implements ExecutionStartedSubscriber { public function notify(ExecutionStarted $event): void { $this->printer()->testRunnerExecutionStarted($event); } }, new class($printer) extends Subscriber implements ExecutionFinishedSubscriber { public function notify(ExecutionFinished $event): void { $this->printer()->testRunnerExecutionFinished($event); } }, // Test > Hook Methods new class($printer) extends Subscriber implements BeforeFirstTestMethodErroredSubscriber { public function notify(BeforeFirstTestMethodErrored $event): void { $this->printer()->testBeforeFirstTestMethodErrored($event); } }, // Test > Lifecycle ... new class($printer) extends Subscriber implements FinishedSubscriber { public function notify(Finished $event): void { $this->printer()->testFinished($event); } }, new class($printer) extends Subscriber implements PreparationStartedSubscriber { public function notify(PreparationStarted $event): void { $this->printer()->testPreparationStarted($event); } }, // Test > Issues ... new class($printer) extends Subscriber implements ConsideredRiskySubscriber { public function notify(ConsideredRisky $event): void { $this->printer()->testConsideredRisky($event); } }, new class($printer) extends Subscriber implements DeprecationTriggeredSubscriber { public function notify(DeprecationTriggered $event): void { $this->printer()->testDeprecationTriggered($event); } }, new class($printer) extends Subscriber implements TestRunnerDeprecationTriggeredSubscriber { public function notify(TestRunnerDeprecationTriggered $event): void { $this->printer()->testRunnerDeprecationTriggered($event); } }, new class($printer) extends Subscriber implements TestRunnerWarningTriggeredSubscriber { public function notify(TestRunnerWarningTriggered $event): void { $this->printer()->testRunnerWarningTriggered($event); } }, new class($printer) extends Subscriber implements PhpDeprecationTriggeredSubscriber { public function notify(PhpDeprecationTriggered $event): void { $this->printer()->testPhpDeprecationTriggered($event); } }, new class($printer) extends Subscriber implements PhpNoticeTriggeredSubscriber { public function notify(PhpNoticeTriggered $event): void { $this->printer()->testPhpNoticeTriggered($event); } }, new class($printer) extends Subscriber implements PhpWarningTriggeredSubscriber { public function notify(PhpWarningTriggered $event): void { $this->printer()->testPhpWarningTriggered($event); } }, new class($printer) extends Subscriber implements PhpunitWarningTriggeredSubscriber { public function notify(PhpunitWarningTriggered $event): void { $this->printer()->testPhpunitWarningTriggered($event); } }, // Test > Outcome ... new class($printer) extends Subscriber implements ErroredSubscriber { public function notify(Errored $event): void { $this->printer()->testErrored($event); } }, new class($printer) extends Subscriber implements FailedSubscriber { public function notify(Failed $event): void { $this->printer()->testFailed($event); } }, new class($printer) extends Subscriber implements MarkedIncompleteSubscriber { public function notify(MarkedIncomplete $event): void { $this->printer()->testMarkedIncomplete($event); } }, new class($printer) extends Subscriber implements NoticeTriggeredSubscriber { public function notify(NoticeTriggered $event): void { $this->printer()->testNoticeTriggered($event); } }, new class($printer) extends Subscriber implements PassedSubscriber { public function notify(Passed $event): void { $this->printer()->testPassed($event); } }, new class($printer) extends Subscriber implements SkippedSubscriber { public function notify(Skipped $event): void { $this->printer()->testSkipped($event); } }, new class($printer) extends Subscriber implements WarningTriggeredSubscriber { public function notify(WarningTriggered $event): void { $this->printer()->testWarningTriggered($event); } }, ]; Facade::instance()->registerSubscribers(...$subscribers); } /** * Registers the subscriber on PHPUnit's facade. */ public static function register(): void { $shouldRegister = self::$registered === false && isset($_SERVER['COLLISION_PRINTER']); if ($shouldRegister) { self::$registered = true; Facade::instance()->registerSubscriber(new self()); } } } }