summaryrefslogtreecommitdiffstats
authorIgor Fedorenko2011-12-20 18:01:15 (EST)
committer Igor Fedorenko2011-12-20 18:01:15 (EST)
commit61745a07839a41c9fcc62e8b1c8701d4a4a2bc22 (patch) (side-by-side diff)
tree771bfaa27497e49d336c2f9816efa5db1a2424eb
parentb13f5223b7b46de850ec16fcf1291d5164c48330 (diff)
downloadorg.eclipse.tycho-61745a07839a41c9fcc62e8b1c8701d4a4a2bc22.zip
org.eclipse.tycho-61745a07839a41c9fcc62e8b1c8701d4a4a2bc22.tar.gz
org.eclipse.tycho-61745a07839a41c9fcc62e8b1c8701d4a4a2bc22.tar.bz2
367255 p2.inf should not leak into sources bundle metadata
Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/publisher/P2GeneratorImplTest.java15
-rw-r--r--tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/SourcesBundleDependencyMetadataGenerator.java8
2 files changed, 22 insertions, 1 deletions
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/publisher/P2GeneratorImplTest.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/publisher/P2GeneratorImplTest.java
index 7d6c761..643d175 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/publisher/P2GeneratorImplTest.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/publisher/P2GeneratorImplTest.java
@@ -62,6 +62,21 @@ public class P2GeneratorImplTest {
//assertEquals("foo;version=0.0.1;roots:=\".\"", attributes.getValue("Eclipse-SourceBundle"));
}
+ @Test
+ public void generateSourceBundleMetadataForProjectWithP2Inf() throws Exception {
+ // p2.inf must not leak into sources bundle
+
+ DependencyMetadataGenerator p2GeneratorImpl = new SourcesBundleDependencyMetadataGenerator();
+ File location = new File("resources/generator/bundle-p2-inf").getCanonicalFile();
+ ArtifactMock artifactMock = new ArtifactMock(location, "org.acme", "foo", "0.0.1", "eclipse-plugin");
+ Set<Object> units = p2GeneratorImpl.generateMetadata(artifactMock, getEnvironments(), null).getMetadata();
+
+ assertEquals(1, units.size());
+
+ IInstallableUnit unit = getUnit("foo.source", units);
+ assertEquals(0, unit.getRequirements().size());
+ }
+
private IInstallableUnit getUnit(String id, Set<Object> units) {
for (Object obj : units) {
IInstallableUnit unit = (IInstallableUnit) obj;
diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/SourcesBundleDependencyMetadataGenerator.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/SourcesBundleDependencyMetadataGenerator.java
index 0faf3a3..7ca986d 100644
--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/SourcesBundleDependencyMetadataGenerator.java
+++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/publisher/SourcesBundleDependencyMetadataGenerator.java
@@ -18,6 +18,7 @@ import java.util.Map;
import org.eclipse.equinox.p2.publisher.IPublisherAction;
import org.eclipse.equinox.p2.publisher.IPublisherAdvice;
+import org.eclipse.equinox.p2.publisher.IPublisherInfo;
import org.eclipse.equinox.p2.publisher.PublisherInfo;
import org.eclipse.osgi.service.resolver.BundleDescription;
import org.eclipse.osgi.service.resolver.StateObjectFactory;
@@ -59,7 +60,12 @@ public class SourcesBundleDependencyMetadataGenerator extends AbstractMetadataGe
BundleDescription bundleDescription = factory.createBundleDescription(factory.createState(false), manifest,
artifact.getLocation().getAbsolutePath(), createId(sourceBundleSymbolicName, version));
bundleDescription.setUserObject(manifest);
- actions.add(new TychoBundleAction(bundleDescription));
+ actions.add(new TychoBundleAction(bundleDescription) {
+ @Override
+ protected void createAdviceFileAdvice(BundleDescription bundleDescription, IPublisherInfo publisherInfo) {
+ // 367255 p2.inf is not applicable to sources bundles
+ }
+ });
} catch (BundleException e) {
throw new RuntimeException(e);
}