Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
index b7fe6efa0..23769f6d9 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/CompositeArtifactRepositoryTest.java
@@ -10,6 +10,13 @@
*******************************************************************************/
package org.eclipse.equinox.p2.tests.artifact.repository;
+import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus;
+import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.statusWithMessageWhich;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.junit.matchers.JUnitMatchers.hasItem;
+
import java.io.*;
import java.lang.reflect.Field;
import java.net.URI;
@@ -573,6 +580,27 @@ public class CompositeArtifactRepositoryTest extends AbstractProvisioningTest {
assertTrue(repo2File.length() == destFile2.length());
}
+ public void testGetArtifactsWithErrorInChild() throws Exception {
+ repositoryURI = getTestData("1", "/testData/artifactRepo/composite/errorInChild").toURI();
+ IArtifactRepository repo = getArtifactRepositoryManager().loadRepository(repositoryURI, null);
+
+ IArtifactRequest[] requests = new IArtifactRequest[] {new ArtifactRequest(new ArtifactKey("osgi.bundle", "plugin", Version.parseVersion("1.0.0")), null) {
+ @Override
+ public void perform(IArtifactRepository sourceRepository, IProgressMonitor monitor) {
+ setResult(sourceRepository.getArtifact(sourceRepository.getArtifactDescriptors(getArtifactKey())[0], new ByteArrayOutputStream(), monitor));
+ }
+ }};
+
+ IStatus status = repo.getArtifacts(requests, null);
+
+ assertThat(status, is(errorStatus()));
+ assertThat(status, is(statusWithMessageWhich(containsString("while reading artifacts from child repositories"))));
+
+ // bug 391400: status should point to repository with problem
+ String brokenChildURI = repositoryURI.toString() + "child";
+ assertThat(Arrays.asList(status.getChildren()), hasItem(statusWithMessageWhich(containsString(brokenChildURI))));
+ }
+
public void testLoadingRepositoryRemote() {
File knownGoodRepoLocation = getTestData("0.1", "/testData/artifactRepo/composite/good.remote");

Back to the top