]> source.dussan.org Git - jgit.git/commitdiff
ResolveMergerTest: Add tests for content merges 16/94416/1
authorDave Borowitz <dborowitz@google.com>
Tue, 4 Apr 2017 21:23:14 +0000 (17:23 -0400)
committerDave Borowitz <dborowitz@google.com>
Tue, 4 Apr 2017 21:27:15 +0000 (17:27 -0400)
Change-Id: I2b85cc239e9b3090426c956cbf9af3deb4106a41

org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java

index a08dbbcc83b249a236d317747793915c39545272..255262255a302a74aaea73a40a8b82138f6ff8d0 100644 (file)
@@ -586,6 +586,64 @@ public class ResolveMergerTest extends RepositoryTestCase {
                }
        }
 
+       @Theory
+       public void checkContentMergeNoConflict(MergeStrategy strategy)
+                       throws Exception {
+               Git git = Git.wrap(db);
+
+               writeTrashFile("file", "1\n2\n3");
+               git.add().addFilepattern("file").call();
+               RevCommit first = git.commit().setMessage("added file").call();
+
+               writeTrashFile("file", "1master\n2\n3");
+               git.commit().setAll(true).setMessage("modified file on master").call();
+
+               git.checkout().setCreateBranch(true).setStartPoint(first)
+                               .setName("side").call();
+               writeTrashFile("file", "1\n2\n3side");
+               RevCommit sideCommit = git.commit().setAll(true)
+                               .setMessage("modified file on side").call();
+
+               git.checkout().setName("master").call();
+               MergeResult result =
+                               git.merge().setStrategy(strategy).include(sideCommit).call();
+               assertEquals(MergeStatus.MERGED, result.getMergeStatus());
+               String expected = "1master\n2\n3side";
+               assertEquals(expected, read("file"));
+       }
+
+       @Theory
+       public void checkContentMergeConflict(MergeStrategy strategy)
+                       throws Exception {
+               Git git = Git.wrap(db);
+
+               writeTrashFile("file", "1\n2\n3");
+               git.add().addFilepattern("file").call();
+               RevCommit first = git.commit().setMessage("added file").call();
+
+               writeTrashFile("file", "1master\n2\n3");
+               git.commit().setAll(true).setMessage("modified file on master").call();
+
+               git.checkout().setCreateBranch(true).setStartPoint(first)
+                               .setName("side").call();
+               writeTrashFile("file", "1side\n2\n3");
+               RevCommit sideCommit = git.commit().setAll(true)
+                               .setMessage("modified file on side").call();
+
+               git.checkout().setName("master").call();
+               MergeResult result =
+                               git.merge().setStrategy(strategy).include(sideCommit).call();
+               assertEquals(MergeStatus.CONFLICTING, result.getMergeStatus());
+               String expected = "<<<<<<< HEAD\n"
+                               + "1master\n"
+                               + "=======\n"
+                               + "1side\n"
+                               + ">>>>>>> " + sideCommit.name() + "\n"
+                               + "2\n"
+                               + "3";
+               assertEquals(expected, read("file"));
+       }
+
        /**
         * Merging after criss-cross merges. In this case we merge together two
         * commits which have two equally good common ancestors