ResolveMerger: Adding test cases for GITLINK deletion
Add test cases which cover content-merge resolve logic for deletion.
Sign-off-by: Demetr Starshov <dstarshov@google.com>
Change-Id: I2f2b37e29adc973a5a0cfcc5c8bc32a2c38efdfa
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/GitlinkMergeTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/GitlinkMergeTest.java
index 3f29157..7ca1e8c 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/GitlinkMergeTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/GitlinkMergeTest.java
@@ -27,6 +27,7 @@
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.test.resources.SampleDataRepositoryTestCase;
import org.eclipse.jgit.treewalk.TreeWalk;
+import org.junit.Ignore;
import org.junit.Test;
public class GitlinkMergeTest extends SampleDataRepositoryTestCase {
@@ -37,6 +38,33 @@
private static final String SUBMODULE_PATH = "submodule.link";
@Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_AddNew() throws Exception {
+ assertGitLinkValue(
+ testGitLink(null, null, LINK_ID3, newResolveMerger(), true),
+ LINK_ID3);
+ }
+
+ @Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_Delete() throws Exception {
+ assertGitLinkDoesntExist(testGitLink(LINK_ID1, LINK_ID1, null,
+ newResolveMerger(), true));
+ }
+
+ @Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_UpdateDelete() throws Exception {
+ testGitLink(LINK_ID1, LINK_ID2, null, newResolveMerger(), false);
+ }
+
+ @Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_DeleteUpdate() throws Exception {
+ testGitLink(LINK_ID1, null, LINK_ID3, newResolveMerger(), false);
+ }
+
+ @Test
public void testGitLinkMerging_UpdateUpdate() throws Exception {
testGitLink(LINK_ID1, LINK_ID2, LINK_ID3, newResolveMerger(), false);
}
@@ -62,6 +90,29 @@
}
@Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_Delete_ignoreConflicts() throws Exception {
+ assertGitLinkDoesntExist(testGitLink(LINK_ID1, LINK_ID1, null,
+ newIgnoreConflictMerger(), true));
+ }
+
+ @Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_UpdateDelete_ignoreConflicts()
+ throws Exception {
+ assertGitLinkValue(testGitLink(LINK_ID1, LINK_ID2, null,
+ newIgnoreConflictMerger(), true), LINK_ID2);
+ }
+
+ @Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_DeleteUpdate_ignoreConflicts()
+ throws Exception {
+ assertGitLinkDoesntExist(testGitLink(LINK_ID1, null, LINK_ID3,
+ newIgnoreConflictMerger(), true));
+ }
+
+ @Test
public void testGitLinkMerging_UpdateUpdate_ignoreConflicts()
throws Exception {
assertGitLinkValue(testGitLink(LINK_ID1, LINK_ID2, LINK_ID3,
@@ -247,6 +298,36 @@
assertFalse(merge);
}
+ @Test
+ @Ignore("Broken")
+ public void testGitLinkMerging_linkBlobDeleted() throws Exception {
+ // We changed a link to a blob, others has deleted this link.
+ DirCache treeB = db.readDirCache();
+ DirCache treeO = db.readDirCache();
+ DirCache treeT = db.readDirCache();
+
+ DirCacheBuilder bTreeBuilder = treeB.builder();
+ DirCacheBuilder oTreeBuilder = treeO.builder();
+ DirCacheBuilder tTreeBuilder = treeT.builder();
+
+ maybeAddLink(bTreeBuilder, LINK_ID1);
+ oTreeBuilder.add(
+ createEntry(SUBMODULE_PATH, FileMode.REGULAR_FILE, "blob 2"));
+
+ bTreeBuilder.finish();
+ oTreeBuilder.finish();
+ tTreeBuilder.finish();
+
+ ObjectInserter ow = db.newObjectInserter();
+ ObjectId b = commit(ow, treeB, new ObjectId[] {});
+ ObjectId o = commit(ow, treeO, new ObjectId[] { b });
+ ObjectId t = commit(ow, treeT, new ObjectId[] { b });
+
+ Merger resolveMerger = MergeStrategy.RESOLVE.newMerger(db);
+ boolean merge = resolveMerger.merge(new ObjectId[] { o, t });
+ assertFalse(merge);
+ }
+
private void maybeAddLink(DirCacheBuilder builder,
@Nullable String linkId) {
if (linkId == null) {
@@ -271,6 +352,16 @@
}
}
+ private void assertGitLinkDoesntExist(Merger resolveMerger)
+ throws Exception {
+ try (TreeWalk tw = new TreeWalk(db)) {
+ tw.setRecursive(true);
+ tw.reset(resolveMerger.getResultTreeId());
+
+ assertFalse(tw.next());
+ }
+ }
+
private static ObjectId commit(ObjectInserter odi, DirCache treeB,
ObjectId[] parentIds) throws Exception {
CommitBuilder c = new CommitBuilder();