Example #1
0
 /**
  * Runs tests based on the given PHPUnit_Framework_TestSuite object.
  *
  * @param PHPUnit_Framework_TestSuite $suite
  */
 public function run($suite)
 {
     $testResult = new PHPUnit_Framework_TestResult();
     $printer = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_ResultPrinter(null, true, $this->config->colors);
     $arguments = array();
     $arguments['printer'] = $printer;
     Stagehand_TestRunner_Runner_PHPUnitRunner_TestDox_Stream::register();
     $arguments['listeners'] = array(new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_TestDoxPrinter(fopen('testdox://' . spl_object_hash($testResult), 'w'), $this->config->colors, $this->prettifier()));
     if (!$this->config->printsDetailedProgressReport) {
         $arguments['listeners'][] = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_ProgressPrinter(null, false, $this->config->colors);
     } else {
         $arguments['listeners'][] = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_DetailedProgressPrinter(null, false, $this->config->colors);
     }
     if ($this->config->logsResultsInJUnitXML) {
         $junitXMLListener = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_JUnitXMLPrinter($this->config->junitXMLFile);
         if (!$this->config->logsResultsInJUnitXMLInRealtime) {
             $xmlWriter = new Stagehand_TestRunner_JUnitXMLWriter_JUnitXMLDOMWriter(array($junitXMLListener, 'write'));
         } else {
             $xmlWriter = $this->junitXMLStreamWriter(array($junitXMLListener, 'write'));
         }
         $junitXMLListener->setXMLWriter($xmlWriter);
         $arguments['listeners'][] = $junitXMLListener;
     }
     if ($this->config->stopsOnFailure) {
         $arguments['stopOnFailure'] = true;
         $arguments['stopOnError'] = true;
     }
     if (!is_null($this->config->phpunitConfigFile)) {
         $arguments['configuration'] = $this->config->phpunitConfigFile;
     }
     $testRunner = new Stagehand_TestRunner_Runner_PHPUnitRunner_TestRunner();
     $testRunner->setTestResult($testResult);
     $testRunner->doRun($suite, $arguments);
     if ($this->config->usesGrowl) {
         ob_start();
         $printer->printResult($testResult);
         $output = ob_get_contents();
         ob_end_clean();
         if (preg_match('/^(?:\\x1b\\[30;42m\\x1b\\[2K)?(OK .+)/m', $output, $matches)) {
             $this->notification->name = 'Green';
             $this->notification->description = $matches[1];
         } elseif (preg_match('/^(?:\\x1b\\[37;41m\\x1b\\[2K)?(FAILURES!)\\s^(?:\\x1b\\[0m\\x1b\\[37;41m\\x1b\\[2K)?(.+)/m', $output, $matches)) {
             $this->notification->name = 'Red';
             $this->notification->description = $matches[1] . "\n" . $matches[2];
         } elseif (preg_match('/^(?:\\x1b\\[30;43m\\x1b\\[2K)?(OK, but incomplete or skipped tests!)\\s^(?:\\x1b\\[0m\\x1b\\[30;43m\\x1b\\[2K)?(.+)/m', $output, $matches)) {
             $this->notification->name = 'Red';
             $this->notification->description = $matches[1] . "\n" . $matches[2];
         }
     }
 }
 /**
  * Runs tests based on the given PHPUnit_Framework_TestSuite object.
  *
  * @param PHPUnit_Framework_TestSuite $suite
  */
 public function run($suite)
 {
     $testResult = new PHPUnit_Framework_TestResult();
     $printer = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_ResultPrinter(null, false, $this->config->colors);
     $arguments = array();
     $arguments['printer'] = $printer;
     Stagehand_TestRunner_Runner_PHPUnitRunner_TestDox_Stream::register();
     $arguments['listeners'] = array(new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_TestDoxPrinter('testdox://' . spl_object_hash($testResult), $this->config->colors, $this->prettifier()));
     if (!$this->config->printsDetailedProgressReport) {
         $arguments['listeners'][] = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_ProgressPrinter(null, false, $this->config->colors);
     } else {
         $arguments['listeners'][] = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_DetailedProgressPrinter(null, false, $this->config->colors);
     }
     if ($this->config->logsResultsInJUnitXML) {
         $junitXMLListener = new Stagehand_TestRunner_Runner_PHPUnitRunner_Printer_JUnitXMLPrinter($this->config->junitXMLFile);
         if (!$this->config->logsResultsInJUnitXMLInRealtime) {
             $xmlWriter = new Stagehand_TestRunner_JUnitXMLWriter_JUnitXMLDOMWriter(array($junitXMLListener, 'write'));
         } else {
             $xmlWriter = $this->junitXMLStreamWriter(array($junitXMLListener, 'write'));
         }
         $junitXMLListener->setXMLWriter($xmlWriter);
         $arguments['listeners'][] = $junitXMLListener;
     }
     if ($this->config->stopsOnFailure) {
         $arguments['stopOnFailure'] = true;
         $arguments['stopOnError'] = true;
     }
     $testRunner = new Stagehand_TestRunner_Runner_PHPUnitRunner_TestRunner();
     $testRunner->setTestResult($testResult);
     $testRunner->doRun($suite, $arguments);
     if ($this->config->usesGrowl) {
         ob_start();
         $printer->printResult($testResult);
         $output = ob_get_contents();
         ob_end_clean();
         if (preg_match('/^(?:\\x1b\\[3[23]m)?(OK[^\\x1b]+)/ms', $output, $matches)) {
             $this->notification->name = 'Green';
             $this->notification->description = $matches[1];
         } elseif (preg_match('/^(FAILURES!\\s)(?:\\x1b\\[31m)?([^\\x1b]+)/ms', $output, $matches)) {
             $this->notification->name = 'Red';
             $this->notification->description = "{$matches[1]}{$matches[2]}";
         }
     }
 }