diff options
author | Robin Stocker <robin@nibor.org> | 2012-09-23 01:37:09 +0200 |
---|---|---|
committer | Chris Aniszczyk <zx@twitter.com> | 2012-11-16 10:12:40 -0800 |
commit | a2e691351f4c5217a908410c1bd796efa6b01023 (patch) | |
tree | fa94d37a1bbbacf4b9048b344c4589f10cd840ef /org.eclipse.jgit.test | |
parent | 05a7113002063b80cf48591594c7e01cd2111ec6 (diff) | |
download | jgit-a2e691351f4c5217a908410c1bd796efa6b01023.tar.gz jgit-a2e691351f4c5217a908410c1bd796efa6b01023.zip |
DirCacheEditor: Apply PathEdit for each stage
This behavior was defined in the Javadoc of PathEdit, but not actually
implemented.
It's necessary when one wants to use a PathEdit to check out a specific
stage in apply.
Bug: 390147
Change-Id: Iaed5cf60c554fc17e6c4d188caf4f0231da920d0
Signed-off-by: Chris Aniszczyk <zx@twitter.com>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCachePathEditTest.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCachePathEditTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCachePathEditTest.java index 4a6a42b6d2..28140f330e 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCachePathEditTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCachePathEditTest.java @@ -44,6 +44,9 @@ package org.eclipse.jgit.dircache; import static org.junit.Assert.assertEquals; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.jgit.dircache.DirCacheEditor.PathEdit; import org.eclipse.jgit.lib.FileMode; import org.eclipse.jgit.lib.ObjectId; @@ -66,6 +69,19 @@ public class DirCachePathEditTest { } + private static final class RecordingEdit extends PathEdit { + final List<DirCacheEntry> entries = new ArrayList<DirCacheEntry>(); + + public RecordingEdit(String entryPath) { + super(entryPath); + } + + @Override + public void apply(DirCacheEntry ent) { + entries.add(ent); + } + } + @Test public void testAddDeletePathAndTreeNormalNames() { DirCache dc = DirCache.newInCore(); @@ -114,4 +130,31 @@ public class DirCachePathEditTest { assertEquals("a.", dc.getEntry(0).getPathString()); assertEquals("ab", dc.getEntry(1).getPathString()); } + + @Test + public void testPathEditShouldBeCalledForEachStage() throws Exception { + DirCache dc = DirCache.newInCore(); + DirCacheBuilder builder = new DirCacheBuilder(dc, 3); + builder.add(createEntry("a", DirCacheEntry.STAGE_1)); + builder.add(createEntry("a", DirCacheEntry.STAGE_2)); + builder.add(createEntry("a", DirCacheEntry.STAGE_3)); + builder.finish(); + + DirCacheEditor editor = dc.editor(); + RecordingEdit recorder = new RecordingEdit("a"); + editor.add(recorder); + editor.finish(); + + List<DirCacheEntry> entries = recorder.entries; + assertEquals(3, entries.size()); + assertEquals(DirCacheEntry.STAGE_1, entries.get(0).getStage()); + assertEquals(DirCacheEntry.STAGE_2, entries.get(1).getStage()); + assertEquals(DirCacheEntry.STAGE_3, entries.get(2).getStage()); + } + + private static DirCacheEntry createEntry(String path, int stage) { + DirCacheEntry entry = new DirCacheEntry(path, stage); + entry.setFileMode(FileMode.REGULAR_FILE); + return entry; + } } |