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() {
|
public function getBranches() {
|
||||||
|
list($stdout) = $this->execxLocal('--debug branches');
|
||||||
|
$lines = ArcanistMercurialParser::parseMercurialBranches($stdout);
|
||||||
|
|
||||||
$branches = array();
|
$branches = array();
|
||||||
|
foreach ($lines as $name => $spec) {
|
||||||
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];
|
|
||||||
|
|
||||||
$branches[] = array(
|
$branches[] = array(
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'revision' => $revision);
|
'revision' => $spec['rev'],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $branches;
|
return $branches;
|
||||||
|
|
|
@ -188,7 +188,13 @@ final class ArcanistMercurialParser {
|
||||||
* @task parse
|
* @task parse
|
||||||
*/
|
*/
|
||||||
public static function parseMercurialBranches($stdout) {
|
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();
|
$branches = array();
|
||||||
foreach ($lines as $line) {
|
foreach ($lines as $line) {
|
||||||
|
|
|
@ -36,6 +36,10 @@ final class ArcanistMercurialParserTestCase extends ArcanistTestCase {
|
||||||
array('0b9d8290c4e0', '78963faacfc7', '5db03c5500c6', 'ffffffffffff'),
|
array('0b9d8290c4e0', '78963faacfc7', '5db03c5500c6', 'ffffffffffff'),
|
||||||
array_values(ipull($output, 'rev')));
|
array_values(ipull($output, 'rev')));
|
||||||
break;
|
break;
|
||||||
|
case 'branches-empty.txt':
|
||||||
|
$output = ArcanistMercurialParser::parseMercurialBranches($data);
|
||||||
|
$this->assertEqual(array(), $output);
|
||||||
|
break;
|
||||||
case 'log-basic.txt':
|
case 'log-basic.txt':
|
||||||
$output = ArcanistMercurialParser::parseMercurialLog($data);
|
$output = ArcanistMercurialParser::parseMercurialLog($data);
|
||||||
$this->assertEqual(
|
$this->assertEqual(
|
||||||
|
|
Loading…
Reference in a new issue