['pipe','r'],1=>['pipe','w'],2=>['pipe','w']],$pipes); self::assertIsResource($p);fclose($pipes[0]); $out=stream_get_contents($pipes[1]);$err=stream_get_contents($pipes[2]); fclose($pipes[1]);fclose($pipes[2]); self::assertSame(0,proc_close($p),$out.$err); self::assertSame('',$err);self::assertStringContainsString('TOTAL ',$out); } public function testPhysicalFeedback(): void {$this->checkScript('checks.php');} public function testConfirmedDeviceReads(): void {$this->checkScript('device_read_checks.php');} public function testActualReceiverIntegration(): void {$this->checkScript('receiver_checks.php');} public function testActualFallbackWrapper(): void {$this->checkScript('fallback_checks.php');} public function testMessageWithoutVisibleDiagnostics(): void {$this->checkScript('message_checks.php');} }