aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RewriteGeneratorTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RewriteGeneratorTest.java')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RewriteGeneratorTest.java63
1 files changed, 63 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RewriteGeneratorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RewriteGeneratorTest.java
new file mode 100644
index 0000000000..04e372998c
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revwalk/RewriteGeneratorTest.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2023, HIS eG
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+package org.eclipse.jgit.revwalk;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import org.junit.Test;
+
+public class RewriteGeneratorTest extends RevWalkTestCase {
+
+ @Test
+ public void testRewriteGeneratorDoesNotExhaustPreviousGenerator()
+ throws Exception {
+ RevCommit a = commit();
+ a.flags |= RevWalk.TREE_REV_FILTER_APPLIED;
+ RevCommit b = commit(a);
+
+ LIFORevQueue q = new LIFORevQueue();
+ q.add(a);
+ q.add(b);
+
+ /*
+ * Since the TREE_REV_FILTER has been applied to commit a and the
+ * REWRITE flag has not been applied to commit a, the RewriteGenerator
+ * must not rewrite the parent of b and thus must not call the previous
+ * generator (since b already has its correct parent).
+ */
+ RewriteGenerator rewriteGenerator = new RewriteGenerator(q);
+ rewriteGenerator.next();
+
+ assertNotNull(
+ "Previous generator was unnecessarily exhausted by RewriteGenerator",
+ q.next());
+ }
+
+ @Test
+ public void testRewriteGeneratorRewritesParent() throws Exception {
+ RevCommit a = commit();
+ a.flags |= RevWalk.TREE_REV_FILTER_APPLIED;
+ a.flags |= RevWalk.REWRITE;
+ RevCommit b = commit(a);
+ assertEquals(1, b.getParentCount());
+
+ LIFORevQueue q = new LIFORevQueue();
+ /*
+ * We are only adding commit b (and not a), because PendingGenerator
+ * should never emit a commit that has the REWRITE flag set.
+ */
+ q.add(b);
+
+ RewriteGenerator rewriteGenerator = new RewriteGenerator(q);
+ RevCommit returnedB = rewriteGenerator.next();
+ assertEquals(b.getId(), returnedB.getId());
+ assertEquals(0, returnedB.getParentCount());
+ }
+}