public function PHPUnit_Framework_TestResult::run in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/phpunit/phpunit/src/Framework/TestResult.php \PHPUnit_Framework_TestResult::run()
Runs a TestCase.
Parameters
PHPUnit_Framework_Test $test:
File
- vendor/
phpunit/ phpunit/ src/ Framework/ TestResult.php, line 531
Class
- PHPUnit_Framework_TestResult
- A TestResult collects the results of executing a test case.
Code
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 && $test
->getSize() != PHPUnit_Util_Test::UNKNOWN && $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 (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 ($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);
}