public function beforeExample(ExampleEvent $event) { if (!$this->enabled) { return; } $example = $event->getExample(); $resource = $example->getSpecification()->getResource(); $this->coverage->filter()->setWhitelistedFiles([]); $this->coverage->filter()->addFileToWhitelist($resource->getSrcFilename()); $this->coverage->start($resource->getSrcClassname()); }
/** * Start coverage proccess */ protected function _start() { if (!$this->_isStart && $this->_coverage) { $this->_isStart = true; $this->_coverage->start($this->_hash, true); } }
/** * @param Closure $callback * @return mixed */ public function init(\Closure $callback) { if ($this->_coverage) { $this->_coverage->start($this->_covHash, true); } return $callback(); }
protected function getCoverageForFileWithIgnoredLines() { $coverage = new PHP_CodeCoverage($this->setUpXdebugStubForFileWithIgnoredLines(), new PHP_CodeCoverage_Filter()); $coverage->start('FileWithIgnoredLines', TRUE); $coverage->stop(); return $coverage; }
protected function getCoverageForClassWithAnonymousFunction() { $coverage = new PHP_CodeCoverage($this->setUpXdebugStubForClassWithAnonymousFunction(), new PHP_CodeCoverage_Filter()); $coverage->start('ClassWithAnonymousFunction', true); $coverage->stop(); return $coverage; }
/** * Renders the screen for the function "Run tests" which shows and runs the actual unit tests. * * @return void */ protected function renderRunningTest() { $this->setPhpUnitErrorHandler(); $selectedTestableKey = $this->getAndSaveSelectedTestableKey(); $this->renderTestingHeader($selectedTestableKey); $testablesToProcess = $this->collectTestablesToProcess($selectedTestableKey); $this->loadAllFilesContainingTestCasesForTestables($testablesToProcess); $testSuite = $this->createTestSuiteWithAllTestCases(); $testResult = new PHPUnit_Framework_TestResult(); $this->configureTestListener(); $testResult->addListener($this->testListener); $this->testStatistics = t3lib_div::makeInstance('Tx_Phpunit_BackEnd_TestStatistics'); $this->testStatistics->start(); if ($this->shouldCollectCodeCoverageInformation()) { $this->coverage = t3lib_div::makeInstance('PHP_CodeCoverage'); $this->coverage->start('phpunit'); } if ($this->request->hasString(Tx_Phpunit_Interface_Request::PARAMETER_KEY_TEST)) { $this->runSingleTest($testSuite, $testResult); } elseif ($this->request->hasString(Tx_Phpunit_Interface_Request::PARAMETER_KEY_TESTCASE)) { $this->runTestCase($testSuite, $testResult); } else { $this->runAllTests($testSuite, $testResult); } $this->testStatistics->stop(); $this->renderTestStatistics($testResult); $this->renderReRunButton(); if ($this->shouldCollectCodeCoverageInformation()) { $this->renderCodeCoverage(); } }
public function start() { $this->fork(); $coverage = new PHP_CodeCoverage(); $coverage->start('child_process'); register_shutdown_function(array($this, 'shutdown'), $coverage); $this->waitChild(); }
function __begin_coverage() { global $__coverage; if (isset($__coverage)) { return; } if (!getenv("TEST_COVERAGE")) { return; } require_once "PHP/CodeCoverage.php"; require_once "PHP/CodeCoverage/Driver.php"; require_once "PHP/CodeCoverage/Driver/Xdebug.php"; require_once "PHP/CodeCoverage/Filter.php"; require_once "PHP/CodeCoverage/Util.php"; require_once "File/Iterator/Facade.php"; require_once "File/Iterator/Factory.php"; require_once "File/Iterator.php"; $__coverage = new PHP_CodeCoverage(); $__coverage->start('test'); $__coverage->filter()->addDirectoryToWhitelist(realpath(dirname(__FILE__) . "/../Modyllic")); register_shutdown_function('__end_coverage'); }
/** * @BeforeScenario */ public function startCoverage(BeforeScenarioScope $scope) { self::$coverage->start($this->getCoverageKeyFromScope($scope)); }
/** * Starts coverage information collection for a test. * * @param string $testName Test name. * @return void */ public function startCoverageCollector($testName) { if (isset($this->coverage)) { $this->coverage->start($testName); } }
/** * Runs a TestCase. * * @param PHPUnit_Framework_Test $test */ public function run(PHPUnit_Framework_Test $test) { PHPUnit_Framework_Assert::resetCount(); $error = FALSE; $failure = FALSE; $incomplete = FALSE; $skipped = FALSE; $this->startTest($test); $errorHandlerSet = FALSE; if ($this->convertErrorsToExceptions) { $oldErrorHandler = set_error_handler(array('PHPUnit_Util_ErrorHandler', 'handleError'), E_ALL | E_STRICT); if ($oldErrorHandler === NULL) { $errorHandlerSet = TRUE; } else { restore_error_handler(); } } if (self::$xdebugLoaded === NULL) { self::$xdebugLoaded = extension_loaded('xdebug'); self::$useXdebug = self::$xdebugLoaded; } $useXdebug = self::$useXdebug && $this->codeCoverage !== NULL && !$test instanceof PHPUnit_Extensions_SeleniumTestCase && !$test instanceof PHPUnit_Framework_Warning; if ($useXdebug) { // We need to blacklist test source files when no whitelist is used. if (!$this->codeCoverage->filter()->hasWhitelist()) { $classes = PHPUnit_Util_Class::getHierarchy(get_class($test), TRUE); foreach ($classes as $class) { $this->codeCoverage->filter()->addFileToBlacklist($class->getFileName()); } } $this->codeCoverage->start($test); } PHP_Timer::start(); try { if (!$test instanceof PHPUnit_Framework_Warning && $this->strictMode && extension_loaded('pcntl') && class_exists('PHP_Invoker')) { switch ($test->getSize()) { case PHPUnit_Util_Test::SMALL: $_timeout = $this->timeoutForSmallTests; break; case PHPUnit_Util_Test::MEDIUM: $_timeout = $this->timeoutForMediumTests; break; case PHPUnit_Util_Test::LARGE: $_timeout = $this->timeoutForLargeTests; break; } $invoker = new PHP_Invoker(); $invoker->invoke(array($test, 'runBare'), array(), $_timeout); } else { $test->runBare(); } } catch (PHPUnit_Framework_AssertionFailedError $e) { $failure = TRUE; if ($e instanceof PHPUnit_Framework_IncompleteTestError) { $incomplete = TRUE; } else { if ($e instanceof PHPUnit_Framework_SkippedTestError) { $skipped = TRUE; } } } catch (Exception $e) { $error = TRUE; } $time = PHP_Timer::stop(); $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount()); if ($this->strictMode && $test->getNumAssertions() == 0) { $incomplete = TRUE; } if ($useXdebug) { try { $this->codeCoverage->stop(!$incomplete && !$skipped); } catch (PHP_CodeCoverage_Exception $cce) { $error = TRUE; if (!isset($e)) { $e = $cce; } } } if ($errorHandlerSet === TRUE) { restore_error_handler(); } if ($error === TRUE) { $this->addError($test, $e, $time); } else { if ($failure === TRUE) { $this->addFailure($test, $e, $time); } else { if ($this->strictMode && $test->getNumAssertions() == 0) { $this->addFailure($test, new PHPUnit_Framework_IncompleteTestError('This test did not perform any assertions'), $time); } else { if ($this->strictMode && $test->hasOutput()) { $this->addFailure($test, new PHPUnit_Framework_OutputError(sprintf('This test printed output: %s', $test->getActualOutput())), $time); } } } } $this->endTest($test, $time); }
<?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', '1'); if (function_exists('xdebug_get_code_coverage')) { if (@(include 'PHP/CodeCoverage/Autoload.php')) { $dir = dirname(__FILE__); $file = "{$dir}/coverage.state"; if (file_exists($file)) { $coverage = unserialize(file_get_contents($file)); } else { $coverage = new PHP_CodeCoverage(); } $trace = debug_backtrace(); $name = basename($trace[0]['file']); $coverage->start($name); register_shutdown_function('end_coverage'); } } function end_coverage() { $GLOBALS['coverage']->stop(); $dir = dirname(__FILE__); $fh = fopen("{$dir}/coverage.state", 'w'); fwrite($fh, serialize($GLOBALS['coverage'])); fclose($fh); } $dir = dirname(__FILE__); include $dir . '/testmore.php'; include $dir . '/../www/include/init.php'; $GLOBALS['log_handlers']['error'] = array('test_wrapper');
/** * Runs a TestCase. * * @param PHPUnit_Framework_Test $test */ public function run(PHPUnit_Framework_Test $test) { PHPUnit_Framework_Assert::resetCount(); $error = FALSE; $failure = FALSE; $incomplete = FALSE; $skipped = FALSE; $this->startTest($test); $errorHandlerSet = FALSE; if ($this->convertErrorsToExceptions) { $oldErrorHandler = set_error_handler(array('PHPUnit_Util_ErrorHandler', 'handleError'), E_ALL | E_STRICT); if ($oldErrorHandler === NULL) { $errorHandlerSet = TRUE; } else { restore_error_handler(); } } if (self::$xdebugLoaded === NULL) { self::$xdebugLoaded = extension_loaded('xdebug'); self::$useXdebug = self::$xdebugLoaded; } $useXdebug = self::$useXdebug && $this->codeCoverage !== NULL && !$test instanceof PHPUnit_Extensions_SeleniumTestCase && !$test instanceof PHPUnit_Framework_Warning; if ($useXdebug) { $this->codeCoverage->start($test); } PHP_Timer::start(); try { $test->runBare(); } catch (PHPUnit_Framework_AssertionFailedError $e) { $failure = TRUE; if ($e instanceof PHPUnit_Framework_IncompleteTestError) { $incomplete = TRUE; } else { if ($e instanceof PHPUnit_Framework_SkippedTestError) { $skipped = TRUE; } } } catch (Exception $e) { $error = TRUE; } $time = PHP_Timer::stop(); $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount()); if ($this->strictMode && $test->getNumAssertions() == 0) { $incomplete = TRUE; } if ($useXdebug) { try { $this->codeCoverage->stop(!$incomplete && !$skipped); } catch (PHP_CodeCoverage_Exception $cce) { $error = TRUE; if (!isset($e)) { $e = $cce; } } } if ($errorHandlerSet === TRUE) { restore_error_handler(); } if ($error === TRUE) { $this->addError($test, $e, $time); } else { if ($failure === TRUE) { $this->addFailure($test, $e, $time); } else { if ($this->strictMode && $test->getNumAssertions() == 0) { $this->addFailure($test, new PHPUnit_Framework_IncompleteTestError('This test did not perform any assertions'), $time); } else { if ($this->strictMode && $test->hasOutput()) { $this->addFailure($test, new PHPUnit_Framework_OutputError(sprintf('This test printed output: %s', $test->getActualOutput())), $time); } } } } $this->endTest($test, $time); }
/** * Before Scenario/Outline Example hook * * @param \Behat\Behat\EventDispatcher\Event\ScenarioTested $event */ public function beforeScenario(ScenarioTested $event) { $node = $event->getScenario(); $id = $event->getFeature()->getFile() . ':' . $node->getLine(); $this->coverage->start($id); }
$testEnv = true; ob_start(); if (!isset($opt['deployed'])) { include realpath(__DIR__ . '/fmt.src.php'); } else { include realpath(__DIR__ . '/../fmt.php'); } ob_end_clean(); echo 'Running tests...', PHP_EOL; $brokenTests = []; $cases = glob(__DIR__ . '/tests/' . $testNumber . '*.in'); $count = 0; $bailOut = false; foreach ($cases as $caseIn) { ++$count; $isCoverage && $coverage->start($caseIn); $fmt = new CodeFormatter(); $caseOut = str_replace('.in', '.out', $caseIn); $content = file_get_contents($caseIn); $tokens = token_get_all($content); $specialPasses = false; foreach ($tokens as $token) { list($id, $text) = getToken($token); if (T_COMMENT == $id && '//skipHHVM' == substr($text, 0, 10)) { $version = str_replace('//skipHHVM', '', $text); if ($isHHVM) { echo 'S'; continue 2; } } elseif (!$shortTagEnabled && T_INLINE_HTML == $id && false !== strpos($text, '//skipShortTag')) { echo 'S';
/** * Start code coverage * * @param string $title */ public function start($title = 'Behat Coverage') { $this->coverage->start($title); }
/** * @covers PHP_CodeCoverage::start * @expectedException InvalidArgumentException */ public function testStartThrowsExceptionForInvalidArgument() { $coverage = new PHP_CodeCoverage(); $coverage->start(NULL, NULL); }
<?php use JoeFallon\KissTest\UnitTest; require 'config/main.php'; /**************************************************************************** * Code Coverage Start ****************************************************************************/ $filter = new PHP_CodeCoverage_Filter(); $filter->addDirectoryToBlacklist(realpath('./')); $filter->addDirectoryToBlacklist(realpath('../vendor')); $coverage = new PHP_CodeCoverage(null, $filter); $coverage->start('All Tests'); /**************************************************************************** * Unit Tests ****************************************************************************/ new \tests\JoeFallon\PhpTime\ChronographTests(); new \tests\JoeFallon\PhpTime\DaysTests(); new \tests\JoeFallon\PhpTime\MonthsTests(); new \tests\JoeFallon\PhpTime\MySqlDateTimeTests(); UnitTest::getAllUnitTestsSummary(); /**************************************************************************** * Code Coverage Stop ****************************************************************************/ $coverage->stop(); $writer = new PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, realpath('../cov'));
protected function getCoverageForClassWithAnonymousFunction() { $filter = new PHP_CodeCoverage_Filter(); $filter->addFileToWhitelist(TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php'); $coverage = new PHP_CodeCoverage($this->setUpXdebugStubForClassWithAnonymousFunction(), $filter); $coverage->start('ClassWithAnonymousFunction', true); $coverage->stop(); return $coverage; }
/** * @param string $suiteName */ public function startRecordingCodeUsageWithTestName($suiteName) { $this->codeCoverageMonitor->start($suiteName); }
public function start($id, $clear = false) { if ($this->isEnabled()) { @$this->coverage->start($id, $clear); } }
} } } } if (count($files) === 0) { $files = Tests::getAll(); } switch ($command) { case 'list': Testrunner::search($files); break; case 'check': if (in_array('coverage', $options)) { $coverage = new PHP_CodeCoverage(); $coverage->filter()->addDirectoryToWhitelist('src'); $coverage->start('Testrunner'); } $result = Testrunner::compare($files); if (in_array('coverage', $options)) { $coverage->stop(); $writer = new PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, 'runner.xml'); echo "\nCoverage saved as runner.xml\n\n"; } if (!$result) { echo "[0;31mTestrunner failed, please fix or rebase before building or deploying![0m\n\n"; if (in_array('show', $options)) { echo file_get_contents('runner.log') . "\n\n"; echo "Done!\n\n"; } exit(1);
<?php require_once 'PHP/CodeCoverage/Autoload.php'; $coverage = new PHP_CodeCoverage(); $filter = $coverage->filter(); $filter->addFileToBlacklist(__FILE__); $filter->addFileToBlacklist(dirname(__FILE__) . '/auto_append.php'); $coverage->start($_SERVER['SCRIPT_FILENAME']);
/** * Handle the test.start event. */ public function onTestStart(TestInterface $test) { $this->coverage->start($test->getTitle()); }
/** * Runs a TestCase. * * @param PHPUnit_Framework_Test $test */ public function run(PHPUnit_Framework_Test $test) { PHPUnit_Framework_Assert::resetCount(); $error = false; $failure = false; $incomplete = false; $risky = false; $skipped = false; $this->startTest($test); $errorHandlerSet = false; if ($this->convertErrorsToExceptions) { $oldErrorHandler = set_error_handler(array('PHPUnit_Util_ErrorHandler', 'handleError'), E_ALL | E_STRICT); if ($oldErrorHandler === null) { $errorHandlerSet = true; } else { restore_error_handler(); } } $collectCodeCoverage = $this->codeCoverage !== null && !$test instanceof PHPUnit_Extensions_SeleniumTestCase && !$test instanceof PHPUnit_Framework_Warning; if ($collectCodeCoverage) { // We need to blacklist test source files when no whitelist is used. if (!$this->codeCoverage->filter()->hasWhitelist()) { $classes = $this->getHierarchy(get_class($test), true); foreach ($classes as $class) { $this->codeCoverage->filter()->addFileToBlacklist($class->getFileName()); } } $this->codeCoverage->start($test); } PHP_Timer::start(); try { if (!$test instanceof PHPUnit_Framework_Warning && $this->beStrictAboutTestSize && extension_loaded('pcntl') && class_exists('PHP_Invoker')) { switch ($test->getSize()) { case PHPUnit_Util_Test::SMALL: $_timeout = $this->timeoutForSmallTests; break; case PHPUnit_Util_Test::MEDIUM: $_timeout = $this->timeoutForMediumTests; break; case PHPUnit_Util_Test::LARGE: $_timeout = $this->timeoutForLargeTests; break; } $invoker = new PHP_Invoker(); $invoker->invoke(array($test, 'runBare'), array(), $_timeout); } else { $test->runBare(); } } catch (PHPUnit_Framework_AssertionFailedError $e) { $failure = true; if ($e instanceof PHPUnit_Framework_RiskyTestError) { $risky = true; } elseif ($e instanceof PHPUnit_Framework_IncompleteTestError) { $incomplete = true; } elseif ($e instanceof PHPUnit_Framework_SkippedTestError) { $skipped = true; } } catch (PHPUnit_Framework_Exception $e) { $error = true; } catch (Exception $e) { $e = new PHPUnit_Framework_ExceptionWrapper($e); $error = true; } $time = PHP_Timer::stop(); $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount()); if ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() == 0) { $risky = true; } if ($collectCodeCoverage) { $append = !$risky && !$incomplete && !$skipped; $linesToBeCovered = array(); $linesToBeUsed = array(); if ($append && $test instanceof PHPUnit_Framework_TestCase) { $linesToBeCovered = PHPUnit_Util_Test::getLinesToBeCovered(get_class($test), $test->getName(false)); $linesToBeUsed = PHPUnit_Util_Test::getLinesToBeUsed(get_class($test), $test->getName(false)); } try { $this->codeCoverage->stop($append, $linesToBeCovered, $linesToBeUsed); } catch (PHP_CodeCoverage_Exception_UnintentionallyCoveredCode $cce) { $this->addFailure($test, new PHPUnit_Framework_UnintentionallyCoveredCodeError('This test executed code that is not listed as code to be covered or used:' . PHP_EOL . $cce->getMessage()), $time); } catch (PHPUnit_Framework_InvalidCoversTargetException $cce) { $this->addFailure($test, new PHPUnit_Framework_InvalidCoversTargetError($cce->getMessage()), $time); } catch (PHP_CodeCoverage_Exception $cce) { $error = true; if (!isset($e)) { $e = $cce; } } } if ($errorHandlerSet === true) { restore_error_handler(); } if ($error === true) { $this->addError($test, $e, $time); } elseif ($failure === true) { $this->addFailure($test, $e, $time); } elseif ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() == 0) { $this->addFailure($test, new PHPUnit_Framework_RiskyTestError('This test did not perform any assertions'), $time); } elseif ($this->beStrictAboutOutputDuringTests && $test->hasOutput()) { $this->addFailure($test, new PHPUnit_Framework_OutputError(sprintf('This test printed output: %s', $test->getActualOutput())), $time); } elseif ($this->beStrictAboutTodoAnnotatedTests && $test instanceof PHPUnit_Framework_TestCase) { $annotations = $test->getAnnotations(); if (isset($annotations['method']['todo'])) { $this->addFailure($test, new PHPUnit_Framework_RiskyTestError('Test method is annotated with @todo'), $time); } } $this->endTest($test, $time); }
/** * Main method. */ public static function main() { $input = new ezcConsoleInput(); $input->registerOption(new ezcConsoleOption('', 'clover', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'html', ezcConsoleInput::TYPE_STRING)); $input->registerOption(new ezcConsoleOption('', 'blacklist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'whitelist', ezcConsoleInput::TYPE_STRING, array(), TRUE)); $input->registerOption(new ezcConsoleOption('', 'merge', ezcConsoleInput::TYPE_NONE, FALSE)); $input->registerOption(new ezcConsoleOption('h', 'help', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); $input->registerOption(new ezcConsoleOption('v', 'version', ezcConsoleInput::TYPE_NONE, NULL, FALSE, '', '', array(), array(), FALSE, FALSE, TRUE)); try { $input->process(); } catch (ezcConsoleOptionException $e) { print $e->getMessage() . "\n"; exit(1); } if ($input->getOption('help')->value) { self::showHelp(); exit(0); } else { if ($input->getOption('version')->value) { self::printVersionString(); exit(0); } } $arguments = $input->getArguments(); $clover = $input->getOption('clover')->value; $html = $input->getOption('html')->value; $blacklist = $input->getOption('blacklist')->value; $whitelist = $input->getOption('whitelist')->value; $merge = $input->getOption('merge')->value; if (count($arguments) == 1) { self::printVersionString(); $coverage = new PHP_CodeCoverage(); $filter = $coverage->filter(); if (empty($whitelist)) { $c = new ReflectionClass('ezcBase'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); $c = new ReflectionClass('ezcConsoleInput'); $filter->addDirectoryToBlacklist(dirname($c->getFileName())); foreach ($blacklist as $item) { if (is_dir($item)) { $filter->addDirectoryToBlacklist($item); } else { if (is_file($item)) { $filter->addFileToBlacklist($item); } } } } else { foreach ($whitelist as $item) { if (is_dir($item)) { $filter->addDirectoryToWhitelist($item); } else { if (is_file($item)) { $filter->addFileToWhitelist($item); } } } } if (!$merge) { $coverage->start('phpcov'); require $arguments[0]; $coverage->stop(); } else { $facade = new File_Iterator_Facade(); $result = $facade->getFilesAsArray($arguments[0], '.cov'); foreach ($files as $file) { $coverage->merge(unserialize(file_get_contents($file))); } } if ($clover) { $writer = new PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, $clover); } if ($html) { $writer = new PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, $html); } } else { self::showHelp(); exit(1); } }
/** * Runs a TestCase. * * @param PHPUnit_Framework_Test $test */ public function run(PHPUnit_Framework_Test $test) { PHPUnit_Framework_Assert::resetCount(); $error = false; $failure = false; $warning = false; $incomplete = false; $risky = false; $skipped = false; $this->startTest($test); $errorHandlerSet = false; if ($this->convertErrorsToExceptions) { $oldErrorHandler = set_error_handler(['PHPUnit_Util_ErrorHandler', 'handleError'], E_ALL | E_STRICT); if ($oldErrorHandler === null) { $errorHandlerSet = true; } else { restore_error_handler(); } } $collectCodeCoverage = $this->codeCoverage !== null && !$test instanceof PHPUnit_Framework_WarningTestCase; if ($collectCodeCoverage) { $this->codeCoverage->start($test); } $monitorFunctions = $this->beStrictAboutResourceUsageDuringSmallTests && !$test instanceof PHPUnit_Framework_WarningTestCase && $test->getSize() == PHPUnit_Util_Test::SMALL && function_exists('xdebug_start_function_monitor'); if ($monitorFunctions) { xdebug_start_function_monitor(ResourceOperations::getFunctions()); } PHP_Timer::start(); try { if (!$test instanceof PHPUnit_Framework_WarningTestCase && $test->getSize() != PHPUnit_Util_Test::UNKNOWN && $this->enforceTimeLimit && extension_loaded('pcntl') && class_exists('PHP_Invoker')) { switch ($test->getSize()) { case PHPUnit_Util_Test::SMALL: $_timeout = $this->timeoutForSmallTests; break; case PHPUnit_Util_Test::MEDIUM: $_timeout = $this->timeoutForMediumTests; break; case PHPUnit_Util_Test::LARGE: $_timeout = $this->timeoutForLargeTests; break; } $invoker = new PHP_Invoker(); $invoker->invoke([$test, 'runBare'], [], $_timeout); } else { $test->runBare(); } } catch (PHPUnit_Framework_AssertionFailedError $e) { $failure = true; if ($e instanceof PHPUnit_Framework_RiskyTestError) { $risky = true; } elseif ($e instanceof PHPUnit_Framework_IncompleteTestError) { $incomplete = true; } elseif ($e instanceof PHPUnit_Framework_SkippedTestError) { $skipped = true; } } catch (PHPUnit_Framework_Warning $e) { $warning = true; } catch (PHPUnit_Framework_Exception $e) { $error = true; } catch (Throwable $e) { $e = new PHPUnit_Framework_ExceptionWrapper($e); $error = true; } catch (Exception $e) { $e = new PHPUnit_Framework_ExceptionWrapper($e); $error = true; } $time = PHP_Timer::stop(); $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount()); if ($monitorFunctions) { $blacklist = new PHPUnit_Util_Blacklist(); $functions = xdebug_get_monitored_functions(); xdebug_stop_function_monitor(); foreach ($functions as $function) { if (!$blacklist->isBlacklisted($function['filename'])) { $this->addFailure($test, new PHPUnit_Framework_RiskyTestError(sprintf('%s() used in %s:%s', $function['function'], $function['filename'], $function['lineno'])), $time); } } } if ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() == 0) { $risky = true; } if ($collectCodeCoverage) { $append = !$risky && !$incomplete && !$skipped; $linesToBeCovered = []; $linesToBeUsed = []; if ($append && $test instanceof PHPUnit_Framework_TestCase) { $linesToBeCovered = PHPUnit_Util_Test::getLinesToBeCovered(get_class($test), $test->getName(false)); $linesToBeUsed = PHPUnit_Util_Test::getLinesToBeUsed(get_class($test), $test->getName(false)); } try { $this->codeCoverage->stop($append, $linesToBeCovered, $linesToBeUsed); } catch (PHP_CodeCoverage_UnintentionallyCoveredCodeException $cce) { $this->addFailure($test, new PHPUnit_Framework_UnintentionallyCoveredCodeError('This test executed code that is not listed as code to be covered or used:' . PHP_EOL . $cce->getMessage()), $time); } catch (PHPUnit_Framework_InvalidCoversTargetException $cce) { $this->addFailure($test, new PHPUnit_Framework_InvalidCoversTargetError($cce->getMessage()), $time); } catch (PHP_CodeCoverage_Exception $cce) { $error = true; if (!isset($e)) { $e = $cce; } } } if ($errorHandlerSet === true) { restore_error_handler(); } if ($error === true) { $this->addError($test, $e, $time); } elseif ($failure === true) { $this->addFailure($test, $e, $time); } elseif ($warning === true) { $this->addWarning($test, $e, $time); } elseif ($this->beStrictAboutTestsThatDoNotTestAnything && $test->getNumAssertions() == 0) { $this->addFailure($test, new PHPUnit_Framework_RiskyTestError('This test did not perform any assertions'), $time); } elseif ($this->beStrictAboutOutputDuringTests && $test->hasOutput()) { $this->addFailure($test, new PHPUnit_Framework_OutputError(sprintf('This test printed output: %s', $test->getActualOutput())), $time); } elseif ($this->beStrictAboutTodoAnnotatedTests && $test instanceof PHPUnit_Framework_TestCase) { $annotations = $test->getAnnotations(); if (isset($annotations['method']['todo'])) { $this->addFailure($test, new PHPUnit_Framework_RiskyTestError('Test method is annotated with @todo'), $time); } } $this->endTest($test, $time); }
$coverage->filter()->addDirectoryToWhitelist(__DIR__ . '/src'); $coverage->filter()->removeFileFromWhitelist(__DIR__ . '/src/Dsl.php'); $coverage->start('peridot'); }); $emitter->on('runner.end', function () use($coverage) { $coverage->stop(); $writer = new PHP_CodeCoverage_Report_HTML(); $writer->process($coverage, __DIR__ . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'report'); }); } if ($codeCoverage == 'clover' && $shouldCover) { $coverage = new PHP_CodeCoverage(); $emitter->on('runner.start', function () use($coverage) { $coverage->filter()->addDirectoryToWhitelist(__DIR__ . '/src'); $coverage->filter()->removeFileFromWhitelist(__DIR__ . '/src/Dsl.php'); $coverage->start('peridot'); }); $emitter->on('runner.end', function () use($coverage) { $coverage->stop(); $writer = new PHP_CodeCoverage_Report_Clover(); $writer->process($coverage, __DIR__ . DIRECTORY_SEPARATOR . 'build' . DIRECTORY_SEPARATOR . 'logs' . DIRECTORY_SEPARATOR . 'clover.xml'); }); } $emitter->on('peridot.start', function (Environment $env) use(&$coverage) { $definition = $env->getDefinition(); $definition->option("banner", null, InputOption::VALUE_REQUIRED, "Custom banner text"); $definition->getArgument('path')->setDefault('specs'); }); /** * Demonstrate registering a custom reporter via peridot config */
/** * @covers PHP_CodeCoverage::start * @expectedException PHP_CodeCoverage_Exception */ public function testStartThrowsExceptionForInvalidArgument() { $this->coverage->start(null, array(), null); }
public function run() { $coverage = new PHP_CodeCoverage(); $coverage->start('child_process'); register_shutdown_function(array($this, 'shutdown'), $coverage); }