Browse Source

BlameCommandTest: Instantiate Git objects in try-with-resource

Change-Id: Icb9e6bb9ee99589fa2e0388c8b305a8a1f5954db
Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com>
stable-4.2
David Pursehouse 9 years ago
parent
commit
41ace0580c
  1. 608
      org.eclipse.jgit.test/tst/org/eclipse/jgit/api/BlameCommandTest.java

608
org.eclipse.jgit.test/tst/org/eclipse/jgit/api/BlameCommandTest.java

@ -72,53 +72,53 @@ public class BlameCommandTest extends RepositoryTestCase {
@Test @Test
public void testSingleRevision() throws Exception { public void testSingleRevision() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
String[] content = new String[] { "first", "second", "third" };
String[] content = new String[] { "first", "second", "third" };
writeTrashFile("file.txt", join(content));
writeTrashFile("file.txt", join(content)); git.add().addFilepattern("file.txt").call();
git.add().addFilepattern("file.txt").call(); RevCommit commit = git.commit().setMessage("create file").call();
RevCommit commit = git.commit().setMessage("create file").call();
BlameCommand command = new BlameCommand(db);
BlameCommand command = new BlameCommand(db); command.setFilePath("file.txt");
command.setFilePath("file.txt"); BlameResult lines = command.call();
BlameResult lines = command.call(); assertNotNull(lines);
assertNotNull(lines); assertEquals(3, lines.getResultContents().size());
assertEquals(3, lines.getResultContents().size());
for (int i = 0; i < 3; i++) {
for (int i = 0; i < 3; i++) { assertEquals(commit, lines.getSourceCommit(i));
assertEquals(commit, lines.getSourceCommit(i)); assertEquals(i, lines.getSourceLine(i));
assertEquals(i, lines.getSourceLine(i)); }
} }
} }
@Test @Test
public void testTwoRevisions() throws Exception { public void testTwoRevisions() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
String[] content1 = new String[] { "first", "second" };
String[] content1 = new String[] { "first", "second" }; writeTrashFile("file.txt", join(content1));
writeTrashFile("file.txt", join(content1)); git.add().addFilepattern("file.txt").call();
git.add().addFilepattern("file.txt").call(); RevCommit commit1 = git.commit().setMessage("create file").call();
RevCommit commit1 = git.commit().setMessage("create file").call();
String[] content2 = new String[] { "first", "second", "third" };
String[] content2 = new String[] { "first", "second", "third" }; writeTrashFile("file.txt", join(content2));
writeTrashFile("file.txt", join(content2)); git.add().addFilepattern("file.txt").call();
git.add().addFilepattern("file.txt").call(); RevCommit commit2 = git.commit().setMessage("create file").call();
RevCommit commit2 = git.commit().setMessage("create file").call();
BlameCommand command = new BlameCommand(db);
BlameCommand command = new BlameCommand(db); command.setFilePath("file.txt");
command.setFilePath("file.txt"); BlameResult lines = command.call();
BlameResult lines = command.call(); assertEquals(3, lines.getResultContents().size());
assertEquals(3, lines.getResultContents().size());
assertEquals(commit1, lines.getSourceCommit(0));
assertEquals(commit1, lines.getSourceCommit(0)); assertEquals(0, lines.getSourceLine(0));
assertEquals(0, lines.getSourceLine(0));
assertEquals(commit1, lines.getSourceCommit(1));
assertEquals(commit1, lines.getSourceCommit(1)); assertEquals(1, lines.getSourceLine(1));
assertEquals(1, lines.getSourceLine(1));
assertEquals(commit2, lines.getSourceCommit(2));
assertEquals(commit2, lines.getSourceCommit(2)); assertEquals(2, lines.getSourceLine(2));
assertEquals(2, lines.getSourceLine(2)); }
} }
@Test @Test
@ -138,200 +138,200 @@ public class BlameCommandTest extends RepositoryTestCase {
private void testRename(final String sourcePath, final String destPath) private void testRename(final String sourcePath, final String destPath)
throws Exception { throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
String[] content1 = new String[] { "a", "b", "c" };
String[] content1 = new String[] { "a", "b", "c" }; writeTrashFile(sourcePath, join(content1));
writeTrashFile(sourcePath, join(content1)); git.add().addFilepattern(sourcePath).call();
git.add().addFilepattern(sourcePath).call(); RevCommit commit1 = git.commit().setMessage("create file").call();
RevCommit commit1 = git.commit().setMessage("create file").call();
writeTrashFile(destPath, join(content1));
writeTrashFile(destPath, join(content1)); git.add().addFilepattern(destPath).call();
git.add().addFilepattern(destPath).call(); git.rm().addFilepattern(sourcePath).call();
git.rm().addFilepattern(sourcePath).call(); git.commit().setMessage("moving file").call();
git.commit().setMessage("moving file").call();
String[] content2 = new String[] { "a", "b", "c2" };
String[] content2 = new String[] { "a", "b", "c2" }; writeTrashFile(destPath, join(content2));
writeTrashFile(destPath, join(content2)); git.add().addFilepattern(destPath).call();
git.add().addFilepattern(destPath).call(); RevCommit commit3 = git.commit().setMessage("editing file").call();
RevCommit commit3 = git.commit().setMessage("editing file").call();
BlameCommand command = new BlameCommand(db);
BlameCommand command = new BlameCommand(db); command.setFollowFileRenames(true);
command.setFollowFileRenames(true); command.setFilePath(destPath);
command.setFilePath(destPath); BlameResult lines = command.call();
BlameResult lines = command.call();
assertEquals(commit1, lines.getSourceCommit(0));
assertEquals(commit1, lines.getSourceCommit(0)); assertEquals(0, lines.getSourceLine(0));
assertEquals(0, lines.getSourceLine(0)); assertEquals(sourcePath, lines.getSourcePath(0));
assertEquals(sourcePath, lines.getSourcePath(0));
assertEquals(commit1, lines.getSourceCommit(1));
assertEquals(commit1, lines.getSourceCommit(1)); assertEquals(1, lines.getSourceLine(1));
assertEquals(1, lines.getSourceLine(1)); assertEquals(sourcePath, lines.getSourcePath(1));
assertEquals(sourcePath, lines.getSourcePath(1));
assertEquals(commit3, lines.getSourceCommit(2));
assertEquals(commit3, lines.getSourceCommit(2)); assertEquals(2, lines.getSourceLine(2));
assertEquals(2, lines.getSourceLine(2)); assertEquals(destPath, lines.getSourcePath(2));
assertEquals(destPath, lines.getSourcePath(2)); }
} }
@Test @Test
public void testTwoRenames() throws Exception { public void testTwoRenames() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
// Commit 1: Add file.txt
// Commit 1: Add file.txt String[] content1 = new String[] { "a" };
String[] content1 = new String[] { "a" }; writeTrashFile("file.txt", join(content1));
writeTrashFile("file.txt", join(content1)); git.add().addFilepattern("file.txt").call();
git.add().addFilepattern("file.txt").call(); RevCommit commit1 = git.commit().setMessage("create file").call();
RevCommit commit1 = git.commit().setMessage("create file").call();
// Commit 2: Rename to file1.txt
// Commit 2: Rename to file1.txt writeTrashFile("file1.txt", join(content1));
writeTrashFile("file1.txt", join(content1)); git.add().addFilepattern("file1.txt").call();
git.add().addFilepattern("file1.txt").call(); git.rm().addFilepattern("file.txt").call();
git.rm().addFilepattern("file.txt").call(); git.commit().setMessage("moving file").call();
git.commit().setMessage("moving file").call();
// Commit 3: Edit file1.txt
// Commit 3: Edit file1.txt String[] content2 = new String[] { "a", "b" };
String[] content2 = new String[] { "a", "b" }; writeTrashFile("file1.txt", join(content2));
writeTrashFile("file1.txt", join(content2)); git.add().addFilepattern("file1.txt").call();
git.add().addFilepattern("file1.txt").call(); RevCommit commit3 = git.commit().setMessage("editing file").call();
RevCommit commit3 = git.commit().setMessage("editing file").call();
// Commit 4: Rename to file2.txt
// Commit 4: Rename to file2.txt writeTrashFile("file2.txt", join(content2));
writeTrashFile("file2.txt", join(content2)); git.add().addFilepattern("file2.txt").call();
git.add().addFilepattern("file2.txt").call(); git.rm().addFilepattern("file1.txt").call();
git.rm().addFilepattern("file1.txt").call(); git.commit().setMessage("moving file again").call();
git.commit().setMessage("moving file again").call();
BlameCommand command = new BlameCommand(db);
BlameCommand command = new BlameCommand(db); command.setFollowFileRenames(true);
command.setFollowFileRenames(true); command.setFilePath("file2.txt");
command.setFilePath("file2.txt"); BlameResult lines = command.call();
BlameResult lines = command.call();
assertEquals(commit1, lines.getSourceCommit(0));
assertEquals(commit1, lines.getSourceCommit(0)); assertEquals(0, lines.getSourceLine(0));
assertEquals(0, lines.getSourceLine(0)); assertEquals("file.txt", lines.getSourcePath(0));
assertEquals("file.txt", lines.getSourcePath(0));
assertEquals(commit3, lines.getSourceCommit(1));
assertEquals(commit3, lines.getSourceCommit(1)); assertEquals(1, lines.getSourceLine(1));
assertEquals(1, lines.getSourceLine(1)); assertEquals("file1.txt", lines.getSourcePath(1));
assertEquals("file1.txt", lines.getSourcePath(1)); }
} }
@Test @Test
public void testDeleteTrailingLines() throws Exception { public void testDeleteTrailingLines() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
String[] content1 = new String[] { "a", "b", "c", "d" };
String[] content2 = new String[] { "a", "b" };
String[] content1 = new String[] { "a", "b", "c", "d" }; writeTrashFile("file.txt", join(content2));
String[] content2 = new String[] { "a", "b" }; git.add().addFilepattern("file.txt").call();
RevCommit commit1 = git.commit().setMessage("create file").call();
writeTrashFile("file.txt", join(content2)); writeTrashFile("file.txt", join(content1));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
RevCommit commit1 = git.commit().setMessage("create file").call(); git.commit().setMessage("edit file").call();
writeTrashFile("file.txt", join(content1)); writeTrashFile("file.txt", join(content2));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
git.commit().setMessage("edit file").call(); git.commit().setMessage("edit file").call();
writeTrashFile("file.txt", join(content2)); BlameCommand command = new BlameCommand(db);
git.add().addFilepattern("file.txt").call();
git.commit().setMessage("edit file").call();
BlameCommand command = new BlameCommand(db); command.setFilePath("file.txt");
BlameResult lines = command.call();
assertEquals(content2.length, lines.getResultContents().size());
command.setFilePath("file.txt"); assertEquals(commit1, lines.getSourceCommit(0));
BlameResult lines = command.call(); assertEquals(commit1, lines.getSourceCommit(1));
assertEquals(content2.length, lines.getResultContents().size());
assertEquals(commit1, lines.getSourceCommit(0)); assertEquals(0, lines.getSourceLine(0));
assertEquals(commit1, lines.getSourceCommit(1)); assertEquals(1, lines.getSourceLine(1));
}
assertEquals(0, lines.getSourceLine(0));
assertEquals(1, lines.getSourceLine(1));
} }
@Test @Test
public void testDeleteMiddleLines() throws Exception { public void testDeleteMiddleLines() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
String[] content1 = new String[] { "a", "b", "c", "d", "e" };
String[] content2 = new String[] { "a", "c", "e" };
String[] content1 = new String[] { "a", "b", "c", "d", "e" }; writeTrashFile("file.txt", join(content2));
String[] content2 = new String[] { "a", "c", "e" }; git.add().addFilepattern("file.txt").call();
RevCommit commit1 = git.commit().setMessage("edit file").call();
writeTrashFile("file.txt", join(content2)); writeTrashFile("file.txt", join(content1));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
RevCommit commit1 = git.commit().setMessage("edit file").call(); git.commit().setMessage("edit file").call();
writeTrashFile("file.txt", join(content1)); writeTrashFile("file.txt", join(content2));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
git.commit().setMessage("edit file").call(); git.commit().setMessage("edit file").call();
writeTrashFile("file.txt", join(content2)); BlameCommand command = new BlameCommand(db);
git.add().addFilepattern("file.txt").call();
git.commit().setMessage("edit file").call();
BlameCommand command = new BlameCommand(db); command.setFilePath("file.txt");
BlameResult lines = command.call();
assertEquals(content2.length, lines.getResultContents().size());
command.setFilePath("file.txt"); assertEquals(commit1, lines.getSourceCommit(0));
BlameResult lines = command.call(); assertEquals(0, lines.getSourceLine(0));
assertEquals(content2.length, lines.getResultContents().size());
assertEquals(commit1, lines.getSourceCommit(0)); assertEquals(commit1, lines.getSourceCommit(1));
assertEquals(0, lines.getSourceLine(0)); assertEquals(1, lines.getSourceLine(1));
assertEquals(commit1, lines.getSourceCommit(1)); assertEquals(commit1, lines.getSourceCommit(2));
assertEquals(1, lines.getSourceLine(1)); assertEquals(2, lines.getSourceLine(2));
}
assertEquals(commit1, lines.getSourceCommit(2));
assertEquals(2, lines.getSourceLine(2));
} }
@Test @Test
public void testEditAllLines() throws Exception { public void testEditAllLines() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
String[] content1 = new String[] { "a", "1" };
String[] content1 = new String[] { "a", "1" }; String[] content2 = new String[] { "b", "2" };
String[] content2 = new String[] { "b", "2" };
writeTrashFile("file.txt", join(content1)); writeTrashFile("file.txt", join(content1));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
git.commit().setMessage("edit file").call(); git.commit().setMessage("edit file").call();
writeTrashFile("file.txt", join(content2)); writeTrashFile("file.txt", join(content2));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
RevCommit commit2 = git.commit().setMessage("create file").call(); RevCommit commit2 = git.commit().setMessage("create file").call();
BlameCommand command = new BlameCommand(db); BlameCommand command = new BlameCommand(db);
command.setFilePath("file.txt"); command.setFilePath("file.txt");
BlameResult lines = command.call(); BlameResult lines = command.call();
assertEquals(content2.length, lines.getResultContents().size()); assertEquals(content2.length, lines.getResultContents().size());
assertEquals(commit2, lines.getSourceCommit(0)); assertEquals(commit2, lines.getSourceCommit(0));
assertEquals(commit2, lines.getSourceCommit(1)); assertEquals(commit2, lines.getSourceCommit(1));
}
} }
@Test @Test
public void testMiddleClearAllLines() throws Exception { public void testMiddleClearAllLines() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
String[] content1 = new String[] { "a", "b", "c" };
String[] content1 = new String[] { "a", "b", "c" };
writeTrashFile("file.txt", join(content1)); writeTrashFile("file.txt", join(content1));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
git.commit().setMessage("edit file").call(); git.commit().setMessage("edit file").call();
writeTrashFile("file.txt", ""); writeTrashFile("file.txt", "");
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
git.commit().setMessage("create file").call(); git.commit().setMessage("create file").call();
writeTrashFile("file.txt", join(content1)); writeTrashFile("file.txt", join(content1));
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
RevCommit commit3 = git.commit().setMessage("edit file").call(); RevCommit commit3 = git.commit().setMessage("edit file").call();
BlameCommand command = new BlameCommand(db); BlameCommand command = new BlameCommand(db);
command.setFilePath("file.txt"); command.setFilePath("file.txt");
BlameResult lines = command.call(); BlameResult lines = command.call();
assertEquals(content1.length, lines.getResultContents().size()); assertEquals(content1.length, lines.getResultContents().size());
assertEquals(commit3, lines.getSourceCommit(0)); assertEquals(commit3, lines.getSourceCommit(0));
assertEquals(commit3, lines.getSourceCommit(1)); assertEquals(commit3, lines.getSourceCommit(1));
assertEquals(commit3, lines.getSourceCommit(2)); assertEquals(commit3, lines.getSourceCommit(2));
}
} }
@Test @Test
@ -361,130 +361,132 @@ public class BlameCommandTest extends RepositoryTestCase {
private void testCoreAutoCrlf(AutoCRLF modeForCommitting, private void testCoreAutoCrlf(AutoCRLF modeForCommitting,
AutoCRLF modeForReset) throws Exception { AutoCRLF modeForReset) throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
FileBasedConfig config = db.getConfig(); FileBasedConfig config = db.getConfig();
config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null, config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
ConfigConstants.CONFIG_KEY_AUTOCRLF, modeForCommitting); ConfigConstants.CONFIG_KEY_AUTOCRLF, modeForCommitting);
config.save(); config.save();
String joinedCrlf = "a\r\nb\r\nc\r\n"; String joinedCrlf = "a\r\nb\r\nc\r\n";
File trashFile = writeTrashFile("file.txt", joinedCrlf); File trashFile = writeTrashFile("file.txt", joinedCrlf);
git.add().addFilepattern("file.txt").call(); git.add().addFilepattern("file.txt").call();
RevCommit commit = git.commit().setMessage("create file").call(); RevCommit commit = git.commit().setMessage("create file").call();
// re-create file from the repo // re-create file from the repo
trashFile.delete(); trashFile.delete();
config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null, config.setEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
ConfigConstants.CONFIG_KEY_AUTOCRLF, modeForReset); ConfigConstants.CONFIG_KEY_AUTOCRLF, modeForReset);
config.save(); config.save();
git.reset().setMode(ResetType.HARD).call(); git.reset().setMode(ResetType.HARD).call();
BlameCommand command = new BlameCommand(db); BlameCommand command = new BlameCommand(db);
command.setFilePath("file.txt"); command.setFilePath("file.txt");
BlameResult lines = command.call(); BlameResult lines = command.call();
assertEquals(3, lines.getResultContents().size()); assertEquals(3, lines.getResultContents().size());
assertEquals(commit, lines.getSourceCommit(0)); assertEquals(commit, lines.getSourceCommit(0));
assertEquals(commit, lines.getSourceCommit(1)); assertEquals(commit, lines.getSourceCommit(1));
assertEquals(commit, lines.getSourceCommit(2)); assertEquals(commit, lines.getSourceCommit(2));
}
} }
@Test @Test
public void testConflictingMerge1() throws Exception { public void testConflictingMerge1() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
RevCommit base = commitFile("file.txt", join("0", "1", "2", "3", "4"),
RevCommit base = commitFile("file.txt", join("0", "1", "2", "3", "4"), "master");
"master");
git.checkout().setName("side").setCreateBranch(true)
git.checkout().setName("side").setCreateBranch(true) .setStartPoint(base).call();
.setStartPoint(base).call(); RevCommit side = commitFile("file.txt",
RevCommit side = commitFile("file.txt", join("0", "1 side", "2", "3 on side", "4"), "side");
join("0", "1 side", "2", "3 on side", "4"), "side");
commitFile("file.txt", join("0", "1", "2"), "master");
commitFile("file.txt", join("0", "1", "2"), "master");
checkoutBranch("refs/heads/master");
checkoutBranch("refs/heads/master"); git.merge().include(side).call();
git.merge().include(side).call();
// The merge results in a conflict, which we resolve using mostly the
// The merge results in a conflict, which we resolve using mostly the // side branch contents. Especially the "4" survives.
// side branch contents. Especially the "4" survives. RevCommit merge = commitFile("file.txt",
RevCommit merge = commitFile("file.txt", join("0", "1 side", "2", "3 resolved", "4"), "master");
join("0", "1 side", "2", "3 resolved", "4"), "master");
BlameCommand command = new BlameCommand(db);
BlameCommand command = new BlameCommand(db); command.setFilePath("file.txt");
command.setFilePath("file.txt"); BlameResult lines = command.call();
BlameResult lines = command.call();
assertEquals(5, lines.getResultContents().size());
assertEquals(5, lines.getResultContents().size()); assertEquals(base, lines.getSourceCommit(0));
assertEquals(base, lines.getSourceCommit(0)); assertEquals(side, lines.getSourceCommit(1));
assertEquals(side, lines.getSourceCommit(1)); assertEquals(base, lines.getSourceCommit(2));
assertEquals(base, lines.getSourceCommit(2)); assertEquals(merge, lines.getSourceCommit(3));
assertEquals(merge, lines.getSourceCommit(3)); assertEquals(base, lines.getSourceCommit(4));
assertEquals(base, lines.getSourceCommit(4)); }
} }
// this test inverts the order of the master and side commit and is // this test inverts the order of the master and side commit and is
// otherwise identical to testConflictingMerge1 // otherwise identical to testConflictingMerge1
@Test @Test
public void testConflictingMerge2() throws Exception { public void testConflictingMerge2() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
RevCommit base = commitFile("file.txt", join("0", "1", "2", "3", "4"),
RevCommit base = commitFile("file.txt", join("0", "1", "2", "3", "4"), "master");
"master");
commitFile("file.txt", join("0", "1", "2"), "master");
commitFile("file.txt", join("0", "1", "2"), "master");
git.checkout().setName("side").setCreateBranch(true)
git.checkout().setName("side").setCreateBranch(true) .setStartPoint(base).call();
.setStartPoint(base).call(); RevCommit side = commitFile("file.txt",
RevCommit side = commitFile("file.txt", join("0", "1 side", "2", "3 on side", "4"), "side");
join("0", "1 side", "2", "3 on side", "4"), "side");
checkoutBranch("refs/heads/master");
checkoutBranch("refs/heads/master"); git.merge().include(side).call();
git.merge().include(side).call();
// The merge results in a conflict, which we resolve using mostly the
// The merge results in a conflict, which we resolve using mostly the // side branch contents. Especially the "4" survives.
// side branch contents. Especially the "4" survives. RevCommit merge = commitFile("file.txt",
RevCommit merge = commitFile("file.txt", join("0", "1 side", "2", "3 resolved", "4"), "master");
join("0", "1 side", "2", "3 resolved", "4"), "master");
BlameCommand command = new BlameCommand(db);
BlameCommand command = new BlameCommand(db); command.setFilePath("file.txt");
command.setFilePath("file.txt"); BlameResult lines = command.call();
BlameResult lines = command.call();
assertEquals(5, lines.getResultContents().size());
assertEquals(5, lines.getResultContents().size()); assertEquals(base, lines.getSourceCommit(0));
assertEquals(base, lines.getSourceCommit(0)); assertEquals(side, lines.getSourceCommit(1));
assertEquals(side, lines.getSourceCommit(1)); assertEquals(base, lines.getSourceCommit(2));
assertEquals(base, lines.getSourceCommit(2)); assertEquals(merge, lines.getSourceCommit(3));
assertEquals(merge, lines.getSourceCommit(3)); assertEquals(base, lines.getSourceCommit(4));
assertEquals(base, lines.getSourceCommit(4)); }
} }
@Test @Test
public void testWhitespaceMerge() throws Exception { public void testWhitespaceMerge() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
RevCommit base = commitFile("file.txt", join("0", "1", "2"), "master"); RevCommit base = commitFile("file.txt", join("0", "1", "2"), "master");
RevCommit side = commitFile("file.txt", join("0", "1", " 2 side "), RevCommit side = commitFile("file.txt", join("0", "1", " 2 side "),
"side"); "side");
checkoutBranch("refs/heads/master"); checkoutBranch("refs/heads/master");
git.merge().setFastForward(FastForwardMode.NO_FF).include(side).call(); git.merge().setFastForward(FastForwardMode.NO_FF).include(side).call();
// change whitespace, so the merge content is not identical to side, but // change whitespace, so the merge content is not identical to side, but
// is the same when ignoring whitespace // is the same when ignoring whitespace
writeTrashFile("file.txt", join("0", "1", "2 side")); writeTrashFile("file.txt", join("0", "1", "2 side"));
RevCommit merge = git.commit().setAll(true).setMessage("merge") RevCommit merge = git.commit().setAll(true).setMessage("merge")
.setAmend(true) .setAmend(true)
.call(); .call();
BlameCommand command = new BlameCommand(db); BlameCommand command = new BlameCommand(db);
command.setFilePath("file.txt") command.setFilePath("file.txt")
.setTextComparator(RawTextComparator.WS_IGNORE_ALL) .setTextComparator(RawTextComparator.WS_IGNORE_ALL)
.setStartCommit(merge.getId()); .setStartCommit(merge.getId());
BlameResult lines = command.call(); BlameResult lines = command.call();
assertEquals(3, lines.getResultContents().size()); assertEquals(3, lines.getResultContents().size());
assertEquals(base, lines.getSourceCommit(0)); assertEquals(base, lines.getSourceCommit(0));
assertEquals(base, lines.getSourceCommit(1)); assertEquals(base, lines.getSourceCommit(1));
assertEquals(side, lines.getSourceCommit(2)); assertEquals(side, lines.getSourceCommit(2));
}
} }
} }

Loading…
Cancel
Save