public function run(TestRequest $test)
 {
     if (!$this->process->isRunning()) {
         $this->process->stop();
         $this->process->start();
     }
     $this->debug("Added " . $test->encode());
     $this->testErr = '';
     $this->pendingRequests->enqueue($test);
     $this->process->write($test->encode());
 }
 /**
  * A test ended.
  *
  * @param  PHPUnit_Framework_Test $test
  * @param  float $time
  */
 public function endTest(PHPUnit_Framework_Test $test, $time)
 {
     echo $test->getActualOutput();
     $reflectionClass = new \ReflectionClass($test);
     $result = new TestResult(['testId' => $this->request->getId(), 'class' => get_class($test), 'name' => $test->getName(), 'filename' => $reflectionClass->getFileName(), 'elapsed' => $time, 'memoryUsed' => memory_get_usage() - $this->startingMemory, 'errors' => $this->errors, 'incomplete' => $this->incomplete, 'skipped' => $this->skipped, 'risky' => $this->risky]);
     $this->sendError($result);
 }
 public function run(array $argv, $exit = true, $memoryTracking = true, $bootstrap = null)
 {
     require_once __DIR__ . '/../printer/SerializePrinter.php';
     $this->arguments['printer'] = $this->handlePrinter('phpunit_parallel\\printer\\SerializePrinter');
     if ($bootstrap) {
         $this->arguments['bootstrap'] = $bootstrap;
     }
     $this->handleConfig();
     $runner = $this->createRunner();
     while ($testDetails = fgets(STDIN)) {
         if ($memoryTracking) {
             gc_collect_cycles();
         }
         if ($request = TestRequest::decode($testDetails)) {
             SerializePrinter::getInstance()->setCurrentRequest($request);
             $escapedClassName = str_replace('\\', '\\\\', $request->getClass());
             $this->arguments['filter'] = "^{$escapedClassName}::{$request->getName()}\$";
             $suite = new \PHPUnit_Framework_TestSuite($request->getClass());
             $suite->addTestFile($request->getFilename());
             $result = $runner->doRun($suite, $this->arguments);
             if ($result->count() === 0) {
                 $this->showError($request, "Test not found!");
             } elseif ($result->count() > 1) {
                 $this->showError($request, "Multiple tests executed!");
             }
         }
     }
     return 0;
 }