diff options
author | Ian Bull | 2010-03-30 22:26:28 +0000 |
---|---|---|
committer | Ian Bull | 2010-03-30 22:26:28 +0000 |
commit | 3ad938e16227692213f76b5b58571cc8549eb171 (patch) | |
tree | ed632a00d3f30d7614f5a06bad2e8fc33f56bc1c /bundles/org.eclipse.equinox.p2.tests | |
parent | 8ddf94526a1ff72f60b38fabfa1932c004d2d82b (diff) | |
download | rt.equinox.p2-3ad938e16227692213f76b5b58571cc8549eb171.tar.gz rt.equinox.p2-3ad938e16227692213f76b5b58571cc8549eb171.tar.xz rt.equinox.p2-3ad938e16227692213f76b5b58571cc8549eb171.zip |
bug 305237: [repository] Handle operation cancelled exception in execute batch
https://bugs.eclipse.org/bugs/show_bug.cgi?id=305237
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests')
2 files changed, 27 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/BatchExecuteArtifactRepositoryTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/BatchExecuteArtifactRepositoryTest.java index ba65a7ba9..ca1065c99 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/BatchExecuteArtifactRepositoryTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/artifact/repository/BatchExecuteArtifactRepositoryTest.java @@ -302,6 +302,31 @@ public class BatchExecuteArtifactRepositoryTest extends AbstractProvisioningTest /* * This tests that exceptions are properly propagated for a CompositeRepository */ + public void testBatchProcessingCancelled() { + try { + Map properties = new HashMap(); + repositoryFile = getTempFolder(); + repositoryURI = repositoryFile.toURI(); + SimpleArtifactRepository repo = (SimpleArtifactRepository) getArtifactRepositoryManager().createRepository(repositoryURI, "My Repo", IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, properties); + IProgressMonitor monitor = new NullProgressMonitor(); + monitor.setCanceled(true); + + IStatus status = repo.executeBatch(new IRunnableWithProgress() { + public void run(IProgressMonitor monitor) { + if (monitor.isCanceled()) + throw new OperationCanceledException(); + } + }, monitor); + + assertTrue(status.getSeverity() == IStatus.CANCEL); + } catch (Exception e) { + fail("Test failed", e); + } + } + + /* + * This tests that exceptions are properly propagated for a CompositeRepository + */ public void testBatchProcessingExceptionsComposite() { try { FailingCompositeArtifactRepository compositeArtifactRepository = new FailingCompositeArtifactRepository(getArtifactRepositoryManager(), "foo", new URI("http://foo.bar"), null); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java index 855099226..7b1ae7bea 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/TestArtifactRepository.java @@ -329,6 +329,8 @@ public class TestArtifactRepository implements IArtifactRepository { public IStatus executeBatch(IRunnableWithProgress runnable, IProgressMonitor monitor) { try { runnable.run(monitor); + } catch (OperationCanceledException oce) { + return new Status(IStatus.CANCEL, "org.eclipse.equinox.p2.tests.publisher", oce.getMessage(), oce); } catch (Exception e) { return new Status(IStatus.ERROR, "org.eclipse.equinox.p2.tests.publisher", e.getMessage(), e); } |