mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-29 10:12:41 +01:00
Handle empty output from hg --debug branches
in the parser
Summary: Ref T1493. Also consolidate this a bit more. Test Plan: Unit tests. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T1493 Differential Revision: https://secure.phabricator.com/D7481
This commit is contained in:
parent
aabbdbd2ab
commit
9310df9615
4 changed files with 17 additions and 14 deletions
|
@ -984,22 +984,15 @@ final class ArcanistMercurialAPI extends ArcanistRepositoryAPI {
|
|||
}
|
||||
|
||||
public function getBranches() {
|
||||
list($stdout) = $this->execxLocal('--debug branches');
|
||||
$lines = ArcanistMercurialParser::parseMercurialBranches($stdout);
|
||||
|
||||
$branches = array();
|
||||
|
||||
list($raw_output) = $this->execxLocal('branches');
|
||||
$raw_output = trim($raw_output);
|
||||
|
||||
foreach (explode("\n", $raw_output) as $line) {
|
||||
// example line: default 0:a5ead76cdf85 (inactive)
|
||||
list($name, $rev_line) = $this->splitBranchOrBookmarkLine($line);
|
||||
|
||||
// strip off the '(inactive)' bit if it exists
|
||||
$rev_parts = explode(' ', $rev_line);
|
||||
$revision = $rev_parts[0];
|
||||
|
||||
foreach ($lines as $name => $spec) {
|
||||
$branches[] = array(
|
||||
'name' => $name,
|
||||
'revision' => $revision);
|
||||
'revision' => $spec['rev'],
|
||||
);
|
||||
}
|
||||
|
||||
return $branches;
|
||||
|
|
|
@ -188,7 +188,13 @@ final class ArcanistMercurialParser {
|
|||
* @task parse
|
||||
*/
|
||||
public static function parseMercurialBranches($stdout) {
|
||||
$lines = explode("\n", trim($stdout));
|
||||
$stdout = rtrim($stdout, "\n");
|
||||
if (!strlen($stdout)) {
|
||||
// No branches; commonly, this occurs in a newly initialized repository.
|
||||
return array();
|
||||
}
|
||||
|
||||
$lines = explode("\n", $stdout);
|
||||
|
||||
$branches = array();
|
||||
foreach ($lines as $line) {
|
||||
|
|
|
@ -36,6 +36,10 @@ final class ArcanistMercurialParserTestCase extends ArcanistTestCase {
|
|||
array('0b9d8290c4e0', '78963faacfc7', '5db03c5500c6', 'ffffffffffff'),
|
||||
array_values(ipull($output, 'rev')));
|
||||
break;
|
||||
case 'branches-empty.txt':
|
||||
$output = ArcanistMercurialParser::parseMercurialBranches($data);
|
||||
$this->assertEqual(array(), $output);
|
||||
break;
|
||||
case 'log-basic.txt':
|
||||
$output = ArcanistMercurialParser::parseMercurialLog($data);
|
||||
$this->assertEqual(
|
||||
|
|
Loading…
Reference in a new issue