diff --git a/src/Concise/Console/Command.php b/src/Concise/Console/Command.php index 329a3832..f93abf36 100644 --- a/src/Concise/Console/Command.php +++ b/src/Concise/Console/Command.php @@ -5,12 +5,19 @@ use Concise\Console\TestRunner\DefaultTestRunner; use Concise\Console\ResultPrinter\ResultPrinterProxy; use Concise\Console\ResultPrinter\DefaultResultPrinter; +use Concise\Console\ResultPrinter\CIResultPrinter; class Command extends \PHPUnit_TextUI_Command { + protected $ci = false; + protected function createRunner() { - $resultPrinter = new DefaultResultPrinter(); + if ($this->ci) { + $resultPrinter = new CIResultPrinter(); + } else { + $resultPrinter = new DefaultResultPrinter(); + } if (array_key_exists('verbose', $this->arguments) && $this->arguments['verbose']) { $resultPrinter->setVerbose(true); } @@ -26,6 +33,7 @@ protected function createRunner() protected function handleArguments(array $argv) { $this->longOptions['test-colors'] = null; + $this->longOptions['ci'] = null; parent::handleArguments($argv); foreach ($this->options[0] as $option) { @@ -35,6 +43,10 @@ protected function handleArguments(array $argv) echo $testColors->renderAll(); exit(0); break; + + case '--ci': + $this->ci = true; + break; } } } diff --git a/src/Concise/Console/ResultPrinter/CIResultPrinter.php b/src/Concise/Console/ResultPrinter/CIResultPrinter.php new file mode 100644 index 00000000..4f624241 --- /dev/null +++ b/src/Concise/Console/ResultPrinter/CIResultPrinter.php @@ -0,0 +1,17 @@ +counter->getPercentage($this->getTestCount()); + if ($percentage > $this->lastPercentage) { + $this->write($this->getAssertionString()); + $this->lastPercentage = $percentage; + } + } +} diff --git a/src/Concise/Console/ResultPrinter/Utilities/ProgressCounter.php b/src/Concise/Console/ResultPrinter/Utilities/ProgressCounter.php index 719ef8c6..55985199 100644 --- a/src/Concise/Console/ResultPrinter/Utilities/ProgressCounter.php +++ b/src/Concise/Console/ResultPrinter/Utilities/ProgressCounter.php @@ -46,10 +46,14 @@ public function render($value = 0) $this->atLeastZero($value, 'Value'); $r = $value . ' / ' . max($value, $this->total); if ($this->showPercentage) { - $percentage = (0 === $this->total) ? 0 : floor($value / $this->total * 100); - $r .= sprintf(' (%3s%%)', min(100, $percentage)); + $r .= sprintf(' (%3s%%)', min(100, $this->getPercentage($value))); } return $r; } + + public function getPercentage($value) + { + return (0 === $this->total) ? 0 : floor($value / $this->total * 100); + } } diff --git a/tests/Concise/Console/ResultPrinter/CIResultPrinterTest.php b/tests/Concise/Console/ResultPrinter/CIResultPrinterTest.php new file mode 100644 index 00000000..96088834 --- /dev/null +++ b/tests/Concise/Console/ResultPrinter/CIResultPrinterTest.php @@ -0,0 +1,16 @@ +niceMock('Concise\Console\ResultPrinter\CIResultPrinter') + ->expect('write') + ->get(); + $resultPrinter->update(); + } +} diff --git a/tests/Concise/Console/ResultPrinter/Utilities/ProgressCounterTest.php b/tests/Concise/Console/ResultPrinter/Utilities/ProgressCounterTest.php index 91fc73df..de32b9ad 100644 --- a/tests/Concise/Console/ResultPrinter/Utilities/ProgressCounterTest.php +++ b/tests/Concise/Console/ResultPrinter/Utilities/ProgressCounterTest.php @@ -112,4 +112,10 @@ public function testShowPercentageMustBeAnInteger() { new ProgressCounter(123, 'foo'); } + + public function testCanGetPercentage() + { + $counter = new ProgressCounter(5); + $this->assert($counter->getPercentage(1), equals, 20); + } } diff --git a/wiki b/wiki index a57a69c4..a4d3f20e 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit a57a69c40225f7192115eca9eb940808c2292388 +Subproject commit a4d3f20e84086083a44f4eced715b5e19a3d4384