|
|
|
@ -47,14 +47,18 @@
|
|
|
|
|
package org.eclipse.jgit.lib; |
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.assertEquals; |
|
|
|
|
import static org.junit.Assert.assertFalse; |
|
|
|
|
import static org.junit.Assert.assertNull; |
|
|
|
|
import static org.junit.Assert.assertSame; |
|
|
|
|
import static org.junit.Assert.assertTrue; |
|
|
|
|
import static org.junit.Assert.fail; |
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
|
|
|
|
import org.eclipse.jgit.api.Git; |
|
|
|
|
import org.eclipse.jgit.errors.AmbiguousObjectException; |
|
|
|
|
import org.eclipse.jgit.errors.IncorrectObjectTypeException; |
|
|
|
|
import org.eclipse.jgit.errors.RevisionSyntaxException; |
|
|
|
|
import org.eclipse.jgit.revwalk.RevCommit; |
|
|
|
|
import org.junit.Test; |
|
|
|
|
|
|
|
|
@ -133,9 +137,11 @@ public class RepositoryResolveTest extends SampleDataRepositoryTestCase {
|
|
|
|
|
public void testDistance_past_root() throws IOException { |
|
|
|
|
assertEquals("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1",db.resolve("6462e7d8024396b14d7651e2ec11e2bbf07a05c4~1").name()); |
|
|
|
|
assertNull(db.resolve("6462e7d8024396b14d7651e2ec11e2bbf07a05c4~~")); |
|
|
|
|
assertNull(db.resolve("6462e7d8024396b14d7651e2ec11e2bbf07a05c4^^")); |
|
|
|
|
assertNull(db.resolve("6462e7d8024396b14d7651e2ec11e2bbf07a05c4~2")); |
|
|
|
|
assertNull(db.resolve("6462e7d8024396b14d7651e2ec11e2bbf07a05c4~99")); |
|
|
|
|
assertNull(db.resolve("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1~~")); |
|
|
|
|
assertNull(db.resolve("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1^^")); |
|
|
|
|
assertNull(db.resolve("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1~2")); |
|
|
|
|
assertNull(db.resolve("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1~99")); |
|
|
|
|
assertEquals("42e4e7c5e507e113ebbb7801b16b52cf867b7ce1",db.resolve("master~6").name()); |
|
|
|
@ -289,6 +295,53 @@ public class RepositoryResolveTest extends SampleDataRepositoryTestCase {
|
|
|
|
|
assertEquals("refs/remotes/origin/main", db.simplify("@{upstream}")); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void invalidNames() throws AmbiguousObjectException, IOException { |
|
|
|
|
assertTrue(Repository.isValidRefName("x/a")); |
|
|
|
|
assertTrue(Repository.isValidRefName("x/a.b")); |
|
|
|
|
assertTrue(Repository.isValidRefName("x/a@b")); |
|
|
|
|
assertTrue(Repository.isValidRefName("x/a@b{x}")); |
|
|
|
|
assertTrue(Repository.isValidRefName("x/a/b")); |
|
|
|
|
assertTrue(Repository.isValidRefName("x/a]b")); // odd, yes..
|
|
|
|
|
assertTrue(Repository.isValidRefName("x/\u00a0")); // unicode is fine,
|
|
|
|
|
// even hard space
|
|
|
|
|
assertFalse(Repository.isValidRefName("x/.a")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a.")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a..b")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x//a")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a/")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a//b")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a[b")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a^b")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a*b")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a?b")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a~1")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a\\b")); |
|
|
|
|
assertFalse(Repository.isValidRefName("x/a\u0000")); |
|
|
|
|
|
|
|
|
|
assertUnparseable("."); |
|
|
|
|
assertUnparseable("x@{3"); |
|
|
|
|
assertUnparseable("x[b"); |
|
|
|
|
assertUnparseable("x y"); |
|
|
|
|
assertUnparseable("x."); |
|
|
|
|
assertUnparseable(".x"); |
|
|
|
|
assertUnparseable("a..b"); |
|
|
|
|
assertUnparseable("x\\b"); |
|
|
|
|
assertUnparseable("a~b"); |
|
|
|
|
assertUnparseable("a^b"); |
|
|
|
|
assertUnparseable("a\u0000"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void assertUnparseable(String s) throws AmbiguousObjectException, |
|
|
|
|
IOException { |
|
|
|
|
try { |
|
|
|
|
db.resolve(s); |
|
|
|
|
fail("'" + s + "' should be unparseable"); |
|
|
|
|
} catch (RevisionSyntaxException e) { |
|
|
|
|
// good
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static ObjectId id(String name) { |
|
|
|
|
return ObjectId.fromString(name); |
|
|
|
|
} |
|
|
|
|