/** * @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(); }
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"); }
/** * 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(); } }
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; }
/** * @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"; } } }
/** * @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"); } }
/** * {@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); } }
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); }
/** * 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); }
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; }
public function startTest(\PHPUnit_Framework_Test $test) { if ($test instanceof Test) { parent::startTest($test); } }