public function run(PHPUnit_Framework_TestResult $result = null)
{
PHPUnit_Framework_Assert::resetCount();
if ($result === NULL) {
$result = new PHPUnit_Framework_TestResult();
}
$this->suite->publishTestArticles();
// Add articles needed by the tests.
$backend = new ParserTestSuiteBackend();
$result->startTest($this);
// Support the transition to PHPUnit 3.5 where PHPUnit_Util_Timer is replaced with PHP_Timer
if (class_exists('PHP_Timer')) {
PHP_Timer::start();
} else {
PHPUnit_Util_Timer::start();
}
$r = false;
try {
# Run the test.
# On failure, the subclassed backend will throw an exception with
# the details.
$pt = new PHPUnitParserTest();
$r = $pt->runTest($this->test['test'], $this->test['input'], $this->test['result'], $this->test['options'], $this->test['config']);
} catch (PHPUnit_Framework_AssertionFailedError $e) {
// PHPUnit_Util_Timer -> PHP_Timer support (see above)
if (class_exists('PHP_Timer')) {
$result->addFailure($this, $e, PHP_Timer::stop());
} else {
$result->addFailure($this, $e, PHPUnit_Util_Timer::stop());
}
} catch (Exception $e) {
// PHPUnit_Util_Timer -> PHP_Timer support (see above)
if (class_exists('PHP_Timer')) {
$result->addFailure($this, $e, PHP_Timer::stop());
} else {
$result->addFailure($this, $e, PHPUnit_Util_Timer::stop());
}
}
// PHPUnit_Util_Timer -> PHP_Timer support (see above)
if (class_exists('PHP_Timer')) {
$result->endTest($this, PHP_Timer::stop());
} else {
$result->endTest($this, PHPUnit_Util_Timer::stop());
}
$backend->recorder->record($this->test['test'], $r);
$this->addToAssertionCount(PHPUnit_Framework_Assert::getCount());
return $result;
}