summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorMarc Strapetz <marc.strapetz@syntevo.com>2014-10-30 19:36:49 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2015-01-02 23:23:22 +0100
commit1cb566844116fc280969e4a89be8fa1c6e3a7d72 (patch)
treee2b523768e18d767a958b86d4bfb3ab69872978a /org.eclipse.jgit.test
parentc053900c5bc89d2b55c563e04bc1edab53cdc143 (diff)
downloadjgit-1cb566844116fc280969e4a89be8fa1c6e3a7d72.tar.gz
jgit-1cb566844116fc280969e4a89be8fa1c6e3a7d72.zip
Rename detection should canonicalize line endings
Native Git canonicalizes line endings when detecting renames, more specifically it replaces CRLF by LF. See: hash_chars in diffcore-delta.c Bug: 449545 Change-Id: Iec2aab12ae9e67074cccb7fbd4d9defe176a0130 Signed-off-by: Marc Strapetz <marc.strapetz@syntevo.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/SimilarityIndexTest.java62
1 files changed, 44 insertions, 18 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/SimilarityIndexTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/SimilarityIndexTest.java
index 95423609a9..4724677bb8 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/SimilarityIndexTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/SimilarityIndexTest.java
@@ -83,7 +83,7 @@ public class SimilarityIndexTest {
+ "B\n" //
+ "B\n").getBytes("UTF-8");
SimilarityIndex si = new SimilarityIndex();
- si.hash(new ByteArrayInputStream(in), in.length);
+ si.hash(new ByteArrayInputStream(in), in.length, false);
assertEquals(2, si.size());
}
@@ -104,6 +104,48 @@ public class SimilarityIndexTest {
}
@Test
+ public void testCommonScore_SameFiles_CR_canonicalization()
+ throws TableFullException {
+ String text = "" //
+ + "A\r\n" //
+ + "B\r\n" //
+ + "D\r\n" //
+ + "B\r\n";
+ SimilarityIndex src = hash(text);
+ SimilarityIndex dst = hash(text.replace("\r", ""));
+ assertEquals(8, src.common(dst));
+ assertEquals(8, dst.common(src));
+
+ assertEquals(100, src.score(dst, 100));
+ assertEquals(100, dst.score(src, 100));
+ }
+
+ @Test
+ public void testCommonScoreLargeObject_SameFiles_CR_canonicalization()
+ throws TableFullException, IOException {
+ String text = "" //
+ + "A\r\n" //
+ + "B\r\n" //
+ + "D\r\n" //
+ + "B\r\n";
+ SimilarityIndex src = new SimilarityIndex();
+ byte[] bytes1 = text.getBytes("UTF-8");
+ src.hash(new ByteArrayInputStream(bytes1), bytes1.length, true);
+ src.sort();
+
+ SimilarityIndex dst = new SimilarityIndex();
+ byte[] bytes2 = text.replace("\r", "").getBytes("UTF-8");
+ dst.hash(new ByteArrayInputStream(bytes2), bytes2.length, true);
+ dst.sort();
+
+ assertEquals(8, src.common(dst));
+ assertEquals(8, dst.common(src));
+
+ assertEquals(100, src.score(dst, 100));
+ assertEquals(100, dst.score(src, 100));
+ }
+
+ @Test
public void testCommonScore_EmptyFiles() throws TableFullException {
SimilarityIndex src = hash("");
SimilarityIndex dst = hash("");
@@ -132,24 +174,8 @@ public class SimilarityIndexTest {
}
private static SimilarityIndex hash(String text) throws TableFullException {
- SimilarityIndex src = new SimilarityIndex() {
- @Override
- void hash(byte[] raw, int ptr, final int end)
- throws TableFullException {
- while (ptr < end) {
- int hash = raw[ptr] & 0xff;
- int start = ptr;
- do {
- int c = raw[ptr++] & 0xff;
- if (c == '\n')
- break;
- } while (ptr < end && ptr - start < 64);
- add(hash, ptr - start);
- }
- }
- };
+ SimilarityIndex src = new SimilarityIndex();
byte[] raw = Constants.encode(text);
- src.setFileSize(raw.length);
src.hash(raw, 0, raw.length);
src.sort();
return src;