diff options
author | Shawn Pearce <sop@google.com> | 2012-10-25 17:55:22 -0400 |
---|---|---|
committer | Gerrit Code Review @ Eclipse.org <gerrit@eclipse.org> | 2012-10-25 17:55:22 -0400 |
commit | 4e6e267b8a8f9d9ef44b61adfdcba7e6ce1023f5 (patch) | |
tree | b332029e09e3bcaf13240c12a4be2d7605214a59 /org.eclipse.jgit.test | |
parent | cd61e85fa1c78b2f0f9d62fb7bb785cc7af45c4b (diff) | |
parent | 45edb41a9ed1248964cb4bf0d635f2643406d123 (diff) | |
download | jgit-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.java | 41 |
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); } |