silverstripe-framework/dev/CliTestReporter.php
Sam Minnee b031c8ff8b Added status notifications to cli test runs
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@62912 467b73ca-7a2a-4603-9d3b-597d59a354a9
2008-09-23 03:22:13 +00:00

51 lines
1.3 KiB
PHP

<?php
/**
* Test reporter optimised for CLI (ie, plain-text) output
*/
class CliTestReporter extends SapphireTestReporter {
/**
* Display error bar if it exists
*/
public function writeResults() {
$passCount = 0;
$failCount = 0;
$testCount = 0;
$errorCount = 0;
foreach($this->suiteResults['suites'] as $suite) {
foreach($suite['tests'] as $test) {
$testCount++;
($test['status'] == 1) ? $passCount++ : $failCount++;
}
}
$result = ($failCount > 0) ? 'fail' : 'pass';
echo "\n\n$testCount tests run: $passCount passes, $failCount fails, and 0 exceptions\n\n";
}
public function endTest( PHPUnit_Framework_Test $test, $time) {
// Status indicator, a la PHPUnit
switch($this->currentTest['status']) {
case TEST_FAILURE: echo "F"; break;
case TEST_ERROR: echo "E"; break;
case TEST_INCOMPLETE: echo "I"; break;
case TEST_SUCCESS: echo "."; break;
default: echo "?"; break;
}
parent::endTest($test, $time);
$this->writeTest($this->currentTest);
}
protected function writeTest($test) {
if ($test['status'] != 1) {
echo $this->testNameToPhrase($test['name']) . "\n". $test['message'] . "\n";
echo "In line {$test['exception']['line']} of {$test['exception']['file']}" . "\n\n";
echo Debug::get_rendered_backtrace($test['trace'], true);
echo "\n--------------------\n";
}
}
}