summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.test/tst/org')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractRenameDetectionTestCase.java101
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/FilteredRenameDetectorTest.java154
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java71
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/util/HookTest.java29
4 files changed, 271 insertions, 84 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractRenameDetectionTestCase.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractRenameDetectionTestCase.java
new file mode 100644
index 0000000000..a8967f27ec
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/AbstractRenameDetectionTestCase.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2022, Google Inc. and others
+ *
+ * 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.diff;
+
+import static org.junit.Assert.assertEquals;
+
+import org.eclipse.jgit.diff.DiffEntry.ChangeType;
+import org.eclipse.jgit.junit.RepositoryTestCase;
+import org.eclipse.jgit.junit.TestRepository;
+import org.eclipse.jgit.lib.AbbreviatedObjectId;
+import org.eclipse.jgit.lib.FileMode;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.Repository;
+import org.junit.Before;
+
+public abstract class AbstractRenameDetectionTestCase
+ extends RepositoryTestCase {
+
+ protected static final String PATH_A = "src/A";
+
+ protected static final String PATH_B = "src/B";
+
+ protected static final String PATH_H = "src/H";
+
+ protected static final String PATH_Q = "src/Q";
+
+ protected TestRepository<Repository> testDb;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ testDb = new TestRepository<>(db);
+ }
+
+ protected ObjectId blob(String content) throws Exception {
+ return testDb.blob(content).copy();
+ }
+
+ protected static void assertRename(DiffEntry o, DiffEntry n, int score,
+ DiffEntry rename) {
+ assertEquals(ChangeType.RENAME, rename.getChangeType());
+
+ assertEquals(o.getOldPath(), rename.getOldPath());
+ assertEquals(n.getNewPath(), rename.getNewPath());
+
+ assertEquals(o.getOldMode(), rename.getOldMode());
+ assertEquals(n.getNewMode(), rename.getNewMode());
+
+ assertEquals(o.getOldId(), rename.getOldId());
+ assertEquals(n.getNewId(), rename.getNewId());
+
+ assertEquals(score, rename.getScore());
+ }
+
+ protected static void assertCopy(DiffEntry o, DiffEntry n, int score,
+ DiffEntry copy) {
+ assertEquals(ChangeType.COPY, copy.getChangeType());
+
+ assertEquals(o.getOldPath(), copy.getOldPath());
+ assertEquals(n.getNewPath(), copy.getNewPath());
+
+ assertEquals(o.getOldMode(), copy.getOldMode());
+ assertEquals(n.getNewMode(), copy.getNewMode());
+
+ assertEquals(o.getOldId(), copy.getOldId());
+ assertEquals(n.getNewId(), copy.getNewId());
+
+ assertEquals(score, copy.getScore());
+ }
+
+ protected static void assertAdd(String newName, ObjectId newId,
+ FileMode newMode, DiffEntry add) {
+ assertEquals(DiffEntry.DEV_NULL, add.oldPath);
+ assertEquals(DiffEntry.A_ZERO, add.oldId);
+ assertEquals(FileMode.MISSING, add.oldMode);
+ assertEquals(ChangeType.ADD, add.changeType);
+ assertEquals(newName, add.newPath);
+ assertEquals(AbbreviatedObjectId.fromObjectId(newId), add.newId);
+ assertEquals(newMode, add.newMode);
+ }
+
+ protected static void assertDelete(String oldName, ObjectId oldId,
+ FileMode oldMode, DiffEntry delete) {
+ assertEquals(DiffEntry.DEV_NULL, delete.newPath);
+ assertEquals(DiffEntry.A_ZERO, delete.newId);
+ assertEquals(FileMode.MISSING, delete.newMode);
+ assertEquals(ChangeType.DELETE, delete.changeType);
+ assertEquals(oldName, delete.oldPath);
+ assertEquals(AbbreviatedObjectId.fromObjectId(oldId), delete.oldId);
+ assertEquals(oldMode, delete.oldMode);
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/FilteredRenameDetectorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/FilteredRenameDetectorTest.java
new file mode 100644
index 0000000000..bfda36db76
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/FilteredRenameDetectorTest.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2022, Simeon Andreev and others
+ *
+ * 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.diff;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+import java.util.Arrays;
+import java.util.List;
+import org.eclipse.jgit.internal.diff.FilteredRenameDetector;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.treewalk.filter.PathFilter;
+import org.junit.Before;
+import org.junit.Test;
+
+public class FilteredRenameDetectorTest extends AbstractRenameDetectionTestCase {
+
+ private FilteredRenameDetector frd;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ frd = new FilteredRenameDetector(db);
+ }
+
+ @Test
+ public void testExactRename() throws Exception {
+ ObjectId foo = blob("foo");
+ ObjectId bar = blob("bar");
+
+ DiffEntry a = DiffEntry.add(PATH_A, foo);
+ DiffEntry b = DiffEntry.delete(PATH_Q, foo);
+
+ DiffEntry c = DiffEntry.add(PATH_H, bar);
+ DiffEntry d = DiffEntry.delete(PATH_B, bar);
+
+ List<DiffEntry> changes = Arrays.asList(a, b, c, d);
+ PathFilter filter = PathFilter.create(PATH_A);
+ List<DiffEntry> entries = frd.compute(changes, filter);
+ assertEquals("Unexpected entries in: " + entries, 1, entries.size());
+ assertRename(b, a, 100, entries.get(0));
+ }
+
+ @Test
+ public void testExactRename_multipleFilters() throws Exception {
+ ObjectId foo = blob("foo");
+ ObjectId bar = blob("bar");
+
+ DiffEntry a = DiffEntry.add(PATH_A, foo);
+ DiffEntry b = DiffEntry.delete(PATH_Q, foo);
+
+ DiffEntry c = DiffEntry.add(PATH_H, bar);
+ DiffEntry d = DiffEntry.delete(PATH_B, bar);
+
+ List<DiffEntry> changes = Arrays.asList(a, b, c, d);
+ List<PathFilter> filters = Arrays.asList(PathFilter.create(PATH_A),
+ PathFilter.create(PATH_H));
+ List<DiffEntry> entries = frd.compute(changes, filters);
+ assertEquals("Unexpected entries in: " + entries, 2, entries.size());
+ assertRename(b, a, 100, entries.get(0));
+ assertRename(d, c, 100, entries.get(1));
+ }
+
+ @Test
+ public void testInexactRename() throws Exception {
+ ObjectId aId = blob("foo\nbar\nbaz\nblarg\n");
+ ObjectId bId = blob("foo\nbar\nbaz\nblah\n");
+ DiffEntry a = DiffEntry.add(PATH_A, aId);
+ DiffEntry b = DiffEntry.delete(PATH_Q, bId);
+
+ ObjectId cId = blob("some\nsort\nof\ntext\n");
+ ObjectId dId = blob("completely\nunrelated\ntext\n");
+ DiffEntry c = DiffEntry.add(PATH_B, cId);
+ DiffEntry d = DiffEntry.delete(PATH_H, dId);
+
+ List<DiffEntry> changes = Arrays.asList(a, b, c, d);
+ PathFilter filter = PathFilter.create(PATH_A);
+ List<DiffEntry> entries = frd.compute(changes, filter);
+ assertEquals("Unexpected entries: " + entries, 1, entries.size());
+ assertRename(b, a, 66, entries.get(0));
+ }
+
+ @Test
+ public void testInexactRename_multipleFilters() throws Exception {
+ ObjectId aId = blob("foo\nbar\nbaz\nblarg\n");
+ ObjectId bId = blob("foo\nbar\nbaz\nblah\n");
+ DiffEntry a = DiffEntry.add(PATH_A, aId);
+ DiffEntry b = DiffEntry.delete(PATH_Q, bId);
+
+ ObjectId cId = blob("some\nsort\nof\ntext\n");
+ ObjectId dId = blob("completely\nunrelated\ntext\n");
+ DiffEntry c = DiffEntry.add(PATH_B, cId);
+ DiffEntry d = DiffEntry.delete(PATH_H, dId);
+
+ List<DiffEntry> changes = Arrays.asList(a, b, c, d);
+ List<PathFilter> filters = Arrays.asList(PathFilter.create(PATH_A),
+ PathFilter.create(PATH_H));
+ List<DiffEntry> entries = frd.compute(changes, filters);
+ assertEquals("Unexpected entries: " + entries, 2, entries.size());
+ assertRename(b, a, 66, entries.get(0));
+ assertSame(d, entries.get(1));
+ }
+
+ @Test
+ public void testNoRenames() throws Exception {
+ ObjectId aId = blob("");
+ ObjectId bId = blob("blah1");
+ ObjectId cId = blob("");
+ ObjectId dId = blob("blah2");
+
+ DiffEntry a = DiffEntry.add(PATH_A, aId);
+ DiffEntry b = DiffEntry.delete(PATH_Q, bId);
+
+ DiffEntry c = DiffEntry.add(PATH_H, cId);
+ DiffEntry d = DiffEntry.delete(PATH_B, dId);
+
+ List<DiffEntry> changes = Arrays.asList(a, b, c, d);
+ PathFilter filter = PathFilter.create(PATH_A);
+ List<DiffEntry> entries = frd.compute(changes, filter);
+ assertEquals("Unexpected entries in: " + entries, 1, entries.size());
+ assertSame(a, entries.get(0));
+ }
+
+ @Test
+ public void testNoRenames_multipleFilters() throws Exception {
+ ObjectId aId = blob("");
+ ObjectId bId = blob("blah1");
+ ObjectId cId = blob("");
+ ObjectId dId = blob("blah2");
+
+ DiffEntry a = DiffEntry.add(PATH_A, aId);
+ DiffEntry b = DiffEntry.delete(PATH_Q, bId);
+
+ DiffEntry c = DiffEntry.add(PATH_H, cId);
+ DiffEntry d = DiffEntry.delete(PATH_B, dId);
+
+ List<DiffEntry> changes = Arrays.asList(a, b, c, d);
+ List<PathFilter> filters = Arrays.asList(PathFilter.create(PATH_A),
+ PathFilter.create(PATH_H));
+ List<DiffEntry> entries = frd.compute(changes, filters);
+ assertEquals("Unexpected entries in: " + entries, 2, entries.size());
+ assertSame(a, entries.get(0));
+ assertSame(c, entries.get(1));
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java
index 5edb60ce37..ad560e3b8a 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/RenameDetectorTest.java
@@ -18,31 +18,20 @@ import static org.junit.Assert.fail;
import java.util.Arrays;
import java.util.List;
-import org.eclipse.jgit.diff.DiffEntry.ChangeType;
-import org.eclipse.jgit.junit.RepositoryTestCase;
-import org.eclipse.jgit.junit.TestRepository;
import org.eclipse.jgit.lib.AbbreviatedObjectId;
import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.Repository;
import org.junit.Before;
import org.junit.Test;
-public class RenameDetectorTest extends RepositoryTestCase {
- private static final String PATH_A = "src/A";
- private static final String PATH_B = "src/B";
- private static final String PATH_H = "src/H";
- private static final String PATH_Q = "src/Q";
+public class RenameDetectorTest extends AbstractRenameDetectionTestCase {
private RenameDetector rd;
- private TestRepository<Repository> testDb;
-
@Override
@Before
public void setUp() throws Exception {
super.setUp();
- testDb = new TestRepository<>(db);
rd = new RenameDetector(db);
}
@@ -675,62 +664,4 @@ public class RenameDetectorTest extends RepositoryTestCase {
assertSame(c, entries.get(2));
assertSame(d, entries.get(3));
}
-
- private ObjectId blob(String content) throws Exception {
- return testDb.blob(content).copy();
- }
-
- private static void assertRename(DiffEntry o, DiffEntry n, int score,
- DiffEntry rename) {
- assertEquals(ChangeType.RENAME, rename.getChangeType());
-
- assertEquals(o.getOldPath(), rename.getOldPath());
- assertEquals(n.getNewPath(), rename.getNewPath());
-
- assertEquals(o.getOldMode(), rename.getOldMode());
- assertEquals(n.getNewMode(), rename.getNewMode());
-
- assertEquals(o.getOldId(), rename.getOldId());
- assertEquals(n.getNewId(), rename.getNewId());
-
- assertEquals(score, rename.getScore());
- }
-
- private static void assertCopy(DiffEntry o, DiffEntry n, int score,
- DiffEntry copy) {
- assertEquals(ChangeType.COPY, copy.getChangeType());
-
- assertEquals(o.getOldPath(), copy.getOldPath());
- assertEquals(n.getNewPath(), copy.getNewPath());
-
- assertEquals(o.getOldMode(), copy.getOldMode());
- assertEquals(n.getNewMode(), copy.getNewMode());
-
- assertEquals(o.getOldId(), copy.getOldId());
- assertEquals(n.getNewId(), copy.getNewId());
-
- assertEquals(score, copy.getScore());
- }
-
- private static void assertAdd(String newName, ObjectId newId,
- FileMode newMode, DiffEntry add) {
- assertEquals(DiffEntry.DEV_NULL, add.oldPath);
- assertEquals(DiffEntry.A_ZERO, add.oldId);
- assertEquals(FileMode.MISSING, add.oldMode);
- assertEquals(ChangeType.ADD, add.changeType);
- assertEquals(newName, add.newPath);
- assertEquals(AbbreviatedObjectId.fromObjectId(newId), add.newId);
- assertEquals(newMode, add.newMode);
- }
-
- private static void assertDelete(String oldName, ObjectId oldId,
- FileMode oldMode, DiffEntry delete) {
- assertEquals(DiffEntry.DEV_NULL, delete.newPath);
- assertEquals(DiffEntry.A_ZERO, delete.newId);
- assertEquals(FileMode.MISSING, delete.newMode);
- assertEquals(ChangeType.DELETE, delete.changeType);
- assertEquals(oldName, delete.oldPath);
- assertEquals(AbbreviatedObjectId.fromObjectId(oldId), delete.oldId);
- assertEquals(oldMode, delete.oldMode);
- }
}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/HookTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/HookTest.java
index 33ed360efd..1231aefee0 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/HookTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/HookTest.java
@@ -9,6 +9,7 @@
*/
package org.eclipse.jgit.util;
+import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
@@ -77,7 +78,7 @@ public class HookTest extends RepositoryTestCase {
"Rejected by \"commit-msg\" hook.\nstderr\n",
e.getMessage());
assertEquals("unexpected output from commit-msg hook", "test\n",
- out.toString());
+ out.toString(UTF_8));
}
}
@@ -95,7 +96,7 @@ public class HookTest extends RepositoryTestCase {
git.commit().setMessage("commit")
.setHookOutputStream(new PrintStream(out)).call();
assertEquals(".git/COMMIT_EDITMSG\n",
- out.toString("UTF-8"));
+ out.toString(UTF_8));
}
@Test
@@ -129,9 +130,9 @@ public class HookTest extends RepositoryTestCase {
new PrintStream(out), new PrintStream(err), "stdin");
assertEquals("unexpected hook output", "test arg1 arg2\nstdin\n",
- out.toString("UTF-8"));
+ out.toString(UTF_8));
assertEquals("unexpected output on stderr stream", "stderr\n",
- err.toString("UTF-8"));
+ err.toString(UTF_8));
assertEquals("unexpected exit code", 0, res.getExitCode());
assertEquals("unexpected process status", ProcessResult.Status.OK,
res.getStatus());
@@ -160,7 +161,7 @@ public class HookTest extends RepositoryTestCase {
}
assertEquals("unexpected hook output",
"test pre-commit\ntest commit-msg .git/COMMIT_EDITMSG\ntest post-commit\n",
- out.toString("UTF-8"));
+ out.toString(UTF_8));
}
@Test
@@ -181,9 +182,9 @@ public class HookTest extends RepositoryTestCase {
assertEquals("unexpected hook output",
"test arg1 arg2\nstdin\n" + db.getDirectory().getAbsolutePath()
+ '\n' + db.getWorkTree().getAbsolutePath() + '\n',
- out.toString("UTF-8"));
+ out.toString(UTF_8));
assertEquals("unexpected output on stderr stream", "stderr\n",
- err.toString("UTF-8"));
+ err.toString(UTF_8));
assertEquals("unexpected exit code", 0, res.getExitCode());
assertEquals("unexpected process status", ProcessResult.Status.OK,
res.getStatus());
@@ -214,9 +215,9 @@ public class HookTest extends RepositoryTestCase {
"test arg1 arg2\nstdin\n"
+ db.getDirectory().getAbsolutePath() + '\n'
+ db.getWorkTree().getAbsolutePath() + '\n',
- out.toString("UTF-8"));
+ out.toString(UTF_8));
assertEquals("unexpected output on stderr stream", "stderr\n",
- err.toString("UTF-8"));
+ err.toString(UTF_8));
assertEquals("unexpected exit code", 0, res.getExitCode());
assertEquals("unexpected process status", ProcessResult.Status.OK,
res.getStatus());
@@ -249,9 +250,9 @@ public class HookTest extends RepositoryTestCase {
"test arg1 arg2\nstdin\n"
+ db.getDirectory().getAbsolutePath() + '\n'
+ db.getWorkTree().getAbsolutePath() + '\n',
- out.toString("UTF-8"));
+ out.toString(UTF_8));
assertEquals("unexpected output on stderr stream", "stderr\n",
- err.toString("UTF-8"));
+ err.toString(UTF_8));
assertEquals("unexpected exit code", 0, res.getExitCode());
assertEquals("unexpected process status", ProcessResult.Status.OK,
res.getStatus());
@@ -281,9 +282,9 @@ public class HookTest extends RepositoryTestCase {
"test arg1 arg2\nstdin\n"
+ db.getDirectory().getAbsolutePath() + '\n'
+ db.getWorkTree().getAbsolutePath() + '\n',
- out.toString("UTF-8"));
+ out.toString(UTF_8));
assertEquals("unexpected output on stderr stream", "stderr\n",
- err.toString("UTF-8"));
+ err.toString(UTF_8));
assertEquals("unexpected exit code", 0, res.getExitCode());
assertEquals("unexpected process status", ProcessResult.Status.OK,
res.getStatus());
@@ -310,7 +311,7 @@ public class HookTest extends RepositoryTestCase {
"Rejected by \"pre-commit\" hook.\nstderr\n",
e.getMessage());
assertEquals("unexpected output from pre-commit hook", "test\n",
- out.toString());
+ out.toString(UTF_8));
}
}