mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-22 06:42:41 +01:00
Refine whitespace and end-of-block detection for git binary literal patches in
mercurial changesets Summary: Makes the parsing slightly more liberal so a test case from @Makinde passes. Test Plan: Ran unit tests. Reviewers: Makinde, jungejason, nh, tuomaspelkonen, aran Reviewed By: Makinde CC: aran, Makinde Differential Revision: 1054
This commit is contained in:
parent
930b32a6b4
commit
0b79132827
3 changed files with 14 additions and 4 deletions
|
@ -663,12 +663,14 @@ class ArcanistDiffParser {
|
|||
}
|
||||
do {
|
||||
$line = $this->nextLine();
|
||||
if ($line === '') {
|
||||
if ($line === '' || $line === null) {
|
||||
// Some versions of Mercurial apparently omit the terminal newline,
|
||||
// although it's unclear if Git will ever do this. In either case,
|
||||
// rely on the base85 check for sanity.
|
||||
$this->nextNonemptyLine();
|
||||
return;
|
||||
} else if ($line === null) {
|
||||
throw new Exception(
|
||||
"Expected empty line to terminate binary patch.");
|
||||
} else if (!preg_match('/^[a-zA-Z]/', $line)) {
|
||||
$this->didFailParse("Expected base85 line length character (a-zA-Z).");
|
||||
}
|
||||
} while (true);
|
||||
}
|
||||
|
|
|
@ -478,6 +478,7 @@ EOTEXT
|
|||
$change->getFileType());
|
||||
break;
|
||||
case 'hg-binary-change.hgdiff':
|
||||
case 'hg-solo-binary-change.hgdiff':
|
||||
$this->assertEqual(1, count($changes));
|
||||
$change = reset($changes);
|
||||
$this->assertEqual(
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
diff --git a/x/inherit.gif b/x/inherit.gif
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..c814867a13deb0ca7ea2156c6ca1d5a03372af7e
|
||||
GIT binary patch
|
||||
literal 57
|
||||
zc${<hbhEHb<Y(YxXkcLY|NlP&1A`6_Gk`=Gm?T>IIT!9-C*e{wE9>Kx3D)-;0v)C;
|
||||
KYxQGgum%9JOA&7X
|
Loading…
Reference in a new issue