summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/META-INF/MANIFEST.MF86
-rw-r--r--org.eclipse.jgit.test/pom.xml2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java26
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java39
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java191
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java30
6 files changed, 329 insertions, 45 deletions
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index 00659d8de3..4b2e535c2d 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -2,54 +2,54 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 4.7.1.qualifier
+Bundle-Version: 4.8.0.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %provider_name
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.googlecode.javaewah;version="[1.1.6,2.0.0)",
- org.eclipse.jgit.api;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.api.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.attributes;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.awtui;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.blame;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.diff;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.dircache;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.errors;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.events;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.fnmatch;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.gitrepo;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.hooks;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.ignore;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.ignore.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.pack;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.junit;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lfs;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.lib;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.merge;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.nls;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.notes;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.patch;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.pgm;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.pgm.internal;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revplot;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.revwalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.file;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.storage.pack;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.submodule;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.http;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.transport.resolver;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.io;version="[4.7.1,4.8.0)",
- org.eclipse.jgit.util.sha1;version="[4.7.1,4.8.0)",
+ org.eclipse.jgit.api;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.api.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.attributes;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.awtui;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.blame;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.diff;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.dircache;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.errors;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.events;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.fnmatch;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.gitrepo;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.hooks;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.ignore;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.ignore.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.junit;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lfs;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.lib;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.merge;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.nls;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.notes;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.patch;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.pgm;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.pgm.internal;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revplot;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.revwalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.file;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.storage.pack;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.submodule;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.http;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.io;version="[4.8.0,4.9.0)",
+ org.eclipse.jgit.util.sha1;version="[4.8.0,4.9.0)",
org.junit;version="[4.4.0,5.0.0)",
org.junit.experimental.theories;version="[4.4.0,5.0.0)",
org.junit.rules;version="[4.11.0,5.0.0)",
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index aac4c333a9..e3b0dcdcda 100644
--- a/org.eclipse.jgit.test/pom.xml
+++ b/org.eclipse.jgit.test/pom.xml
@@ -52,7 +52,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>4.7.1-SNAPSHOT</version>
+ <version>4.8.0-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
index b8f8dcb5ad..4130b7ee5b 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractDiffTestCase.java
@@ -196,6 +196,32 @@ public abstract class AbstractDiffTestCase {
}
@Test
+ public void testEdit_DeleteNearCommonTail() {
+ EditList r = diff(t("aCq}nD}nb"), t("aq}nb"));
+ assertEquals(new Edit(1, 2, 1, 1), r.get(0));
+ assertEquals(new Edit(5, 8, 4, 4), r.get(1));
+ assertEquals(2, r.size());
+ }
+
+ @Test
+ public void testEdit_DeleteNearCommonCenter() {
+ EditList r = diff(t("abcd123123uvwxpq"), t("aBcd123uvwxPq"));
+ assertEquals(new Edit(1, 2, 1, 2), r.get(0));
+ assertEquals(new Edit(7, 10, 7, 7), r.get(1));
+ assertEquals(new Edit(14, 15, 11, 12), r.get(2));
+ assertEquals(3, r.size());
+ }
+
+ @Test
+ public void testEdit_InsertNearCommonCenter() {
+ EditList r = diff(t("aBcd123uvwxPq"), t("abcd123123uvwxpq"));
+ assertEquals(new Edit(1, 2, 1, 2), r.get(0));
+ assertEquals(new Edit(7, 7, 7, 10), r.get(1));
+ assertEquals(new Edit(11, 12, 14, 15), r.get(2));
+ assertEquals(3, r.size());
+ }
+
+ @Test
public void testEdit_LinuxBug() {
EditList r = diff(t("a{bcdE}z"), t("a{0bcdEE}z"));
assertEquals(new Edit(2, 2, 2, 3), r.get(0));
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
index d4a3d62dad..5af62b6704 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeAlgorithmTest.java
@@ -132,6 +132,45 @@ public class MergeAlgorithmTest {
}
/**
+ * Merge two modifications with a shared delete at the end. The underlying
+ * diff algorithm has to provide consistent edit results to get the expected
+ * merge result.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testTwoModificationsWithSharedDelete() throws IOException {
+ assertEquals(t("Cb}n}"),
+ merge("ab}n}n}", "ab}n}", "Cb}n}"));
+ }
+
+ /**
+ * Merge modifications with a shared insert in the middle. The
+ * underlying diff algorithm has to provide consistent edit
+ * results to get the expected merge result.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testModificationsWithMiddleInsert() throws IOException {
+ assertEquals(t("aBcd123123uvwxPq"),
+ merge("abcd123uvwxpq", "aBcd123123uvwxPq", "abcd123123uvwxpq"));
+ }
+
+ /**
+ * Merge modifications with a shared delete in the middle. The
+ * underlying diff algorithm has to provide consistent edit
+ * results to get the expected merge result.
+ *
+ * @throws IOException
+ */
+ @Test
+ public void testModificationsWithMiddleDelete() throws IOException {
+ assertEquals(t("Abz}z123Q"),
+ merge("abz}z}z123q", "Abz}z123Q", "abz}z123q"));
+ }
+
+ /**
* Test a conflicting region at the very start of the text.
*
* @throws IOException
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
index a08dbbcc83..d8b8750ba3 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/ResolveMergerTest.java
@@ -42,12 +42,17 @@
*/
package org.eclipse.jgit.merge;
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.eclipse.jgit.lib.Constants.OBJ_BLOB;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.util.Arrays;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.MergeResult;
@@ -59,8 +64,14 @@ import org.eclipse.jgit.dircache.DirCache;
import org.eclipse.jgit.errors.NoMergeBaseException;
import org.eclipse.jgit.errors.NoMergeBaseException.MergeBaseFailureReason;
import org.eclipse.jgit.junit.RepositoryTestCase;
+import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
import org.eclipse.jgit.merge.ResolveMerger.MergeFailureReason;
import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevObject;
+import org.eclipse.jgit.revwalk.RevTree;
+import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.treewalk.FileTreeIterator;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FileUtils;
@@ -408,7 +419,7 @@ public class ResolveMergerTest extends RepositoryTestCase {
/**
* Merging two equal subtrees with an incore merger should lead to a merged
- * state (The 'Gerrit' use case).
+ * state.
*
* @param strategy
* @throws Exception
@@ -442,6 +453,43 @@ public class ResolveMergerTest extends RepositoryTestCase {
}
/**
+ * Merging two equal subtrees with an incore merger should lead to a merged
+ * state, without using a Repository (the 'Gerrit' use case).
+ *
+ * @param strategy
+ * @throws Exception
+ */
+ @Theory
+ public void checkMergeEqualTreesInCore_noRepo(MergeStrategy strategy)
+ throws Exception {
+ Git git = Git.wrap(db);
+
+ writeTrashFile("d/1", "orig");
+ git.add().addFilepattern("d/1").call();
+ RevCommit first = git.commit().setMessage("added d/1").call();
+
+ writeTrashFile("d/1", "modified");
+ RevCommit masterCommit = git.commit().setAll(true)
+ .setMessage("modified d/1 on master").call();
+
+ git.checkout().setCreateBranch(true).setStartPoint(first)
+ .setName("side").call();
+ writeTrashFile("d/1", "modified");
+ RevCommit sideCommit = git.commit().setAll(true)
+ .setMessage("modified d/1 on side").call();
+
+ git.rm().addFilepattern("d/1").call();
+ git.rm().addFilepattern("d").call();
+
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ ThreeWayMerger resolveMerger =
+ (ThreeWayMerger) strategy.newMerger(ins, db.getConfig());
+ boolean noProblems = resolveMerger.merge(masterCommit, sideCommit);
+ assertTrue(noProblems);
+ }
+ }
+
+ /**
* Merging two equal subtrees when the index and HEAD does not contain any
* file in that subtree should lead to a merged state.
*
@@ -586,6 +634,136 @@ 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 checkContentMergeNoConflict_noRepo(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");
+ RevCommit masterCommit = 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();
+
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ ResolveMerger merger =
+ (ResolveMerger) strategy.newMerger(ins, db.getConfig());
+ boolean noProblems = merger.merge(masterCommit, sideCommit);
+ assertTrue(noProblems);
+ assertEquals("1master\n2\n3side",
+ readBlob(merger.getResultTreeId(), "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"));
+ }
+
+ @Theory
+ public void checkContentMergeConflict_noTree(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");
+ RevCommit masterCommit = 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();
+
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ ResolveMerger merger =
+ (ResolveMerger) strategy.newMerger(ins, db.getConfig());
+ boolean noProblems = merger.merge(masterCommit, sideCommit);
+ assertFalse(noProblems);
+ assertEquals(Arrays.asList("file"), merger.getUnmergedPaths());
+
+ MergeFormatter fmt = new MergeFormatter();
+ merger.getMergeResults().get("file");
+ try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+ fmt.formatMerge(out, merger.getMergeResults().get("file"),
+ "BASE", "OURS", "THEIRS", UTF_8.name());
+ String expected = "<<<<<<< OURS\n"
+ + "1master\n"
+ + "=======\n"
+ + "1side\n"
+ + ">>>>>>> THEIRS\n"
+ + "2\n"
+ + "3";
+ assertEquals(expected, new String(out.toByteArray(), UTF_8));
+ }
+ }
+ }
+
/**
* Merging after criss-cross merges. In this case we merge together two
* commits which have two equally good common ancestors
@@ -817,4 +995,15 @@ public class ResolveMergerTest extends RepositoryTestCase {
curMod >= lastMod);
}
}
+
+ private String readBlob(ObjectId treeish, String path) throws Exception {
+ TestRepository<?> tr = new TestRepository<>(db);
+ RevWalk rw = tr.getRevWalk();
+ RevTree tree = rw.parseTree(treeish);
+ RevObject obj = tr.get(tree, path);
+ if (obj == null) {
+ return null;
+ }
+ return new String(rw.getObjectReader().open(obj, OBJ_BLOB).getBytes(), UTF_8);
+ }
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java
index db9d87dd17..951568e7bb 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/SimpleMergeTest.java
@@ -72,6 +72,16 @@ public class SimpleMergeTest extends SampleDataRepositoryTestCase {
}
@Test
+ public void testOurs_noRepo() throws IOException {
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ Merger ourMerger = MergeStrategy.OURS.newMerger(ins, db.getConfig());
+ boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
+ assertTrue(merge);
+ assertEquals(db.resolve("a^{tree}"), ourMerger.getResultTreeId());
+ }
+ }
+
+ @Test
public void testTheirs() throws IOException {
Merger ourMerger = MergeStrategy.THEIRS.newMerger(db);
boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
@@ -80,6 +90,16 @@ public class SimpleMergeTest extends SampleDataRepositoryTestCase {
}
@Test
+ public void testTheirs_noRepo() throws IOException {
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ Merger ourMerger = MergeStrategy.THEIRS.newMerger(db);
+ boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
+ assertTrue(merge);
+ assertEquals(db.resolve("c^{tree}"), ourMerger.getResultTreeId());
+ }
+ }
+
+ @Test
public void testTrivialTwoWay() throws IOException {
Merger ourMerger = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(db);
boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
@@ -104,6 +124,16 @@ public class SimpleMergeTest extends SampleDataRepositoryTestCase {
}
@Test
+ public void testTrivialTwoWay_noRepo() throws IOException {
+ try (ObjectInserter ins = db.newObjectInserter()) {
+ Merger ourMerger = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(ins, db.getConfig());
+ boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a^0^0^0"), db.resolve("a^0^0^1") });
+ assertTrue(merge);
+ assertEquals(db.resolve("a^0^0^{tree}"), ourMerger.getResultTreeId());
+ }
+ }
+
+ @Test
public void testTrivialTwoWay_conflict() throws IOException {
Merger ourMerger = MergeStrategy.SIMPLE_TWO_WAY_IN_CORE.newMerger(db);
boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("f"), db.resolve("g") });