summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test
diff options
context:
space:
mode:
authorShawn Pearce <sop@google.com>2012-10-25 17:55:22 -0400
committerGerrit Code Review @ Eclipse.org <gerrit@eclipse.org>2012-10-25 17:55:22 -0400
commit4e6e267b8a8f9d9ef44b61adfdcba7e6ce1023f5 (patch)
treeb332029e09e3bcaf13240c12a4be2d7605214a59 /org.eclipse.jgit.test
parentcd61e85fa1c78b2f0f9d62fb7bb785cc7af45c4b (diff)
parent45edb41a9ed1248964cb4bf0d635f2643406d123 (diff)
downloadjgit-4e6e267b8a8f9d9ef44b61adfdcba7e6ce1023f5.tar.gz
jgit-4e6e267b8a8f9d9ef44b61adfdcba7e6ce1023f5.zip
Merge "Fix for Iff768422c, use offset 0 when going back to work tree iterator"
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java
index 209b2b8377..a06149e844 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java
@@ -49,6 +49,7 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
+import java.io.IOException;
import java.security.MessageDigest;
import org.eclipse.jgit.api.Git;
@@ -58,6 +59,9 @@ import org.eclipse.jgit.dircache.DirCacheEditor;
import org.eclipse.jgit.dircache.DirCacheEntry;
import org.eclipse.jgit.dircache.DirCacheIterator;
import org.eclipse.jgit.dircache.DirCacheEditor.PathEdit;
+import org.eclipse.jgit.errors.CorruptObjectException;
+import org.eclipse.jgit.errors.IncorrectObjectTypeException;
+import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.lib.ObjectId;
@@ -429,6 +433,43 @@ public class FileTreeIteratorTest extends RepositoryTestCase {
assertTrue(indexIter.idEqual(workTreeIter));
}
+ @Test
+ public void idOffset() throws Exception {
+ Git git = new Git(db);
+ writeTrashFile("fileAinfsonly", "A");
+ File fileBinindex = writeTrashFile("fileBinindex", "B");
+ fsTick(fileBinindex);
+ git.add().addFilepattern("fileBinindex").call();
+ writeTrashFile("fileCinfsonly", "C");
+ TreeWalk tw = new TreeWalk(db);
+ DirCacheIterator indexIter = new DirCacheIterator(db.readDirCache());
+ FileTreeIterator workTreeIter = new FileTreeIterator(db);
+ tw.addTree(indexIter);
+ tw.addTree(workTreeIter);
+ workTreeIter.setDirCacheIterator(tw, 0);
+ assertEntry("d46c305e85b630558ee19cc47e73d2e5c8c64cdc", "a,", tw);
+ assertEntry("58ee403f98538ec02409538b3f80adf610accdec", "a,b", tw);
+ assertEntry("0000000000000000000000000000000000000000", "a", tw);
+ assertEntry("b8d30ff397626f0f1d3538d66067edf865e201d6", "a0b", tw);
+ // The reason for adding this test. Check that the id is correct for
+ // mixed
+ assertEntry("8c7e5a667f1b771847fe88c01c3de34413a1b220",
+ "fileAinfsonly", tw);
+ assertEntry("7371f47a6f8bd23a8fa1a8b2a9479cdd76380e54", "fileBinindex",
+ tw);
+ assertEntry("96d80cd6c4e7158dbebd0849f4fb7ce513e5828c",
+ "fileCinfsonly", tw);
+ assertFalse(tw.next());
+ }
+
+ private void assertEntry(String sha1string, String path, TreeWalk tw)
+ throws MissingObjectException, IncorrectObjectTypeException,
+ CorruptObjectException, IOException {
+ assertTrue(tw.next());
+ assertEquals(path, tw.getPathString());
+ assertEquals(sha1string, tw.getObjectId(1).getName() /* 1=filetree here */);
+ }
+
private static String nameOf(final AbstractTreeIterator i) {
return RawParseUtils.decode(Constants.CHARSET, i.path, 0, i.pathLen);
}