key); self::assertTrue($steps[0]->skipped); self::assertFalse($ran); } public function testTheStepCarriesTheProbeProblems(): void { $steps = (PodsCheckSteps::extra(static fn (): array => ['rot']))(true); self::assertSame(['rot'], $steps[0]->problems); self::assertFalse($steps[0]->skipped); self::assertSame('Lese- und Schreibtest an einem Wegwerf-Eintrag', $steps[0]->label()); } /** No target is no red step: a skipped one would lock Pods on a site that has no pod yet (CheckReport::green()). */ public function testWithoutATargetTheStepIsGreenAndSaysSo(): void { $steps = (PodsCheckSteps::extra(static fn (): ?array => null))(true); self::assertTrue($steps[0]->green()); self::assertStringContainsString('nicht geprüft', $steps[0]->label()); } public function testALateExceptionOfTheClosureIsStillGuarded(): void { $logged = $this->logged(function (): void { $steps = (PodsCheckSteps::extra(static fn (): never => throw new RuntimeException('boom')))(true); self::assertSame(['Prüfschritt abgebrochen (Details im PHP-Error-Log).'], $steps[0]->problems); }); self::assertStringContainsString('boom', $logged); } public function testTheLabelOfAnOldStepComesFromTheKey(): void { self::assertSame( 'Lese- und Schreibtest an einem Wegwerf-Eintrag', PodsCheckSteps::label(new CheckStep(PodsCheckSteps::PROBE, [])) ); self::assertSame( 'Pods-Funktionen, Klassen und Registrierungen', PodsCheckSteps::label(new CheckStep(CheckStep::MANIFEST, [])) ); self::assertSame('other', PodsCheckSteps::label(new CheckStep('other', []))); } }