diff options
author | Thomas Watson | 2014-04-01 13:25:15 +0000 |
---|---|---|
committer | Thomas Watson | 2014-04-03 13:14:57 +0000 |
commit | 59f35c1b6de6ee2a847e04697fe290ebd6aee0d3 (patch) | |
tree | 3dfbfbd713c4acbdb3387aa166f4892cd5ccb62c /bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java | |
parent | 011467683f36c2161bee717d1c05bd07fc0d51fe (diff) | |
download | rt.equinox.framework-59f35c1b6de6ee2a847e04697fe290ebd6aee0d3.tar.gz rt.equinox.framework-59f35c1b6de6ee2a847e04697fe290ebd6aee0d3.tar.xz rt.equinox.framework-59f35c1b6de6ee2a847e04697fe290ebd6aee0d3.zip |
Bug 431708 - Invalid wirings may result from substitutable exports
- Add a test cases for invalid wiring from substituted exports
Diffstat (limited to 'bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java')
-rw-r--r-- | bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/container/TestModuleContainer.java | 59 |
1 files changed, 59 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 48e20cd58..86578bbd5 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 @@ -863,6 +863,65 @@ public class TestModuleContainer extends AbstractTest { } @Test + public void testSubstitutableExports03() throws BundleException, IOException { + DummyContainerAdaptor adaptor = createDummyAdaptor(); + ModuleContainer container = adaptor.getContainer(); + + // install order does not really matter + Module g = installDummyModule("sub.g.MF", "g", container); + Module f = installDummyModule("sub.f.MF", "f", container); + Module e = installDummyModule("sub.e.MF", "e", container); + + // resolve order does matter so that transitive dependencies are pulled in + // and cause substitution to happen in a certain way + container.resolve(Arrays.asList(g, f, e), true); + + ModuleWiring wiringE = e.getCurrentRevision().getWiring(); + ModuleWiring wiringF = f.getCurrentRevision().getWiring(); + + List<ModuleWire> providedWiresE = wiringE.getProvidedModuleWires(PackageNamespace.PACKAGE_NAMESPACE); + Assert.assertEquals("Wrong number of provided wires.", 3, providedWiresE.size()); + + Collection<ModuleRevision> requirers = new HashSet<ModuleRevision>(); + for (ModuleWire wire : providedWiresE) { + requirers.add(wire.getRequirer()); + } + Assert.assertTrue("f does not require.", requirers.remove(f.getCurrentRevision())); + Assert.assertTrue("g does not require.", requirers.remove(g.getCurrentRevision())); + Assert.assertTrue("No requirers should be left: " + requirers, requirers.isEmpty()); + + List<ModuleWire> providedWiresF = wiringF.getProvidedModuleWires(PackageNamespace.PACKAGE_NAMESPACE); + Assert.assertEquals("Wrong number of provided wires: " + providedWiresF, 0, providedWiresF.size()); + } + + @Test + public void testSubstitutableExports04() throws BundleException, IOException { + DummyContainerAdaptor adaptor = createDummyAdaptor(); + ModuleContainer container = adaptor.getContainer(); + + // install order does not really matter + installDummyModule("sub.h.MF", "h", container); + Module i = installDummyModule("sub.i.MF", "i", container); + installDummyModule("sub.j.MF", "j", container); + Module k = installDummyModule("sub.k.MF", "k", container); + + // resolve order does matter so that transitive dependencies are pulled in + // and cause substitution to happen in a certain way + container.resolve(Arrays.asList(k), true); + + ModuleWiring wiringI = i.getCurrentRevision().getWiring(); + ModuleWiring wiringK = k.getCurrentRevision().getWiring(); + + List<ModuleWire> requiredWiresK = wiringK.getRequiredModuleWires(PackageNamespace.PACKAGE_NAMESPACE); + + // I should be the provider for all of K + Assert.assertEquals("Wrong number of required wires: " + requiredWiresK, 2, requiredWiresK.size()); + for (ModuleWire moduleWire : requiredWiresK) { + Assert.assertEquals("Wrong provider: " + moduleWire.getProviderWiring(), wiringI, moduleWire.getProviderWiring()); + } + } + + @Test public void testLazy01() throws BundleException, IOException { DummyContainerAdaptor adaptor = createDummyAdaptor(); ModuleContainer container = adaptor.getContainer(); |