Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F2893020
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Size
4 KB
Referenced Files
None
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
Mode
rARC Arcanist
Attached
Detach File
Event Timeline
Log In to Comment