Merge "Fix DiffFormatter NPEs for DiffEntry without content change" into stable-3.0
This commit is contained in:
commit
84ad4957c6
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2010, Google Inc.
|
||||
* Copyright (C) 2010, 2013 Google Inc.
|
||||
* and other copyright owners as documented in the project's IP log.
|
||||
*
|
||||
* This program and the accompanying materials are made available
|
||||
|
@ -256,6 +256,35 @@ public void testCreateFileHeader_GitLink() throws Exception {
|
|||
assertEquals(0, hh.toEditList().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateFileHeaderWithoutIndexLine() throws Exception {
|
||||
DiffEntry m = DiffEntry.modify(PATH_A);
|
||||
m.oldMode = FileMode.REGULAR_FILE;
|
||||
m.newMode = FileMode.EXECUTABLE_FILE;
|
||||
|
||||
FileHeader fh = df.toFileHeader(m);
|
||||
String expected = DIFF + "a/src/a b/src/a\n" + //
|
||||
"old mode 100644\n" + //
|
||||
"new mode 100755\n";
|
||||
assertEquals(expected, fh.getScriptText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateFileHeaderForRenameWithoutContentChange() throws Exception {
|
||||
DiffEntry a = DiffEntry.delete(PATH_A, ObjectId.zeroId());
|
||||
DiffEntry b = DiffEntry.add(PATH_B, ObjectId.zeroId());
|
||||
DiffEntry m = DiffEntry.pair(ChangeType.RENAME, a, b, 100);
|
||||
m.oldId = null;
|
||||
m.newId = null;
|
||||
|
||||
FileHeader fh = df.toFileHeader(m);
|
||||
String expected = DIFF + "a/src/a b/src/b\n" + //
|
||||
"similarity index 100%\n" + //
|
||||
"rename from src/a\n" + //
|
||||
"rename to src/b\n";
|
||||
assertEquals(expected, fh.getScriptText());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDiff() throws Exception {
|
||||
write(new File(db.getDirectory().getParent(), "test.txt"), "test");
|
||||
|
|
|
@ -912,6 +912,11 @@ private FormatResult createFormatResult(DiffEntry ent) throws IOException,
|
|||
editList = new EditList();
|
||||
type = PatchType.UNIFIED;
|
||||
|
||||
} else if (ent.getOldId() == null || ent.getNewId() == null) {
|
||||
// Content not changed (e.g. only mode, pure rename)
|
||||
editList = new EditList();
|
||||
type = PatchType.UNIFIED;
|
||||
|
||||
} else {
|
||||
assertHaveRepository();
|
||||
|
||||
|
@ -1106,7 +1111,7 @@ private void formatHeader(ByteArrayOutputStream o, DiffEntry ent)
|
|||
o.write('\n');
|
||||
}
|
||||
|
||||
if (!ent.getOldId().equals(ent.getNewId())) {
|
||||
if (ent.getOldId() != null && !ent.getOldId().equals(ent.getNewId())) {
|
||||
formatIndexLine(o, ent);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue