aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2022-02-09 00:47:49 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2022-02-09 00:54:06 +0100
commit94a4d30b9551e1f4992cfb0afa2f5229cca3656a (patch)
tree048b71801c3707516250904193acfe0d46331805 /org.eclipse.jgit.test/tst/org/eclipse
parenta054f3ce76c2aaeada7fc9b84f23a3eceb2f7708 (diff)
parentcec6db62af51a43e4c121f135a98de443ef0cd2c (diff)
downloadjgit-94a4d30b9551e1f4992cfb0afa2f5229cca3656a.tar.gz
jgit-94a4d30b9551e1f4992cfb0afa2f5229cca3656a.zip
Merge branch 'stable-6.0'
* stable-6.0: Stop initCause throwing in readAdvertisedRefs Change-Id: I2266814c613fd81e9dfc722532ac3daa30ca66b5
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackConnectionTest.java24
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackPushConnectionTest.java96
2 files changed, 119 insertions, 1 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackConnectionTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackConnectionTest.java
index 7d438c1dd8..505f334905 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackConnectionTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackConnectionTest.java
@@ -15,11 +15,15 @@ import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThrows;
+import java.io.ByteArrayInputStream;
+import java.io.EOFException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
+import org.eclipse.jgit.errors.NoRemoteRepositoryException;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.ObjectIdRef;
@@ -30,6 +34,16 @@ import org.junit.Test;
public class BasePackConnectionTest {
@Test
+ public void testReadAdvertisedRefsShouldThrowExceptionWithOriginalCause() {
+ try (FailingBasePackConnection basePackConnection =
+ new FailingBasePackConnection()) {
+ Exception result = assertThrows(NoRemoteRepositoryException.class,
+ basePackConnection::readAdvertisedRefs);
+ assertEquals(EOFException.class, result.getCause().getClass());
+ }
+ }
+
+ @Test
public void testUpdateWithSymRefsAdds() {
final Ref mainRef = new ObjectIdRef.Unpeeled(Ref.Storage.LOOSE,
"refs/heads/main", ObjectId.fromString(
@@ -244,4 +258,12 @@ public class BasePackConnectionTest {
assertEquals(oidName, headRef.getObjectId().name());
assertEquals(oidName, mainRef.getObjectId().name());
}
-} \ No newline at end of file
+
+ private static class FailingBasePackConnection extends BasePackConnection {
+ FailingBasePackConnection() {
+ super(new TransportLocal(new URIish(),
+ new java.io.File("")));
+ pckIn = new PacketLineIn(new ByteArrayInputStream(new byte[0]));
+ }
+ }
+}
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackPushConnectionTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackPushConnectionTest.java
new file mode 100644
index 0000000000..cf8c5ffe79
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/BasePackPushConnectionTest.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2022 Darius Jokilehto <darius.jokilehto+os@gmail.com>
+ * Copyright (c) 2022 Antonio Barone <syntonyze@gmail.com>
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.transport;
+
+import org.eclipse.jgit.errors.NoRemoteRepositoryException;
+import org.eclipse.jgit.errors.TransportException;
+import org.eclipse.jgit.internal.JGitText;
+import org.junit.Test;
+
+import java.io.ByteArrayInputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.util.Arrays;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.endsWith;
+import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.instanceOf;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThrows;
+
+public class BasePackPushConnectionTest {
+ @Test
+ public void testNoRemoteRepository() {
+ NoRemoteRepositoryException openFetchException =
+ new NoRemoteRepositoryException( new URIish(), "not found");
+ IOException ioException = new IOException("not read");
+
+ try (FailingBasePackPushConnection fbppc =
+ new FailingBasePackPushConnection(openFetchException)) {
+ TransportException result = fbppc.noRepository(ioException);
+
+ assertEquals(openFetchException, result);
+ assertThat(Arrays.asList(result.getSuppressed()),
+ hasItem(ioException));
+ }
+ }
+
+ @Test
+ public void testPushNotPermitted() {
+ URIish uri = new URIish();
+ TransportException openFetchException = new TransportException(uri,
+ "a transport exception");
+ IOException ioException = new IOException("not read");
+
+ try (FailingBasePackPushConnection fbppc =
+ new FailingBasePackPushConnection(openFetchException)) {
+ TransportException result = fbppc.noRepository(ioException);
+
+ assertEquals(TransportException.class, result.getClass());
+ assertThat(result.getMessage(),
+ endsWith(JGitText.get().pushNotPermitted));
+ assertEquals(openFetchException, result.getCause());
+ assertThat(Arrays.asList(result.getSuppressed()),
+ hasItem(ioException));
+ }
+ }
+
+ @Test
+ public void testReadAdvertisedRefPropagatesCauseAndSuppressedExceptions() {
+ IOException ioException = new IOException("not read");
+ try (FailingBasePackPushConnection basePackConnection =
+ new FailingBasePackPushConnection(
+ new NoRemoteRepositoryException(
+ new URIish(), "not found", ioException))) {
+ Exception result = assertThrows(NoRemoteRepositoryException.class,
+ basePackConnection::readAdvertisedRefs);
+ assertEquals(ioException, result.getCause());
+ assertThat(Arrays.asList(result.getSuppressed()),
+ hasItem(instanceOf(EOFException.class)));
+ }
+ }
+
+ private static class FailingBasePackPushConnection
+ extends BasePackPushConnection {
+ FailingBasePackPushConnection(TransportException openFetchException) {
+ super(new TransportLocal(new URIish(),
+ new java.io.File("")) {
+ @Override public FetchConnection openFetch()
+ throws TransportException {
+ throw openFetchException;
+ }
+ });
+ pckIn = new PacketLineIn(new ByteArrayInputStream(new byte[0]));
+ }
+ }
+}