summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2021-06-26 16:36:55 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2021-06-26 16:36:55 +0200
commit8bd0161c83c54911be59bbfdee00eeb9c1f6adb9 (patch)
treee8e7487095723e8376fe814ab70f6a08489723be /org.eclipse.jgit.test/tst
parent2533a284c1bf30477c4a61f4893929201a1244f3 (diff)
parente6ace4a96d7019a83f3a06036070f60ff48b3a7a (diff)
downloadjgit-8bd0161c83c54911be59bbfdee00eeb9c1f6adb9.tar.gz
jgit-8bd0161c83c54911be59bbfdee00eeb9c1f6adb9.zip
Merge branch 'stable-5.11' into stable-5.12
* stable-5.11: Retry loose object read upon "Stale file handle" exception Ignore missing javadoc in test bundles Change-Id: Ia4dc886c920cec3c9da86e1a90a0af68bd016b4f
Diffstat (limited to 'org.eclipse.jgit.test/tst')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java
index d269457eb1..316e33639d 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java
@@ -44,8 +44,12 @@ package org.eclipse.jgit.internal.storage.file;
import static java.nio.charset.StandardCharsets.UTF_8;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
import java.io.File;
import java.io.IOException;
@@ -69,6 +73,7 @@ import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.util.FS;
import org.junit.Assume;
import org.junit.Test;
+import org.mockito.Mockito;
public class ObjectDirectoryTest extends RepositoryTestCase {
@@ -195,6 +200,42 @@ public class ObjectDirectoryTest extends RepositoryTestCase {
}
@Test
+ public void testOpenLooseObjectSuppressStaleFileHandleException()
+ throws Exception {
+ ObjectId id = ObjectId
+ .fromString("873fb8d667d05436d728c52b1d7a09528e6eb59b");
+ WindowCursor curs = new WindowCursor(db.getObjectDatabase());
+
+ LooseObjects mock = mock(LooseObjects.class);
+ UnpackedObjectCache unpackedObjectCacheMock = mock(
+ UnpackedObjectCache.class);
+
+ Mockito.when(mock.getObjectLoader(any(), any(), any()))
+ .thenThrow(new IOException("Stale File Handle"));
+ Mockito.when(mock.open(curs, id)).thenCallRealMethod();
+ Mockito.when(mock.unpackedObjectCache())
+ .thenReturn(unpackedObjectCacheMock);
+
+ assertNull(mock.open(curs, id));
+ verify(unpackedObjectCacheMock).remove(id);
+ }
+
+ @Test
+ public void testOpenLooseObjectPropagatesIOExceptions() throws Exception {
+ ObjectId id = ObjectId
+ .fromString("873fb8d667d05436d728c52b1d7a09528e6eb59b");
+ WindowCursor curs = new WindowCursor(db.getObjectDatabase());
+
+ LooseObjects mock = mock(LooseObjects.class);
+
+ Mockito.when(mock.getObjectLoader(any(), any(), any()))
+ .thenThrow(new IOException("some IO failure"));
+ Mockito.when(mock.open(curs, id)).thenCallRealMethod();
+
+ assertThrows(IOException.class, () -> mock.open(curs, id));
+ }
+
+ @Test
public void testShallowFileCorrupt() throws Exception {
FileRepository repository = createBareRepository();
ObjectDirectory dir = repository.getObjectDatabase();