diff options
author | Thomas Watson | 2013-07-24 14:39:37 +0000 |
---|---|---|
committer | Thomas Watson | 2013-07-24 14:39:37 +0000 |
commit | 762161eebfe277804f9f938946be49ec8fe006f4 (patch) | |
tree | e2ef3ecdb6c6dcee666e770e2786a0843f97d10a /bundles | |
parent | e264ba3b3ea6844c0ba80440a79ae3e56a4818a1 (diff) | |
download | rt.equinox.framework-762161eebfe277804f9f938946be49ec8fe006f4.tar.gz rt.equinox.framework-762161eebfe277804f9f938946be49ec8fe006f4.tar.xz rt.equinox.framework-762161eebfe277804f9f938946be49ec8fe006f4.zip |
Bug 413537 - Marketplace Install trashes JDT
- add new tests
Diffstat (limited to 'bundles')
8 files changed, 126 insertions, 0 deletions
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java index e35e0eb95..ba5bdbaab 100644 --- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java +++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java @@ -1225,6 +1225,88 @@ public class TestModuleContainer extends AbstractTest { Assert.assertEquals("b1 should not resolve.", State.INSTALLED, b1.getState()); } + /* + * Test that a resolve process does not blow up because of one unresolvable uses constraint issue + */ + @Test + public void testUses1() throws BundleException, IOException, ResolutionException { + DummyContainerAdaptor adaptor = createDummyAdaptor(); + ModuleContainer container = adaptor.getContainer(); + + Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container); + + container.resolve(Arrays.asList(systemBundle), true); + Module uses_a = installDummyModule("uses.a.MF", "a", container); + Module uses_b = installDummyModule("uses.b.MF", "b", container); + Module uses_c = installDummyModule("uses.c.MF", "c", container); + + try { + container.resolve(null, false); + } catch (ResolutionException e) { + // should not happen here + Assert.fail(e.getMessage()); + } + Assert.assertEquals("a should resolve.", State.RESOLVED, uses_a.getState()); + Assert.assertEquals("b should resolve.", State.RESOLVED, uses_b.getState()); + Assert.assertEquals("c should not resolve.", State.INSTALLED, uses_c.getState()); + } + + /* + * Test that split packages are handled ok with uses constraints + */ + @Test + public void testUses2() throws BundleException, IOException, ResolutionException { + DummyContainerAdaptor adaptor = createDummyAdaptor(); + ModuleContainer container = adaptor.getContainer(); + + Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container); + + container.resolve(Arrays.asList(systemBundle), true); + Module uses_a = installDummyModule("uses.a.MF", "a", container); + Module uses_b = installDummyModule("uses.b.MF", "b", container); + Module uses_d = installDummyModule("uses.d.MF", "d", container); + + try { + container.resolve(null, false); + } catch (ResolutionException e) { + // should not happen here + Assert.fail(e.getMessage()); + } + Assert.assertEquals("a should resolve.", State.RESOLVED, uses_a.getState()); + Assert.assertEquals("b should resolve.", State.RESOLVED, uses_b.getState()); + Assert.assertEquals("d should resolve.", State.RESOLVED, uses_d.getState()); + } + + /* + * Test that split packages are handled ok with uses constraints + */ + @Test + public void testUses3() throws BundleException, IOException, ResolutionException { + DummyContainerAdaptor adaptor = createDummyAdaptor(); + ModuleContainer container = adaptor.getContainer(); + + Module systemBundle = installDummyModule("system.bundle.MF", Constants.SYSTEM_BUNDLE_LOCATION, container); + + container.resolve(Arrays.asList(systemBundle), true); + Module uses_a = installDummyModule("uses.a.MF", "a", container); + Module uses_b = installDummyModule("uses.b.MF", "b", container); + Module uses_e = installDummyModule("uses.e.MF", "e", container); + Module uses_f = installDummyModule("uses.f.MF", "f", container); + Module uses_g = installDummyModule("uses.g.MF", "g", container); + + try { + container.resolve(null, false); + } catch (ResolutionException e) { + // should not happen here + Assert.fail(e.getMessage()); + } + Assert.assertEquals("a should resolve.", State.RESOLVED, uses_a.getState()); + Assert.assertEquals("b should resolve.", State.RESOLVED, uses_b.getState()); + Assert.assertEquals("e should resolve.", State.RESOLVED, uses_e.getState()); + Assert.assertEquals("f should resolve.", State.RESOLVED, uses_f.getState()); + Assert.assertEquals("g should not resolve.", State.INSTALLED, uses_g.getState()); + } + @Test public void testMultiCardinalityUses() throws BundleException, IOException, ResolutionException { DummyContainerAdaptor adaptor = createDummyAdaptor(); diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.a.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.a.MF new file mode 100644 index 000000000..04c49cc3a --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.a.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: uses.a +Bundle-Version: 1.0 +Export-Package: + uses1; version="1.0"; uses:="uses2", + uses2; version="1.0" diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.b.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.b.MF new file mode 100644 index 000000000..0e4954991 --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.b.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: uses.b +Bundle-Version: 1.0 +Export-Package: + uses1; version="2.0"; uses:="uses2", + uses2; version="2.0" diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.c.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.c.MF new file mode 100644 index 000000000..c044f9362 --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.c.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: uses.c +Bundle-Version: 1.0 +Import-Package: + uses1; version="[1.0,2.0)", + uses2; version="[2.0,3.0)" diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.d.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.d.MF new file mode 100644 index 000000000..8be07bc39 --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.d.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: uses.d +Bundle-Version: 1.0 +Require-Bundle: uses.a, uses.b diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.e.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.e.MF new file mode 100644 index 000000000..a6c7102ba --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.e.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: uses.e +Bundle-Version: 1.0 +Export-Package: + uses3; version="1.0"; uses:="uses2" +Require-Bundle: uses.f diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.f.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.f.MF new file mode 100644 index 000000000..83f9322a8 --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.f.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: uses.f +Bundle-Version: 1.0 +Export-Package: + uses2; version="2.0" diff --git a/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.g.MF b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.g.MF new file mode 100644 index 000000000..39d1b5cd4 --- /dev/null +++ b/bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.g.MF @@ -0,0 +1,5 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-SymbolicName: uses.g +Bundle-Version: 1.0 +Require-Bundle: uses.a, uses.b, uses.e |