Page MenuHomePhorge

No OneTemporary

diff --git a/src/unit/__tests__/ArcanistUnitTestResultTestCase.php b/src/unit/__tests__/ArcanistUnitTestResultTestCase.php
index 7c4d43dd..7458af8f 100644
--- a/src/unit/__tests__/ArcanistUnitTestResultTestCase.php
+++ b/src/unit/__tests__/ArcanistUnitTestResultTestCase.php
@@ -1,43 +1,56 @@
<?php
final class ArcanistUnitTestResultTestCase extends PhutilTestCase {
public function testCoverageMerges() {
$cases = array(
array(
'coverage' => array(),
'expect' => null,
),
array(
'coverage' => array(
'UUUNCNC',
),
'expect' => 'UUUNCNC',
),
array(
'coverage' => array(
'UUCUUU',
'UUUUCU',
),
'expect' => 'UUCUCU',
),
array(
'coverage' => array(
'UUCCCU',
'UUUCCCNNNC',
),
'expect' => 'UUCCCCNNNC',
),
);
foreach ($cases as $case) {
$input = $case['coverage'];
$expect = $case['expect'];
$actual = ArcanistUnitTestResult::mergeCoverage($input);
$this->assertEqual($expect, $actual);
}
}
+ public function testRenderer() {
+ $result = new ArcanistUnitTestResult();
+ $result->setName('RendererTest');
+ $result->setResult('pass');
+ $result->setDuration(0.001);
+ $result->setUserData('');
+
+ $renderer = new ArcanistUnitConsoleRenderer();
+ $output = $renderer->renderUnitResult($result);
+ $test_dscr = 'Renderer copes with null namespace';
+ $this->assertTrue((bool)preg_match('/PASS/', $output), $test_dscr);
+ }
+
}
diff --git a/src/unit/renderer/ArcanistUnitConsoleRenderer.php b/src/unit/renderer/ArcanistUnitConsoleRenderer.php
index 729c4b8d..48a1d96f 100644
--- a/src/unit/renderer/ArcanistUnitConsoleRenderer.php
+++ b/src/unit/renderer/ArcanistUnitConsoleRenderer.php
@@ -1,101 +1,101 @@
<?php
final class ArcanistUnitConsoleRenderer extends ArcanistUnitRenderer {
public function renderUnitResult(ArcanistUnitTestResult $result) {
$result_code = $result->getResult();
$duration = '';
if ($result_code == ArcanistUnitTestResult::RESULT_PASS) {
$duration = ' '.$this->formatTestDuration($result->getDuration());
}
$test_name = $result->getName();
$test_namespace = $result->getNamespace();
- if (strlen($test_namespace)) {
+ if (phutil_nonempty_string($test_namespace)) {
$test_name = $test_namespace.'::'.$test_name;
}
$return = sprintf(
" %s %s\n",
$this->getFormattedResult($result->getResult()).$duration,
$test_name);
if ($result_code != ArcanistUnitTestResult::RESULT_PASS
&& strlen($result->getUserData())) {
$return .= $result->getUserData()."\n";
}
return $return;
}
private function getFormattedResult($result) {
switch ($result) {
case ArcanistUnitTestResult::RESULT_PASS:
return phutil_console_format('<bg:green>** %s **</bg>', pht('PASS'));
case ArcanistUnitTestResult::RESULT_FAIL:
return phutil_console_format('<bg:red>** %s **</bg>', pht('FAIL'));
case ArcanistUnitTestResult::RESULT_SKIP:
return phutil_console_format('<bg:yellow>** %s **</bg>', pht('SKIP'));
case ArcanistUnitTestResult::RESULT_BROKEN:
return phutil_console_format('<bg:red>** %s **</bg>', pht('BROKEN'));
case ArcanistUnitTestResult::RESULT_UNSOUND:
return phutil_console_format(
'<bg:yellow>** %s **</bg>',
pht('UNSOUND'));
default:
return null;
}
}
private function formatTestDuration($seconds) {
// Very carefully define inclusive upper bounds on acceptable unit test
// durations. Times are in milliseconds and are in increasing order.
$star = "\xE2\x98\x85";
if (phutil_is_windows()) {
// Fall-back to normal asterisk for Windows consoles.
$star = '*';
}
$acceptableness = array(
50 => "<fg:green>%s</fg><fg:yellow>{$star}</fg> ",
200 => '<fg:green>%s</fg> ',
500 => '<fg:yellow>%s</fg> ',
);
$least_acceptable = '<fg:red>%s</fg> ';
$milliseconds = $seconds * 1000;
$duration = $this->formatTime($seconds);
foreach ($acceptableness as $upper_bound => $formatting) {
if ($milliseconds <= $upper_bound) {
return phutil_console_format($formatting, $duration);
}
}
return phutil_console_format($least_acceptable, $duration);
}
private function formatTime($seconds) {
if ($seconds >= 60) {
$minutes = floor($seconds / 60);
return pht('%dm%02ds', $minutes, round($seconds % 60));
}
if ($seconds >= 1) {
return pht('%4.1fs', $seconds);
}
$milliseconds = $seconds * 1000;
if ($milliseconds >= 1) {
return pht('%3dms', round($milliseconds));
}
return pht(' <%dms', 1);
}
}

File Metadata

Mime Type
text/x-diff
Expires
Sun, Jan 19, 17:44 (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1127086
Default Alt Text
(4 KB)

Event Timeline