Author: Sebastian Bergmann (sb@sebastian-bergmann.de)
Inheritance: extends PHPUnit_Util_Printer, implements PHPUnit_Framework_TestListener
Exemple #1
0
 /**
  * @param \PHPUnit_Framework_TestResult[] $results
  */
 public function getResultsOutput(array $results, $output_stream = null)
 {
     assert(is_array($results));
     assert(!empty($results));
     $Printer = new \PHPUnit_TextUI_ResultPrinter($output_stream);
     foreach ($results as $Result) {
         $Printer->printResult($Result);
     }
 }
function main()
{
    function cleanup()
    {
        global $wpdb;
        // we need to ensure that we switch off this database
        $wpdb->select(null);
        // drop our test database
        // XXX: why cant we use $wpdb->query ?
        mysql_query(sprintf('DROP DATABASE `%s`', DISQUS_TEST_DATABASE)) or die(mysql_error());
    }
    global $wpdb;
    // $this->query(sprintf('DROP DATABASE IF EXISTS `%s`', DISQUS_TEST_DATABASE));
    // check existance of test db
    $exists = $wpdb->get_var($wpdb->prepare('SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \'%s\'', DISQUS_TEST_DATABASE));
    if (!empty($exists)) {
        printf("Test database '%s' already exists. Continuing will drop this database and all data!\nContinue?  [y/n]\n", $exists);
        $handle = fopen("php://stdin", "r");
        $line = strtolower(trim(fgets($handle)));
        if ($line != 'yes' && $line != 'y') {
            echo "ABORTING!\n";
            exit;
        }
    }
    // setup database
    $wpdb->query(sprintf('CREATE DATABASE `%s`', DISQUS_TEST_DATABASE));
    $wpdb->select(DISQUS_TEST_DATABASE);
    // $fp = fopen('initial.sql', 'r');
    // $buffer = '';
    // while (($line = fgets($fp)) !== false) {
    //     $buffer .= trim($line);
    //     if (strpos($line, ';')) {
    //         if (!empty($buffer)) {
    //             $this->query($buffer);
    //         }
    //         $buffer = '';
    //     }
    // }
    //
    try {
        $suite = new PHPUnit_Framework_TestSuite('DisqusPluginTest');
        $result = $suite->run();
        require_once 'PHPUnit/TextUI/ResultPrinter.php';
        $printer = new PHPUnit_TextUI_ResultPrinter();
        $printer->printResult($result);
        cleanup();
    } catch (Exception $ex) {
        cleanup();
        throw $ex;
    }
}
 /**
  * {@inheritdoc}
  */
 protected function writeProgress($progress)
 {
     if ($progress == '.') {
         $progress = $this->fab->paintChar('*');
     }
     parent::writeProgress($progress);
 }
 /**
  * Just add to the output the seed used to randomize the test suite.
  * 
  * @param  PHPUnit_Framework_TestResult $result
  */
 protected function printFooter(\PHPUnit_Framework_TestResult $result)
 {
     parent::printFooter($result);
     $this->writeNewLine();
     $this->write("Randomized with seed: {$this->seed}");
     $this->writeNewLine();
 }
Exemple #5
0
 protected function printDefectTrace(PHPUnit_Framework_TestFailure $defect)
 {
     global $CFG;
     parent::printDefectTrace($defect);
     $failedTest = $defect->failedTest();
     $testName = get_class($failedTest);
     $exception = $defect->thrownException();
     $trace = $exception->getTrace();
     if (class_exists('ReflectionClass')) {
         $reflection = new ReflectionClass($testName);
         $file = $reflection->getFileName();
     } else {
         $file = false;
         $dirroot = realpath($CFG->dirroot) . DIRECTORY_SEPARATOR;
         $classpath = realpath("{$CFG->dirroot}/lib/phpunit/classes") . DIRECTORY_SEPARATOR;
         foreach ($trace as $item) {
             if (strpos($item['file'], $dirroot) === 0 and strpos($item['file'], $classpath) !== 0) {
                 if ($content = file_get_contents($item['file'])) {
                     if (preg_match('/class\\s+' . $testName . '\\s+extends/', $content)) {
                         $file = $item['file'];
                         break;
                     }
                 }
             }
         }
     }
     if ($file === false) {
         return;
     }
     $cwd = getcwd();
     if (strpos($file, $cwd) === 0) {
         $file = substr($file, strlen($cwd) + 1);
     }
     $this->write("\nTo re-run:\n phpunit {$testName} {$file}\n");
 }
Exemple #6
0
 /**
  * A test ended.
  *
  * @param  PHPUnit_Framework_Test $test
  * @param  float				  $time
  */
 public function endTest(\PHPUnit_Framework_Test $test, $time)
 {
     parent::endTest($test, $time);
     if ($test instanceof \Pagosoft\PSpec\Test) {
         $this->numAssertions += $test->getNumAssertions();
     }
 }
Exemple #7
0
 public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
 {
     if ($this->maxLength == 0) {
         $iterator = new RecursiveIteratorIterator(new PHPUnit_Util_TestSuiteIterator($suite), RecursiveIteratorIterator::SELF_FIRST);
         foreach ($iterator as $item) {
             if ($item instanceof PHPUnit_Framework_TestSuite) {
                 $name = $item->getName();
                 if ($name == '') {
                     $name = '[No name given]';
                 } else {
                     $name = explode('::', $name);
                     $name = array_pop($name);
                 }
                 $this->maxLength = max($this->maxLength, strlen($name));
                 $item->setName($name);
             }
         }
     }
     if ($this->depth > 0) {
         parent::write("\n");
     }
     if ($this->depth == 1) {
         parent::write("\n");
     }
     parent::write(str_pad(str_repeat('  ', $this->depth++) . $suite->getName() . ': ', 40, ' ', STR_PAD_RIGHT));
 }
 /**
  * @param PHPUnit_Framework_TestSuite $suite
  * @since Method available since Release 2.7.0
  */
 public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
 {
     $oldVerbose = $this->verbose;
     $this->verbose = false;
     parent::endTestSuite($suite);
     $this->verbose = $oldVerbose;
 }
Exemple #9
0
 /**
  * @param  boolean $wait
  * @access protected
  */
 protected function pause($wait)
 {
     if (!$wait) {
         return;
     }
     $this->fPrinter->printWaitPrompt();
     fgets(STDIN);
 }
 protected function printDefectTrace(PHPUnit_Framework_TestFailure $defect)
 {
     global $CFG;
     parent::printDefectTrace($defect);
     $failedTest = $defect->failedTest();
     $testName = get_class($failedTest);
     $exception = $defect->thrownException();
     $trace = $exception->getTrace();
     if (class_exists('ReflectionClass')) {
         $reflection = new ReflectionClass($testName);
         $file = $reflection->getFileName();
     } else {
         $file = false;
         $dirroot = realpath($CFG->dirroot) . DIRECTORY_SEPARATOR;
         $classpath = realpath("{$CFG->dirroot}/lib/phpunit/classes") . DIRECTORY_SEPARATOR;
         foreach ($trace as $item) {
             if (strpos($item['file'], $dirroot) === 0 and strpos($item['file'], $classpath) !== 0) {
                 if ($content = file_get_contents($item['file'])) {
                     if (preg_match('/class\\s+' . $testName . '\\s+extends/', $content)) {
                         $file = $item['file'];
                         break;
                     }
                 }
             }
         }
     }
     if ($file === false) {
         return;
     }
     $cwd = getcwd();
     if (strpos($file, $cwd) === 0) {
         $file = substr($file, strlen($cwd) + 1);
     }
     $executable = null;
     if (isset($_SERVER['argv'][0])) {
         if (preg_match('/phpunit(\\.bat|\\.cmd)?$/', $_SERVER['argv'][0])) {
             $executable = $_SERVER['argv'][0];
             for ($i = 1; $i < count($_SERVER['argv']); $i++) {
                 if (!isset($_SERVER['argv'][$i])) {
                     break;
                 }
                 if (in_array($_SERVER['argv'][$i], array('--colors', '--verbose', '-v', '--debug', '--strict'))) {
                     $executable .= ' ' . $_SERVER['argv'][$i];
                 }
             }
         }
     }
     if (!$executable) {
         $executable = 'phpunit';
         if (testing_is_cygwin()) {
             $file = str_replace('\\', '/', $file);
             if (!testing_is_mingw()) {
                 $executable = 'phpunit.bat';
             }
         }
     }
     $this->write("\nTo re-run:\n {$executable} {$testName} {$file}\n");
 }
 protected function printFooter(PHPUnit_Framework_TestResult $result)
 {
     $this->write('<div class="stats">');
     parent::printFooter($result);
     $this->write('</div>');
     $this->write('<div class="resourceUsage">');
     $this->write(PHP_Timer::resourceUsage());
     $this->write('</div>');
 }
 public function __construct($backtrace, $colors = false)
 {
     parent::__construct(null, false, $colors);
     $this->backtrace = '';
     foreach ($backtrace as $trace) {
         if (isset($trace['file']) && isset($trace['line'])) {
             $this->backtrace .= $trace['file'] . ':' . $trace['line'] . "\n";
         }
     }
 }
Exemple #13
0
 /**
  * @param  boolean $wait
  */
 protected function pause($wait)
 {
     if (!$wait) {
         return;
     }
     if ($this->printer instanceof PHPUnit_TextUI_ResultPrinter) {
         $this->printer->printWaitPrompt();
     }
     fgets(STDIN);
 }
 /**
  * @param  PHPUnit_Framework_Test $suite
  * @param  array                   $parameters
  * @return PHPUnit_Framework_TestResult
  * @access public
  */
 public function doRun(PHPUnit_Framework_Test $suite, array $parameters = array())
 {
     $parameters['repeat'] = isset($parameters['repeat']) ? $parameters['repeat'] : FALSE;
     $parameters['filter'] = isset($parameters['filter']) ? $parameters['filter'] : FALSE;
     $parameters['verbose'] = isset($parameters['verbose']) ? $parameters['verbose'] : FALSE;
     if (is_integer($parameters['repeat'])) {
         $suite = new PHPUnit_Extensions_RepeatedTest($suite, $parameters['repeat']);
     }
     if (isset($parameters['reportDirectory'])) {
         $parameters['reportDirectory'] = $this->getDirectory($parameters['reportDirectory']);
     }
     $result = $this->createTestResult();
     if ($this->printer === NULL) {
         $this->printer = $parameters['xml'] ? new CopixTestXMLPrinter(NULL, $parameters['verbose']) : new CopixTestPrinter(NULL, $parameters['verbose']);
     }
     $result->addListener($this->printer);
     if (isset($parameters['testdoxHTMLFile'])) {
         $result->addListener(PHPUnit_Util_TestDox_ResultPrinter::factory('HTML', $parameters['testdoxHTMLFile']));
     }
     if (isset($parameters['testdoxTextFile'])) {
         $result->addListener(PHPUnit_Util_TestDox_ResultPrinter::factory('Text', $parameters['testdoxTextFile']));
     }
     if (isset($parameters['graphvizLogfile'])) {
         if (class_exists('Image_GraphViz', FALSE) && class_exists('PHPUnit_Util_Log_GraphViz', FALSE)) {
             $result->addListener(new PHPUnit_Util_Log_GraphViz($parameters['graphvizLogfile']));
         }
     }
     if (isset($parameters['reportDirectory']) && extension_loaded('xdebug')) {
         if (class_exists('Image_GraphViz', FALSE) && class_exists('PHPUnit_Util_Report_GraphViz', FALSE)) {
             $result->addListener(new PHPUnit_Util_Report_GraphViz($parameters['reportDirectory']));
         }
         $result->collectCodeCoverageInformation(TRUE);
     }
     if (isset($parameters['jsonLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_JSON($parameters['jsonLogfile']));
     }
     if (isset($parameters['tapLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_TAP($parameters['tapLogfile']));
     }
     if (isset($parameters['xmlLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_XML($parameters['xmlLogfile']));
     }
     $suite->run($result, $parameters['filter']);
     $result->flushListeners();
     if (isset($parameters['reportDirectory']) && extension_loaded('xdebug')) {
         $this->printer->codeCoverage($parameters['reportDirectory']);
         PHPUnit_Util_Report::render($result, $parameters['reportDirectory']);
     } else {
         $this->printer->codeCoverage(false);
     }
     if ($this->printer) {
         $this->printer->printResult($result);
     }
     return $result;
 }
 /**
  * @param string $buffer
  * @since  Method available since Release 3.1.0
  */
 protected function write($buffer)
 {
     if (PHP_SAPI != 'cli') {
         $buffer = htmlspecialchars($buffer);
     }
     if ($this->printer !== null) {
         $this->printer->write($buffer);
     } else {
         print $buffer;
     }
 }
 protected function printDefectTrace(\PHPUnit_Framework_TestFailure $defect)
 {
     $e = $defect->thrownException();
     if (!$e instanceof \atk4\core\PHPUnit_AgileExceptionWrapper) {
         return parent::printDefectTrace($defect);
     }
     $this->write((string) $e);
     $p = $e->getPrevious();
     if ($p instanceof \atk4\core\Exception or $p instanceof \atk4\dsql\Exception) {
         $this->write($p->getColorfulText());
     }
 }
 public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
 {
     parent::startTestSuite($suite);
     if (!$this->headerPrinted) {
         $header = " ______   __  __     ______     ______     ______     ______     ______    \n" . "/\\  == \\ /\\ \\_\\ \\   /\\  == \\   /\\  ___\\   /\\  ___\\   /\\___  \\   /\\  ___\\   \n" . "\\ \\  _-/ \\ \\  __ \\  \\ \\  __<   \\ \\  __\\   \\ \\  __\\   \\/_/  /__  \\ \\  __\\   \n" . " \\ \\_\\    \\ \\_\\ \\_\\  \\ \\_\\ \\_\\  \\ \\_____\\  \\ \\_____\\   /\\_____\\  \\ \\_____\\ \n" . "  \\/_/     \\/_/\\/_/   \\/_/ /_/   \\/_____/   \\/_____/   \\/_____/   \\/_____/ \n";
         $this->out($header, 'fg-blue', true);
         $this->out(" - - - - - - - - - T E S T   A L L   T H E   T H I N G S - - - - - - - - - ", 'fg-blue', true);
         $this->out('', '', true);
         $this->headerPrinted = true;
     }
     if ($suite->getName() != 'PHPUnit') {
         $this->out("BEGIN SUITE '" . $suite->getName() . "'\n");
     }
 }
 /**
  * called at the initialization of each test suite
  */
 public function startTestSuite(\PHPUnit_Framework_TestSuite $suite)
 {
     parent::startTestSuite($suite);
     if (!$this->headerPrinted) {
         $header = "██████╗ ██╗  ██╗██████╗ ██╗   ██╗███╗   ██╗██╗████████╗\n██╔══██╗██║  ██║██╔══██╗██║   ██║████╗  ██║██║╚══██╔══╝\n██████╔╝███████║██████╔╝██║   ██║██╔██╗ ██║██║   ██║   \n██╔═══╝ ██╔══██║██╔═══╝ ██║   ██║██║╚██╗██║██║   ██║   \n██║     ██║  ██║██║     ╚██████╔╝██║ ╚████║██║   ██║   \n╚═╝     ╚═╝  ╚═╝╚═╝      ╚═════╝ ╚═╝  ╚═══╝╚═╝   ╚═╝  ";
         $this->out($header, 'fg-blue', true);
         $this->out(" - - - - T E S T   A L L   T H E   T H I N G S - - - - ", 'fg-blue', true);
         $this->out('', '', true);
         $this->headerPrinted = true;
     }
     if ($suite->getName() != 'PHPUnit') {
         $this->out("BEGIN SUITE '" . $suite->getName() . "'\n");
     }
 }
Exemple #19
0
 /**
  * {@inheritdoc}
  */
 public function printResult(\PHPUnit_Framework_TestResult $result)
 {
     parent::printResult($result);
     if ($this->browserOutputFile) {
         $contents = file_get_contents($this->browserOutputFile);
         if ($contents) {
             $this->writeNewLine();
             $this->writeWithColor('bg-yellow, fg-black', 'HTML output was generated');
             $this->write($contents);
         }
         // No need to keep the file around any more.
         unlink($this->browserOutputFile);
     }
 }
Exemple #20
0
 protected function printFooter(\PHPUnit_Framework_TestResult $result)
 {
     $this->write('<span class="result">');
     parent::printFooter($result);
     $this->write('</span>');
     $this->write('<table class="timer">');
     $this->write('<tr><th class="title" colspan="2">Long running tests</th></tr>');
     $this->write('<tr><th>Test</th><th>Time</th></tr>');
     foreach (Timer::getLongRunningTests(10) as $testName => $timeTaken) {
         $timeTaken = round($timeTaken, 2) . 's';
         $this->write("<tr><td>{$testName}</td><td>{$timeTaken}</td></td>");
     }
     $this->write('</table>');
     $this->incrementalFlush();
 }
 public function __construct($backtrace, $colors = false)
 {
     $out = null;
     if (php_sapi_name() == 'cli') {
         // prevent headers already sent error when started from CLI
         $out = 'php://stderr';
     }
     parent::__construct($out, false, $colors);
     $this->backtrace = '';
     foreach ($backtrace as $trace) {
         if (isset($trace['file']) && isset($trace['line'])) {
             $this->backtrace .= $trace['file'] . ':' . $trace['line'] . "\n";
         }
     }
 }
 public function endTest(\PHPUnit_Framework_Test $test, $time)
 {
     parent::endTest($test, $time);
     if ($this->debug) {
         foreach ($this->timeColors as $threshold => $color) {
             if ($time >= $threshold) {
                 $timeColor = $color;
                 break;
             }
         }
         $this->write(' ');
         $this->writeWithColor($timeColor, '[' . number_format($time, 3) . 's]', false);
         $this->write(' ');
         $this->writeWithColor('fg-cyan', \PHPUnit_Util_Test::describe($test), true);
     }
 }
 public function printResult(\PHPUnit_Framework_TestResult $result)
 {
     // Standard output
     parent::printResult($result);
     // Capture footer and send to Growl.
     $this->capture = true;
     parent::printFooter($result);
     $this->capture = false;
     if (strstr($this->color, 'red')) {
         $type = "RED";
     } elseif (strstr($this->color, 'green')) {
         $type = "GREEN";
     } else {
         $type = "YELLOW";
     }
     try {
         $this->sendNotify($this->buffer, $type);
     } catch (\Exception $e) {
         $this->write("[growlprinter] Could not send notification.\n" . $e->getMessage());
     }
 }
 /**
  * {@inheritDoc}
  */
 public function __construct($out = null, $verbose = false, $colors = self::COLOR_DEFAULT, $debug = false, $numberOfColumns = 80)
 {
     parent::__construct($out, $verbose, $colors, $debug, $numberOfColumns);
     if ($this->debug) {
         $minLevelOrList = LogLevel::INFO;
     } elseif ($this->verbose) {
         $minLevelOrList = LogLevel::NOTICE;
     } else {
         $minLevelOrList = array(LogLevel::NOTICE, LogLevel::ERROR);
     }
     $console = new \MonologConsoleLogger('ResultPrinter');
     $console->setAcceptedLevels($minLevelOrList);
     $handlers = $console->getHandlers();
     foreach ($handlers as &$handler) {
         // attachs processors only to console handler
         if ($handler instanceof \Monolog\Handler\FilterHandler) {
             // new results presentation when color is supported or not
             $handler->pushProcessor(array($this, 'messageProcessor'));
         }
     }
     $this->setLogger($console);
 }
Exemple #25
0
 /**
  * A test started.
  *
  * @param  PHPUnit_Framework_Test $test
  * @access public
  */
 public function startTest(PHPUnit_Framework_Test $test)
 {
     if ($this->verbose) {
         echo "\n        " . $test->getName();
     }
     $this->_timeStats['startTime'] = microtime(true);
     parent::startTest($test);
 }
Exemple #26
0
 protected function printDefectTrace(PHPUnit_Framework_TestFailure $defect)
 {
     global $CFG;
     parent::printDefectTrace($defect);
     $failedTest = $defect->failedTest();
     $testName = get_class($failedTest);
     $exception = $defect->thrownException();
     $trace = $exception->getTrace();
     if (class_exists('ReflectionClass')) {
         $reflection = new ReflectionClass($testName);
         $file = $reflection->getFileName();
     } else {
         $file = false;
         $dirroot = realpath($CFG->dirroot) . DIRECTORY_SEPARATOR;
         $classpath = realpath("{$CFG->dirroot}/lib/phpunit/classes") . DIRECTORY_SEPARATOR;
         foreach ($trace as $item) {
             if (strpos($item['file'], $dirroot) === 0 and strpos($item['file'], $classpath) !== 0) {
                 if ($content = file_get_contents($item['file'])) {
                     if (preg_match('/class\\s+' . $testName . '\\s+extends/', $content)) {
                         $file = $item['file'];
                         break;
                     }
                 }
             }
         }
     }
     if ($file === false) {
         return;
     }
     $cwd = getcwd();
     if (strpos($file, $cwd) === 0) {
         $file = substr($file, strlen($cwd) + 1);
         $file = testing_cli_fix_directory_separator($file);
     }
     $pathprefix = testing_cli_argument_path('/');
     if ($pathprefix) {
         $pathprefix .= DIRECTORY_SEPARATOR;
     }
     // There is only vendor/bin/phpunit executable. There is no .cmd or .bat files.
     $executable = $pathprefix . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . 'phpunit';
     $executable = testing_cli_fix_directory_separator($executable);
     // Add server arguments to the rerun if passed.
     if (isset($_SERVER['argv'][0])) {
         if (preg_match('/phpunit(\\.bat|\\.cmd)?$/', $_SERVER['argv'][0])) {
             for ($i = 1; $i < count($_SERVER['argv']); $i++) {
                 if (!isset($_SERVER['argv'][$i])) {
                     break;
                 }
                 if (in_array($_SERVER['argv'][$i], array('--colors', '--verbose', '-v', '--debug'))) {
                     $executable .= ' ' . $_SERVER['argv'][$i];
                 } else {
                     if (in_array($_SERVER['argv'][$i], array('-c', '--config'))) {
                         $executable .= ' ' . $_SERVER['argv'][$i] . ' ' . $_SERVER['argv'][++$i];
                     } else {
                         if (strpos($_SERVER['argv'][$i], '--config') === 0) {
                             $executable .= ' ' . $_SERVER['argv'][$i];
                         }
                     }
                 }
             }
         }
     }
     $this->write("\nTo re-run:\n {$executable} {$testName} {$file}\n");
 }
 /**
  * @param  PHPUnit_Framework_Test $suite
  * @param  array                  $arguments
  * @return PHPUnit_Framework_TestResult
  */
 public function doRun(PHPUnit_Framework_Test $suite, array $arguments = array())
 {
     $this->handleConfiguration($arguments);
     if (isset($arguments['bootstrap'])) {
         $GLOBALS['__PHPUNIT_BOOTSTRAP'] = $arguments['bootstrap'];
     }
     if ($arguments['backupGlobals'] === FALSE) {
         $suite->setBackupGlobals(FALSE);
     }
     if ($arguments['backupStaticAttributes'] === TRUE) {
         $suite->setBackupStaticAttributes(TRUE);
     }
     if (is_integer($arguments['repeat'])) {
         $suite = new PHPUnit_Extensions_RepeatedTest($suite, $arguments['repeat'], $arguments['filter'], $arguments['groups'], $arguments['excludeGroups'], $arguments['processIsolation']);
     }
     $result = $this->createTestResult();
     if (!$arguments['convertErrorsToExceptions']) {
         $result->convertErrorsToExceptions(FALSE);
     }
     if (!$arguments['convertNoticesToExceptions']) {
         PHPUnit_Framework_Error_Notice::$enabled = FALSE;
     }
     if (!$arguments['convertWarningsToExceptions']) {
         PHPUnit_Framework_Error_Warning::$enabled = FALSE;
     }
     if ($arguments['stopOnError']) {
         $result->stopOnError(TRUE);
     }
     if ($arguments['stopOnFailure']) {
         $result->stopOnFailure(TRUE);
     }
     if ($arguments['stopOnIncomplete']) {
         $result->stopOnIncomplete(TRUE);
     }
     if ($arguments['stopOnSkipped']) {
         $result->stopOnSkipped(TRUE);
     }
     if ($this->printer === NULL) {
         if (isset($arguments['printer']) && $arguments['printer'] instanceof PHPUnit_Util_Printer) {
             $this->printer = $arguments['printer'];
         } else {
             $this->printer = new PHPUnit_TextUI_ResultPrinter(NULL, $arguments['verbose'], $arguments['colors'], $arguments['debug']);
         }
     }
     if (!$this->printer instanceof PHPUnit_Util_Log_TAP && !self::$versionStringPrinted) {
         $this->printer->write(PHPUnit_Runner_Version::getVersionString() . "\n\n");
         if (isset($arguments['configuration'])) {
             $this->printer->write(sprintf("Configuration read from %s\n\n", $arguments['configuration']->getFilename()));
         }
     }
     foreach ($arguments['listeners'] as $listener) {
         $result->addListener($listener);
     }
     $result->addListener($this->printer);
     if ($this->printer instanceof PHPUnit_TextUI_ResultPrinter) {
         $result->addListener(new PHPUnit_Util_DeprecatedFeature_Logger());
     }
     if (isset($arguments['testdoxHTMLFile'])) {
         $result->addListener(new PHPUnit_Util_TestDox_ResultPrinter_HTML($arguments['testdoxHTMLFile']));
     }
     if (isset($arguments['testdoxTextFile'])) {
         $result->addListener(new PHPUnit_Util_TestDox_ResultPrinter_Text($arguments['testdoxTextFile']));
     }
     if ((isset($arguments['coverageClover']) || isset($arguments['reportDirectory']) || isset($arguments['coveragePHP']) || isset($arguments['coverageText'])) && extension_loaded('xdebug')) {
         $codeCoverage = new PHP_CodeCoverage(NULL, $this->codeCoverageFilter);
         $codeCoverage->setProcessUncoveredFilesFromWhitelist($arguments['addUncoveredFilesFromWhitelist']);
         if (isset($arguments['cacheTokens'])) {
             $codeCoverage->setCacheTokens($arguments['cacheTokens']);
         }
         if (isset($arguments['forceCoversAnnotation'])) {
             $codeCoverage->setForceCoversAnnotation($arguments['forceCoversAnnotation']);
         }
         if (isset($arguments['mapTestClassNameToCoveredClassName'])) {
             $codeCoverage->setMapTestClassNameToCoveredClassName($arguments['mapTestClassNameToCoveredClassName']);
         }
         $result->setCodeCoverage($codeCoverage);
     }
     if (isset($arguments['jsonLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_JSON($arguments['jsonLogfile']));
     }
     if (isset($arguments['tapLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_TAP($arguments['tapLogfile']));
     }
     if (isset($arguments['junitLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_JUnit($arguments['junitLogfile'], $arguments['logIncompleteSkipped']));
     }
     if ($arguments['strict']) {
         $result->strictMode(TRUE);
         $result->setTimeoutForSmallTests($arguments['timeoutForSmallTests']);
         $result->setTimeoutForMediumTests($arguments['timeoutForMediumTests']);
         $result->setTimeoutForLargeTests($arguments['timeoutForLargeTests']);
     }
     $suite->run($result, $arguments['filter'], $arguments['groups'], $arguments['excludeGroups'], $arguments['processIsolation']);
     unset($suite);
     $result->flushListeners();
     if ($this->printer instanceof PHPUnit_TextUI_ResultPrinter) {
         $this->printer->printResult($result);
     }
     if (isset($codeCoverage)) {
         $title = '';
         if (isset($arguments['configuration'])) {
             $loggingConfiguration = $arguments['configuration']->getLoggingConfiguration();
             if (isset($loggingConfiguration['title'])) {
                 $title = $loggingConfiguration['title'];
             }
         }
         if (isset($arguments['coverageClover'])) {
             $this->printer->write("\nWriting code coverage data to XML file, this may take " . 'a moment.');
             $writer = new PHP_CodeCoverage_Report_Clover();
             $writer->process($codeCoverage, $arguments['coverageClover']);
             $this->printer->write("\n");
             unset($writer);
         }
         if (isset($arguments['reportDirectory'])) {
             $this->printer->write("\nGenerating code coverage report, this may take a moment.");
             $writer = new PHP_CodeCoverage_Report_HTML($title, $arguments['reportCharset'], $arguments['reportYUI'], $arguments['reportHighlight'], $arguments['reportLowUpperBound'], $arguments['reportHighLowerBound'], ' and PHPUnit ' . PHPUnit_Runner_Version::id());
             $writer->process($codeCoverage, $arguments['reportDirectory']);
             $this->printer->write("\n");
             unset($writer);
         }
         if (isset($arguments['coveragePHP'])) {
             $this->printer->write("\nSerializing PHP_CodeCoverage object to file, this may take a moment.");
             $writer = new PHP_CodeCoverage_Report_PHP();
             $writer->process($codeCoverage, $arguments['coveragePHP']);
             $this->printer->write("\n");
             unset($writer);
         }
         if (isset($arguments['coverageText'])) {
             $this->printer->write("\nGenerating textual code coverage report, this may take a moment.");
             if ($arguments['coverageText'] == 'php://stdout') {
                 $outputStream = $this->printer;
                 $colors = (bool) $arguments['colors'];
             } else {
                 $outputStream = new PHPUnit_Util_Printer($arguments['coverageText']);
                 $colors = FALSE;
             }
             $writer = new PHP_CodeCoverage_Report_Text($outputStream, $title, $arguments['reportLowUpperBound'], $arguments['reportHighLowerBound'], $arguments['coverageTextShowUncoveredFiles']);
             $writer->process($codeCoverage, $colors);
             $this->printer->write("\n");
         }
     }
     return $result;
 }
 public function printResult(PHPUnit_Framework_TestResult $result)
 {
     parent::printResult($result);
     print $this->outputBuffer;
 }
 /**
  * @param  PHPUnit_Framework_Test $suite
  * @param  array                  $arguments
  *
  * @return PHPUnit_Framework_TestResult
  */
 public function doRun(PHPUnit_Framework_Test $suite, array $arguments = array())
 {
     $this->handleConfiguration($arguments);
     if (isset($arguments['bootstrap'])) {
         $GLOBALS['__PHPUNIT_BOOTSTRAP'] = $arguments['bootstrap'];
     }
     if ($arguments['backupGlobals'] === false) {
         $suite->setBackupGlobals(false);
     }
     if ($arguments['backupStaticAttributes'] === true) {
         $suite->setBackupStaticAttributes(true);
     }
     if (is_integer($arguments['repeat'])) {
         $test = new PHPUnit_Extensions_RepeatedTest($suite, $arguments['repeat'], $arguments['filter'], $arguments['groups'], $arguments['excludeGroups'], $arguments['processIsolation']);
         $suite = new PHPUnit_Framework_TestSuite();
         $suite->addTest($test);
     }
     $result = $this->createTestResult();
     if (!$arguments['convertErrorsToExceptions']) {
         $result->convertErrorsToExceptions(false);
     }
     if (!$arguments['convertNoticesToExceptions']) {
         PHPUnit_Framework_Error_Notice::$enabled = false;
     }
     if (!$arguments['convertWarningsToExceptions']) {
         PHPUnit_Framework_Error_Warning::$enabled = false;
     }
     if ($arguments['stopOnError']) {
         $result->stopOnError(true);
     }
     if ($arguments['stopOnFailure']) {
         $result->stopOnFailure(true);
     }
     if ($arguments['stopOnIncomplete']) {
         $result->stopOnIncomplete(true);
     }
     if ($arguments['stopOnSkipped']) {
         $result->stopOnSkipped(true);
     }
     if ($this->printer === null) {
         if (isset($arguments['printer']) && $arguments['printer'] instanceof PHPUnit_Util_Printer) {
             $this->printer = $arguments['printer'];
         } else {
             $this->printer = new PHPUnit_TextUI_ResultPrinter(null, $arguments['verbose'], $arguments['colors'], $arguments['debug']);
         }
     }
     if (!$this->printer instanceof PHPUnit_Util_Log_TAP) {
         $this->printer->write(PHPUnit_Runner_Version::getVersionString() . "\n\n");
         self::$versionStringPrinted = true;
         if (isset($arguments['configuration'])) {
             $this->printer->write(sprintf("Configuration read from %s\n\n", $arguments['configuration']->getFilename()));
         }
     }
     foreach ($arguments['listeners'] as $listener) {
         $result->addListener($listener);
     }
     $result->addListener($this->printer);
     if ($this->printer instanceof PHPUnit_TextUI_ResultPrinter) {
         $result->addListener(new PHPUnit_Util_DeprecatedFeature_Logger());
     }
     if (isset($arguments['testdoxHTMLFile'])) {
         $result->addListener(new PHPUnit_Util_TestDox_ResultPrinter_HTML($arguments['testdoxHTMLFile']));
     }
     if (isset($arguments['testdoxTextFile'])) {
         $result->addListener(new PHPUnit_Util_TestDox_ResultPrinter_Text($arguments['testdoxTextFile']));
     }
     $codeCoverageReports = 0;
     if (extension_loaded('xdebug')) {
         if (isset($arguments['coverageClover'])) {
             $codeCoverageReports++;
         }
         if (isset($arguments['reportDirectory'])) {
             $codeCoverageReports++;
         }
         if (isset($arguments['coveragePHP'])) {
             $codeCoverageReports++;
         }
         if (isset($arguments['coverageText'])) {
             $codeCoverageReports++;
         }
     }
     if ($codeCoverageReports > 0) {
         $codeCoverage = new PHP_CodeCoverage(null, $this->codeCoverageFilter);
         $codeCoverage->setAddUncoveredFilesFromWhitelist($arguments['addUncoveredFilesFromWhitelist']);
         $codeCoverage->setProcessUncoveredFilesFromWhitelist($arguments['processUncoveredFilesFromWhitelist']);
         if (isset($arguments['forceCoversAnnotation'])) {
             $codeCoverage->setForceCoversAnnotation($arguments['forceCoversAnnotation']);
         }
         if (isset($arguments['mapTestClassNameToCoveredClassName'])) {
             $codeCoverage->setMapTestClassNameToCoveredClassName($arguments['mapTestClassNameToCoveredClassName']);
         }
         $result->setCodeCoverage($codeCoverage);
     }
     if ($codeCoverageReports > 1) {
         if (isset($arguments['cacheTokens'])) {
             $codeCoverage->setCacheTokens($arguments['cacheTokens']);
         }
     }
     if (isset($arguments['jsonLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_JSON($arguments['jsonLogfile']));
     }
     if (isset($arguments['tapLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_TAP($arguments['tapLogfile']));
     }
     if (isset($arguments['junitLogfile'])) {
         $result->addListener(new PHPUnit_Util_Log_JUnit($arguments['junitLogfile'], $arguments['logIncompleteSkipped']));
     }
     if ($arguments['strict']) {
         $result->strictMode(true);
         $result->setTimeoutForSmallTests($arguments['timeoutForSmallTests']);
         $result->setTimeoutForMediumTests($arguments['timeoutForMediumTests']);
         $result->setTimeoutForLargeTests($arguments['timeoutForLargeTests']);
     }
     $suite->run($result, $arguments['filter'], $arguments['groups'], $arguments['excludeGroups'], $arguments['processIsolation']);
     unset($suite);
     $result->flushListeners();
     if ($this->printer instanceof PHPUnit_TextUI_ResultPrinter) {
         $this->printer->printResult($result);
     }
     if (isset($codeCoverage)) {
         if (isset($arguments['coverageClover'])) {
             $this->printer->write("\nGenerating code coverage report in Clover XML format ...");
             $writer = new PHP_CodeCoverage_Report_Clover();
             $writer->process($codeCoverage, $arguments['coverageClover']);
             $this->printer->write(" done\n");
             unset($writer);
         }
         if (isset($arguments['reportDirectory'])) {
             $this->printer->write("\nGenerating code coverage report in HTML format ...");
             $writer = new PHP_CodeCoverage_Report_HTML($arguments['reportCharset'], $arguments['reportHighlight'], $arguments['reportLowUpperBound'], $arguments['reportHighLowerBound'], sprintf(' and <a href="http://phpunit.de/">PHPUnit %s</a>', PHPUnit_Runner_Version::id()));
             $writer->process($codeCoverage, $arguments['reportDirectory']);
             $this->printer->write(" done\n");
             unset($writer);
         }
         if (isset($arguments['coveragePHP'])) {
             $this->printer->write("\nGenerating code coverage report in PHP format ...");
             $writer = new PHP_CodeCoverage_Report_PHP();
             $writer->process($codeCoverage, $arguments['coveragePHP']);
             $this->printer->write(" done\n");
             unset($writer);
         }
         if (isset($arguments['coverageText'])) {
             if ($arguments['coverageText'] == 'php://stdout') {
                 $outputStream = $this->printer;
                 $colors = (bool) $arguments['colors'];
             } else {
                 $outputStream = new PHPUnit_Util_Printer($arguments['coverageText']);
                 $colors = false;
             }
             $writer = new PHP_CodeCoverage_Report_Text($outputStream, $arguments['reportLowUpperBound'], $arguments['reportHighLowerBound'], $arguments['coverageTextShowUncoveredFiles']);
             $writer->process($codeCoverage, $colors);
         }
     }
     return $result;
 }
Exemple #30
0
 public function startTest(\PHPUnit_Framework_Test $test)
 {
     if ($test instanceof Test) {
         parent::startTest($test);
     }
 }