Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- commit ba14acbc31a2d8e1e5ab8d040b2867620702851f
- Author: Tor Arne Vestbø <torarnv@gmail.com>
- Date: Mon Feb 2 20:07:44 2009 +0100
- Fix AbstractTreeIterator path comparion betwen 'a' and 'a/b'
- Signed-off-by: Tor Arne Vestbø <torarnv@gmail.com>
- diff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/treewalk/AbstractTreeIteratorTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/treewalk/AbstractTreeIteratorTest.java
- new file mode 100644
- index 0000000..4c74094
- --- /dev/null
- +++ b/org.spearce.jgit.test/tst/org/spearce/jgit/treewalk/AbstractTreeIteratorTest.java
- @@ -0,0 +1,93 @@
- +/*
- + * Copyright (C) 2009, Tor Arne Vestbø <torarnv@gmail.com>
- + *
- + * All rights reserved.
- + *
- + * Redistribution and use in source and binary forms, with or
- + * without modification, are permitted provided that the following
- + * conditions are met:
- + *
- + * - Redistributions of source code must retain the above copyright
- + * notice, this list of conditions and the following disclaimer.
- + *
- + * - Redistributions in binary form must reproduce the above
- + * copyright notice, this list of conditions and the following
- + * disclaimer in the documentation and/or other materials provided
- + * with the distribution.
- + *
- + * - Neither the name of the Git Development Community nor the
- + * names of its contributors may be used to endorse or promote
- + * products derived from this software without specific prior
- + * written permission.
- + *
- + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- + */
- +
- +package org.spearce.jgit.treewalk;
- +
- +import java.io.IOException;
- +
- +import org.spearce.jgit.errors.IncorrectObjectTypeException;
- +import org.spearce.jgit.lib.FileMode;
- +import org.spearce.jgit.lib.Repository;
- +import org.spearce.jgit.lib.RepositoryTestCase;
- +
- +
- +public class AbstractTreeIteratorTest extends RepositoryTestCase {
- +
- +
- + public class FakeTreeIterator extends WorkingTreeIterator {
- + public FakeTreeIterator(String path, FileMode fileMode) {
- + super(path);
- + mode = fileMode.getBits();
- + pathLen -= 1; // Get rid of extra '/'
- + }
- +
- + @Override
- + public AbstractTreeIterator createSubtreeIterator(Repository repo)
- + throws IncorrectObjectTypeException, IOException {
- + return null;
- + }
- +
- + }
- +
- + public void testPathCompare() throws Exception {
- +
- + assertTrue(new FakeTreeIterator("a", FileMode.TREE).pathCompare(
- + new FakeTreeIterator("a/b", FileMode.REGULAR_FILE)) < 0);
- +
- + assertTrue(new FakeTreeIterator("a", FileMode.TREE).pathCompare(
- + new FakeTreeIterator("a//", FileMode.TREE)) == 0);
- +
- + assertTrue(new FakeTreeIterator("a/b", FileMode.REGULAR_FILE).pathCompare(
- + new FakeTreeIterator("a", FileMode.TREE)) > 0);
- +
- + assertTrue(new FakeTreeIterator("a//", FileMode.TREE).pathCompare(
- + new FakeTreeIterator("a", FileMode.TREE)) == 0);
- +
- + assertTrue(new FakeTreeIterator("a", FileMode.REGULAR_FILE).pathCompare(
- + new FakeTreeIterator("a", FileMode.TREE)) < 0);
- +
- + assertTrue(new FakeTreeIterator("a", FileMode.TREE).pathCompare(
- + new FakeTreeIterator("a", FileMode.REGULAR_FILE)) > 0);
- +
- + assertTrue(new FakeTreeIterator("a", FileMode.REGULAR_FILE).pathCompare(
- + new FakeTreeIterator("a", FileMode.REGULAR_FILE)) == 0);
- +
- + assertTrue(new FakeTreeIterator("a", FileMode.TREE).pathCompare(
- + new FakeTreeIterator("a", FileMode.TREE)) == 0);
- + }
- +
- +}
- diff --git a/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java b/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java
- index 2ff3b99..7dd3f38 100644
- --- a/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java
- +++ b/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java
- @@ -289,9 +289,9 @@ int pathCompare(final AbstractTreeIterator p, final int pMode) {
- }
- if (cPos < aLen)
- - return (a[cPos] & 0xff) - lastPathChar(pMode);
- + return ((a[cPos] & 0xff) - lastPathChar(pMode)) + (aLen - cPos - 1);
- if (cPos < bLen)
- - return lastPathChar(mode) - (b[cPos] & 0xff);
- + return (lastPathChar(mode) - (b[cPos] & 0xff)) - (bLen - cPos - 1);
- return lastPathChar(mode) - lastPathChar(pMode);
- }
Add Comment
Please, Sign In to add comment