diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java index ba6c2b94989..692bbe53321 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java @@ -35,6 +35,7 @@ import org.eclipse.pde.core.target.NameVersionDescriptor; import org.osgi.framework.Constants; import org.osgi.framework.Version; +import org.osgi.framework.namespace.HostNamespace; import org.osgi.framework.wiring.BundleRequirement; import org.osgi.framework.wiring.BundleRevision; import org.osgi.framework.wiring.BundleWire; @@ -196,6 +197,19 @@ public static Set findRequirementsClosure(Collection requiredWires = wiring.getRequiredWires(null); for (BundleWire wire : requiredWires) { BundleRevision declaringBundle = wire.getRequirement().getRevision(); @@ -222,6 +236,10 @@ private static void addNewRequiredBundle(BundleDescription bundle, Set bundles = List.of(bundleHost, bundleA); + // It's important that the host is first + + Set noFragmentsClosure = findRequirementsClosure(bundles); + assertThat(noFragmentsClosure).isEqualTo(Set.of(bundleHost, bundleFragment, bundleA, bundleB)); + } + @Test public void testFindRequirementsClosure_includeOptional() throws Exception {