diff --git a/src/unit/parser/ArcanistGoTestResultParser.php b/src/unit/parser/ArcanistGoTestResultParser.php --- a/src/unit/parser/ArcanistGoTestResultParser.php +++ b/src/unit/parser/ArcanistGoTestResultParser.php @@ -68,7 +68,7 @@ if (strncmp($line, 'ok', 2) === 0) { $meta = array(); preg_match( - '/^ok[\s\t]+(?P<test_name>\w.*)[\s\t]+(?P<time>.*)s.*/', + '/^ok[\s]+(?P<test_name>\w.*)[\s]+(?:(?P<time>.*)s|\(cached\))/', $line, $meta); @@ -84,7 +84,10 @@ $result = new ArcanistUnitTestResult(); $result->setName($test_name); $result->setResult(ArcanistUnitTestResult::RESULT_PASS); - $result->setDuration((float)$meta['time']); + + if (array_key_exists('time', $meta)) { + $result->setDuration((float)$meta['time']); + } $results[] = $result; } else { diff --git a/src/unit/parser/__tests__/ArcanistGoTestResultParserTestCase.php b/src/unit/parser/__tests__/ArcanistGoTestResultParserTestCase.php --- a/src/unit/parser/__tests__/ArcanistGoTestResultParserTestCase.php +++ b/src/unit/parser/__tests__/ArcanistGoTestResultParserTestCase.php @@ -103,6 +103,27 @@ } } + public function testNonVerboseOutputV110() { + $stubbed_results = Filesystem::readFile( + dirname(__FILE__).'/testresults/go.nonverbose-go1.10'); + + $parsed_results = id(new ArcanistGoTestResultParser()) + ->parseTestResults('package', $stubbed_results); + + $this->assertEqual(2, count($parsed_results)); + $this->assertEqual( + 'Go::TestCase::package::subpackage1', + $parsed_results[0]->getName()); + $this->assertEqual( + 'Go::TestCase::package::subpackage2', + $parsed_results[1]->getName()); + foreach ($parsed_results as $result) { + $this->assertEqual( + ArcanistUnitTestResult::RESULT_PASS, + $result->getResult()); + } + } + public function testSingleTestCaseSuccessfulGo14() { $stubbed_results = Filesystem::readFile( dirname(__FILE__).'/testresults/go.single-test-case-successful-go1.4'); diff --git a/src/unit/parser/__tests__/testresults/go.nonverbose-go1.10 b/src/unit/parser/__tests__/testresults/go.nonverbose-go1.10 new file mode 100644 --- /dev/null +++ b/src/unit/parser/__tests__/testresults/go.nonverbose-go1.10 @@ -0,0 +1,2 @@ +ok package/subpackage1 (cached) +ok package/subpackage2 0.010s