From fc18b2c78879d8bad8d8be509b8842dcd9350792 Mon Sep 17 00:00:00 2001 From: Sean Harvey Date: Sat, 14 Apr 2012 23:11:54 +1200 Subject: [PATCH] ENHANCEMENT TestReporter now reports incomplete tests properly --- dev/CliTestReporter.php | 29 ++++++++++++++++++++--------- dev/SapphireTestReporter.php | 14 +++++++++++--- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/dev/CliTestReporter.php b/dev/CliTestReporter.php index 3d8432c48..5870f3c14 100644 --- a/dev/CliTestReporter.php +++ b/dev/CliTestReporter.php @@ -14,12 +14,19 @@ class CliTestReporter extends SapphireTestReporter { $passCount = 0; $failCount = 0; $testCount = 0; + $incompleteCount = 0; $errorCount = 0; - + foreach($this->suiteResults['suites'] as $suite) { foreach($suite['tests'] as $test) { $testCount++; - ($test['status'] == 1) ? $passCount++ : $failCount++; + if($test['status'] == 2) { + $incompleteCount++; + } elseif($test['status'] === 1) { + $passCount++; + } else { + $failCount++; + } } } @@ -29,8 +36,9 @@ class CliTestReporter extends SapphireTestReporter { } else { echo SS_Cli::text(" AT LEAST ONE FAILURE ", "white", "red"); } - echo "\n\n$testCount tests run: " . SS_Cli::text("$passCount passes", null) . ", ". SS_Cli::text("$failCount fails", null) . ", and 0 exceptions\n"; - + + echo sprintf("\n\n%d tests run: %s, %s, and %s\n", $testCount, SS_Cli::text("$passCount passes"), SS_Cli::text("$failCount failures"), SS_Cli::text("$incompleteCount incomplete")); + if(function_exists('memory_get_peak_usage')) { echo "Maximum memory usage: " . number_format(memory_get_peak_usage()/(1024*1024), 1) . "M\n\n"; } @@ -72,7 +80,6 @@ class CliTestReporter extends SapphireTestReporter { protected function writeTest($test) { if ($test['status'] != 1) { - $filteredTrace = array(); $ignoredClasses = array('TestRunner'); foreach($test['trace'] as $item) { @@ -88,11 +95,15 @@ class CliTestReporter extends SapphireTestReporter { && $item['function'] == 'run') break; } - - echo "\n\n" . SS_Cli::text($this->testNameToPhrase($test['name']) . "\n". $test['message'] . "\n", 'red', null, true); - echo SS_Backtrace::get_rendered_backtrace($filteredTrace, true); + + if( $test['status'] == 2) { + echo "\n" . SS_Cli::text($this->testNameToPhrase($test['name']) . "\n" . $test['message'] . "\n", 'yellow', null, true); + } else { + echo "\n" . SS_Cli::text($this->testNameToPhrase($test['name']) . "\n". $test['message'] . "\n", 'red', null, true); + echo SS_Backtrace::get_rendered_backtrace($filteredTrace, true); + } echo "\n--------------------\n"; } } -} \ No newline at end of file +} diff --git a/dev/SapphireTestReporter.php b/dev/SapphireTestReporter.php index 78f05b156..4906ae3a4 100644 --- a/dev/SapphireTestReporter.php +++ b/dev/SapphireTestReporter.php @@ -274,16 +274,24 @@ class SapphireTestReporter implements PHPUnit_Framework_TestListener { /** * Display error bar if it exists */ - public function writeResults() { + public function writeResults() { $passCount = 0; $failCount = 0; $testCount = 0; + $incompleteCount = 0; $errorCount = 0; foreach($this->suiteResults['suites'] as $suite) { foreach($suite['tests'] as $test) { $testCount++; - ($test['status'] == 1) ? $passCount++ : $failCount++; + if($test['status'] == 2) { + $incompleteCount++; + } elseif($test['status'] == 1) { + $passCount++; + } else { + $failCount++; + } + if ($test['status'] != 1) { echo "
⊗ ". $this->testNameToPhrase($test['name']) ."
"; echo "
".htmlentities($test['message'], ENT_COMPAT, 'UTF-8')."

"; @@ -294,7 +302,7 @@ class SapphireTestReporter implements PHPUnit_Framework_TestListener { } $result = ($failCount > 0) ? 'fail' : 'pass'; echo "
"; - echo "

$testCount tests run: $passCount passes, $failCount fails, and 0 exceptions

"; + echo "

$testCount tests run: $passCount passes, $failCount failures, and $incompleteCount incomplete

"; echo "
"; }