Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java131
1 files changed, 91 insertions, 40 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java
index 24e3bc0773..2357edf6cb 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RefDirectoryTest.java
@@ -48,6 +48,7 @@ import static org.eclipse.jgit.lib.Constants.R_HEADS;
import static org.eclipse.jgit.lib.Constants.R_TAGS;
import static org.eclipse.jgit.lib.Ref.Storage.LOOSE;
import static org.eclipse.jgit.lib.Ref.Storage.NEW;
+import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -62,6 +63,7 @@ import java.io.IOException;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
@@ -137,6 +139,33 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
assertEquals("ref: refs/heads/master\n", read(new File(d, HEAD)));
}
+ @Test(expected = UnsupportedOperationException.class)
+ public void testVersioningNotImplemented_exactRef() throws IOException {
+ assertFalse(refdir.hasVersioning());
+
+ Ref ref = refdir.exactRef(HEAD);
+ assertNotNull(ref);
+ ref.getUpdateIndex(); // Not implemented on FS
+ }
+
+ @Test
+ public void testVersioningNotImplemented_getRefs() throws Exception {
+ assertFalse(refdir.hasVersioning());
+
+ RevCommit C = repo.commit().parent(B).create();
+ repo.update("master", C);
+ List<Ref> refs = refdir.getRefs();
+
+ for (Ref ref : refs) {
+ try {
+ ref.getUpdateIndex();
+ fail("FS doesn't implement ref versioning");
+ } catch (UnsupportedOperationException e) {
+ // ok
+ }
+ }
+ }
+
@Test
public void testGetRefs_EmptyDatabase() throws IOException {
Map<String, Ref> all;
@@ -395,15 +424,15 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
@Test
public void testReadNotExistingBranchConfig() throws IOException {
- assertNull("find branch config", refdir.getRef("config"));
- assertNull("find branch config", refdir.getRef("refs/heads/config"));
+ assertNull("find branch config", refdir.findRef("config"));
+ assertNull("find branch config", refdir.findRef("refs/heads/config"));
}
@Test
public void testReadBranchConfig() throws IOException {
writeLooseRef("refs/heads/config", A);
- assertNotNull("find branch config", refdir.getRef("config"));
+ assertNotNull("find branch config", refdir.findRef("config"));
}
@Test
@@ -647,7 +676,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
@Repeat(n = 100, abortOnFailure = false)
@Test
- public void testGetRef_DiscoversModifiedLoose() throws IOException {
+ public void testFindRef_DiscoversModifiedLoose() throws IOException {
Map<String, Ref> all;
writeLooseRef("refs/heads/master", A);
@@ -656,7 +685,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
writeLooseRef("refs/heads/master", B);
- Ref master = refdir.getRef("refs/heads/master");
+ Ref master = refdir.findRef("refs/heads/master");
assertEquals(B, master.getObjectId());
}
@@ -691,7 +720,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_DiscoversDeletedLoose() throws IOException {
+ public void testFindRef_DiscoversDeletedLoose() throws IOException {
Map<String, Ref> all;
writeLooseRef("refs/heads/master", A);
@@ -699,7 +728,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
assertEquals(A, all.get(HEAD).getObjectId());
deleteLooseRef("refs/heads/master");
- assertNull(refdir.getRef("refs/heads/master"));
+ assertNull(refdir.findRef("refs/heads/master"));
assertTrue(refdir.getRefs(RefDatabase.ALL).isEmpty());
}
@@ -859,7 +888,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_CycleInSymbolicRef() throws IOException {
+ public void testFindRef_CycleInSymbolicRef() throws IOException {
Ref r;
writeLooseRef("refs/1", "ref: refs/2\n");
@@ -869,7 +898,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
writeLooseRef("refs/5", "ref: refs/end\n");
writeLooseRef("refs/end", A);
- r = refdir.getRef("1");
+ r = refdir.findRef("1");
assertEquals("refs/1", r.getName());
assertEquals(A, r.getObjectId());
assertTrue(r.isSymbolic());
@@ -877,12 +906,12 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
writeLooseRef("refs/5", "ref: refs/6\n");
writeLooseRef("refs/6", "ref: refs/end\n");
- r = refdir.getRef("1");
+ r = refdir.findRef("1");
assertNull("missing 1 due to cycle", r);
writeLooseRef("refs/heads/1", B);
- r = refdir.getRef("1");
+ r = refdir.findRef("1");
assertEquals("refs/heads/1", r.getName());
assertEquals(B, r.getObjectId());
assertFalse(r.isSymbolic());
@@ -923,16 +952,16 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_PackedNotPeeled_WrongSort() throws IOException {
+ public void testFindRef_PackedNotPeeled_WrongSort() throws IOException {
writePackedRefs("" + //
v1_0.name() + " refs/tags/v1.0\n" + //
B.name() + " refs/heads/other\n" + //
A.name() + " refs/heads/master\n");
- final Ref head = refdir.getRef(HEAD);
- final Ref master = refdir.getRef("refs/heads/master");
- final Ref other = refdir.getRef("refs/heads/other");
- final Ref tag = refdir.getRef("refs/tags/v1.0");
+ final Ref head = refdir.findRef(HEAD);
+ final Ref master = refdir.findRef("refs/heads/master");
+ final Ref other = refdir.findRef("refs/heads/other");
+ final Ref tag = refdir.findRef("refs/tags/v1.0");
assertEquals(A, master.getObjectId());
assertFalse(master.isPeeled());
@@ -1037,22 +1066,22 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_EmptyDatabase() throws IOException {
+ public void testFindRef_EmptyDatabase() throws IOException {
Ref r;
- r = refdir.getRef(HEAD);
+ r = refdir.findRef(HEAD);
assertTrue(r.isSymbolic());
assertSame(LOOSE, r.getStorage());
assertEquals("refs/heads/master", r.getTarget().getName());
assertSame(NEW, r.getTarget().getStorage());
assertNull(r.getTarget().getObjectId());
- assertNull(refdir.getRef("refs/heads/master"));
- assertNull(refdir.getRef("refs/tags/v1.0"));
- assertNull(refdir.getRef("FETCH_HEAD"));
- assertNull(refdir.getRef("NOT.A.REF.NAME"));
- assertNull(refdir.getRef("master"));
- assertNull(refdir.getRef("v1.0"));
+ assertNull(refdir.findRef("refs/heads/master"));
+ assertNull(refdir.findRef("refs/tags/v1.0"));
+ assertNull(refdir.findRef("FETCH_HEAD"));
+ assertNull(refdir.findRef("NOT.A.REF.NAME"));
+ assertNull(refdir.findRef("master"));
+ assertNull(refdir.findRef("v1.0"));
}
@Test
@@ -1075,7 +1104,29 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_FetchHead() throws IOException {
+ public void testGetAdditionalRefs_OrigHead() throws IOException {
+ writeLooseRef("ORIG_HEAD", A);
+
+ List<Ref> refs = refdir.getAdditionalRefs();
+ assertEquals(1, refs.size());
+
+ Ref r = refs.get(0);
+ assertFalse(r.isSymbolic());
+ assertEquals(A, r.getObjectId());
+ assertEquals("ORIG_HEAD", r.getName());
+ assertFalse(r.isPeeled());
+ assertNull(r.getPeeledObjectId());
+ }
+
+ @Test
+ public void testGetAdditionalRefs_OrigHeadBranch() throws IOException {
+ writeLooseRef("refs/heads/ORIG_HEAD", A);
+ List<Ref> refs = refdir.getAdditionalRefs();
+ assertArrayEquals(new Ref[0], refs.toArray());
+ }
+
+ @Test
+ public void testFindRef_FetchHead() throws IOException {
// This is an odd special case where we need to make sure we read
// exactly the first 40 bytes of the file and nothing further on
// that line, or the remainder of the file.
@@ -1083,7 +1134,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
+ "\tnot-for-merge"
+ "\tbranch 'master' of git://egit.eclipse.org/jgit\n");
- Ref r = refdir.getRef("FETCH_HEAD");
+ Ref r = refdir.findRef("FETCH_HEAD");
assertFalse(r.isSymbolic());
assertEquals(A, r.getObjectId());
assertEquals("FETCH_HEAD", r.getName());
@@ -1109,12 +1160,12 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_AnyHeadWithGarbage() throws IOException {
+ public void testFindRef_AnyHeadWithGarbage() throws IOException {
write(new File(diskRepo.getDirectory(), "refs/heads/A"), A.name()
+ "012345 . this is not a standard reference\n"
+ "#and even more junk\n");
- Ref r = refdir.getRef("refs/heads/A");
+ Ref r = refdir.findRef("refs/heads/A");
assertFalse(r.isSymbolic());
assertEquals(A, r.getObjectId());
assertEquals("refs/heads/A", r.getName());
@@ -1130,11 +1181,11 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_CorruptSymbolicReference() throws IOException {
+ public void testFindRef_CorruptSymbolicReference() throws IOException {
String name = "refs/heads/A";
writeLooseRef(name, "ref: \n");
try {
- refdir.getRef(name);
+ refdir.findRef(name);
fail("read an invalid reference");
} catch (IOException err) {
String msg = err.getMessage();
@@ -1151,12 +1202,12 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
}
@Test
- public void testGetRef_CorruptObjectIdReference() throws IOException {
+ public void testFindRef_CorruptObjectIdReference() throws IOException {
String name = "refs/heads/A";
String content = "zoo" + A.name();
writeLooseRef(name, content + "\n");
try {
- refdir.getRef(name);
+ refdir.findRef(name);
fail("read an invalid reference");
} catch (IOException err) {
String msg = err.getMessage();
@@ -1191,8 +1242,8 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
writeLooseRef("refs/tags/v1_0", v1_0);
writeLooseRef("refs/tags/current", "ref: refs/tags/v1_0\n");
- final Ref tag = refdir.getRef("refs/tags/v1_0");
- final Ref cur = refdir.getRef("refs/tags/current");
+ final Ref tag = refdir.findRef("refs/tags/v1_0");
+ final Ref cur = refdir.findRef("refs/tags/current");
assertEquals(v1_0, tag.getObjectId());
assertFalse(tag.isSymbolic());
@@ -1224,14 +1275,14 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
// reuses cached peeling later, but not immediately due to
// the implementation so we have to fetch it once.
- final Ref tag_p2 = refdir.getRef("refs/tags/v1_0");
+ final Ref tag_p2 = refdir.findRef("refs/tags/v1_0");
assertFalse(tag_p2.isSymbolic());
assertTrue(tag_p2.isPeeled());
assertEquals(v1_0, tag_p2.getObjectId());
assertEquals(v1_0.getObject(), tag_p2.getPeeledObjectId());
- assertSame(tag_p2, refdir.getRef("refs/tags/v1_0"));
- assertSame(tag_p2, refdir.getRef("refs/tags/current").getTarget());
+ assertSame(tag_p2, refdir.findRef("refs/tags/v1_0"));
+ assertSame(tag_p2, refdir.findRef("refs/tags/current").getTarget());
assertSame(tag_p2, refdir.peel(tag_p2));
}
@@ -1239,7 +1290,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
public void testPeelCommit() throws IOException {
writeLooseRef("refs/heads/master", A);
- Ref master = refdir.getRef("refs/heads/master");
+ Ref master = refdir.findRef("refs/heads/master");
assertEquals(A, master.getObjectId());
assertFalse(master.isPeeled());
assertNull(master.getPeeledObjectId());
@@ -1252,7 +1303,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
// reuses cached peeling later, but not immediately due to
// the implementation so we have to fetch it once.
- Ref master_p2 = refdir.getRef("refs/heads/master");
+ Ref master_p2 = refdir.findRef("refs/heads/master");
assertNotSame(master, master_p2);
assertEquals(A, master_p2.getObjectId());
assertTrue(master_p2.isPeeled());
@@ -1304,7 +1355,7 @@ public class RefDirectoryTest extends LocalDiskRepositoryTestCase {
} finally {
myLock.unlock();
}
- Ref ref = refdir.getRef("refs/heads/master");
+ Ref ref = refdir.findRef("refs/heads/master");
assertEquals(Storage.LOOSE, ref.getStorage());
}

Back to the top