diff options
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java | 102 |
1 files changed, 67 insertions, 35 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java index 0d38197d9a..301d6be662 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CherryPickCommandTest.java @@ -100,41 +100,73 @@ public class CherryPickCommandTest extends RepositoryTestCase { } } - @Test - public void testSequentialCherryPick() throws IOException, JGitInternalException, - GitAPIException { - try (Git git = new Git(db)) { - writeTrashFile("a", "first line\nsec. line\nthird line\n"); - git.add().addFilepattern("a").call(); - RevCommit firstCommit = git.commit().setMessage("create a").call(); - - writeTrashFile("a", "first line\nsec. line\nthird line\nfourth line\n"); - git.add().addFilepattern("a").call(); - RevCommit enlargingA = git.commit().setMessage("enlarged a").call(); - - writeTrashFile("a", - "first line\nsecond line\nthird line\nfourth line\n"); - git.add().addFilepattern("a").call(); - RevCommit fixingA = git.commit().setMessage("fixed a").call(); - - git.branchCreate().setName("side").setStartPoint(firstCommit).call(); - checkoutBranch("refs/heads/side"); - - writeTrashFile("b", "nothing to do with a"); - git.add().addFilepattern("b").call(); - git.commit().setMessage("create b").call(); - - CherryPickResult result = git.cherryPick().include(enlargingA).include(fixingA).call(); - assertEquals(CherryPickResult.CherryPickStatus.OK, result.getStatus()); - - Iterator<RevCommit> history = git.log().call().iterator(); - assertEquals("fixed a", history.next().getFullMessage()); - assertEquals("enlarged a", history.next().getFullMessage()); - assertEquals("create b", history.next().getFullMessage()); - assertEquals("create a", history.next().getFullMessage()); - assertFalse(history.hasNext()); - } - } + @Test + public void testSequentialCherryPick() + throws IOException, JGitInternalException, GitAPIException { + try (Git git = new Git(db)) { + writeTrashFile("a", "first line\nsec. line\nthird line\n"); + git.add().addFilepattern("a").call(); + RevCommit firstCommit = git.commit().setMessage("create a").call(); + + writeTrashFile("a", + "first line\nsec. line\nthird line\nfourth line\n"); + git.add().addFilepattern("a").call(); + RevCommit enlargingA = git.commit().setMessage("enlarged a").call(); + + writeTrashFile("a", + "first line\nsecond line\nthird line\nfourth line\n"); + git.add().addFilepattern("a").call(); + RevCommit fixingA = git.commit().setMessage("fixed a").call(); + + git.branchCreate().setName("side").setStartPoint(firstCommit) + .call(); + checkoutBranch("refs/heads/side"); + + writeTrashFile("b", "nothing to do with a"); + git.add().addFilepattern("b").call(); + git.commit().setMessage("create b").call(); + + CherryPickResult result = git.cherryPick().include(enlargingA) + .include(fixingA).call(); + assertEquals(CherryPickResult.CherryPickStatus.OK, + result.getStatus()); + + Iterator<RevCommit> history = git.log().call().iterator(); + assertEquals("fixed a", history.next().getFullMessage()); + assertEquals("enlarged a", history.next().getFullMessage()); + assertEquals("create b", history.next().getFullMessage()); + assertEquals("create a", history.next().getFullMessage()); + assertFalse(history.hasNext()); + } + } + + @Test + public void testRootCherryPick() + throws IOException, JGitInternalException, GitAPIException { + try (Git git = new Git(db)) { + writeTrashFile("a", "a"); + writeTrashFile("b", "b"); + git.add().addFilepattern("a").addFilepattern("b").call(); + RevCommit firstCommit = git.commit().setMessage("Create a and b") + .call(); + + git.checkout().setOrphan(true).setName("orphan").call(); + git.rm().addFilepattern("a").addFilepattern("b").call(); + writeTrashFile("a", "a"); + git.add().addFilepattern("a").call(); + git.commit().setMessage("Orphan a").call(); + + CherryPickResult result = git.cherryPick().include(firstCommit) + .call(); + assertEquals(CherryPickResult.CherryPickStatus.OK, + result.getStatus()); + + Iterator<RevCommit> history = git.log().call().iterator(); + assertEquals("Create a and b", history.next().getFullMessage()); + assertEquals("Orphan a", history.next().getFullMessage()); + assertFalse(history.hasNext()); + } + } @Test public void testCherryPickDirtyIndex() throws Exception { |