Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Watson2013-07-24 14:39:37 +0000
committerThomas Watson2013-07-24 14:39:37 +0000
commit762161eebfe277804f9f938946be49ec8fe006f4 (patch)
treee2ef3ecdb6c6dcee666e770e2786a0843f97d10a /bundles
parente264ba3b3ea6844c0ba80440a79ae3e56a4818a1 (diff)
downloadrt.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')
-rw-r--r--bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java82
-rw-r--r--bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.a.MF7
-rw-r--r--bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.b.MF7
-rw-r--r--bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.c.MF7
-rw-r--r--bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.d.MF5
-rw-r--r--bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.e.MF7
-rw-r--r--bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.f.MF6
-rw-r--r--bundles/org.eclipse.osgi.tests/test_files/containerTests/uses.g.MF5
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

Back to the top