[573659] Add test case
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug573659/bug573659.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug573659/bug573659.qvto
new file mode 100644
index 0000000..cb2d2fd
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug573659/bug573659.qvto
@@ -0,0 +1,5 @@
+import models.bug573659_referenced.bug573659_referenced;
+
+transformation bug573659();
+
+main() {}
\ No newline at end of file
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug573659_referenced/bug573659_referenced.qvto b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug573659_referenced/bug573659_referenced.qvto
new file mode 100644
index 0000000..504c596
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/parserTestData/models/bug573659_referenced/bug573659_referenced.qvto
@@ -0,0 +1 @@
+library bug573659_referenced();
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/PluginDependencyProjectData.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/PluginDependencyProjectData.java
new file mode 100644
index 0000000..ec48bba
--- /dev/null
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/PluginDependencyProjectData.java
@@ -0,0 +1,79 @@
+package org.eclipse.m2m.tests.qvt.oml.transform;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.m2m.tests.qvt.oml.TestProject;
+import org.eclipse.pde.core.plugin.IPluginBase;
+import org.eclipse.pde.core.plugin.IPluginImport;
+import org.eclipse.pde.core.project.IBundleProjectDescription;
+import org.eclipse.pde.internal.core.bundle.WorkspaceBundlePluginModel;
+import org.eclipse.pde.internal.core.plugin.WorkspacePluginModelBase;
+import org.eclipse.pde.internal.core.project.PDEProject;
+import org.eclipse.pde.internal.core.util.CoreUtility;
+import org.junit.Assert;
+
+@SuppressWarnings("restriction")
+public class PluginDependencyProjectData extends ReferencedProjectData {
+
+ public PluginDependencyProjectData(String myName, String referencedName) {
+ super(myName, referencedName, false);
+ }
+
+ private WorkspacePluginModelBase myPluginModel;
+ private WorkspacePluginModelBase referencedPluginModel;
+
+ @Override
+ public void prepare(TestProject project) throws Exception {
+ super.prepare(project);
+
+ IProject myProject = project.getProject();
+ CoreUtility.addNatureToProject(myProject, IBundleProjectDescription.PLUGIN_NATURE, new NullProgressMonitor());
+
+ IFile myPluginXml = PDEProject.getPluginXml(myProject);
+ IFile myManifest = PDEProject.getManifest(myProject);
+ myPluginModel = new WorkspaceBundlePluginModel(myManifest, myPluginXml);
+ IPluginBase myPluginBase = myPluginModel.getPluginBase();
+ myPluginBase.setId(myProject.getName());
+
+ IProject[] referencedProjects = myProject.getReferencedProjects();
+
+ IProjectDescription desc = myProject.getDescription();
+ desc.setReferencedProjects(new IProject[] {});
+ myProject.setDescription(desc, null);
+ Assert.assertEquals(myProject.getReferencedProjects().length, 0);
+
+ for (IProject referencedProject : referencedProjects) {
+
+ CoreUtility.addNatureToProject(referencedProject, IBundleProjectDescription.PLUGIN_NATURE, new NullProgressMonitor());
+
+ IFile referencedPluginXml = PDEProject.getPluginXml(referencedProject);
+ IFile referencedManifest = PDEProject.getManifest(referencedProject);
+ referencedPluginModel = new WorkspaceBundlePluginModel(referencedManifest, referencedPluginXml);
+ IPluginBase referencedPluginBase = referencedPluginModel.getPluginBase();
+ referencedPluginBase.setId(referencedProject.getName());
+ referencedPluginModel.save();
+
+ IPluginImport pluginImport = myPluginModel.createImport(referencedPluginBase.getId());
+ IPluginBase pluginBase = myPluginModel.getPluginBase();
+ pluginBase.add(pluginImport);
+ }
+
+ myPluginModel.save();
+ }
+
+ @Override
+ public void dispose(TestProject project) throws Exception {
+ myPluginModel.dispose();
+ referencedPluginModel.dispose();
+
+ IFile myPluginXml = PDEProject.getPluginXml(project.getProject());
+ IFile myManifest = PDEProject.getManifest(project.getProject());
+
+ myPluginXml.delete(true, null);
+ myManifest.delete(true, null);
+
+ super.dispose(project);
+ }
+}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
index 5a8c722..c0a2c48 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/TransformTests.java
@@ -595,7 +595,8 @@
public void prepare(BlackboxRegistry blackboxRegistry) {
blackboxRegistry.registerModule(AnnotatedJavaLibrary.class, "org.bar.Foo", "Bug566216_Lib");
}
- }
+ },
+ new PluginDependencyProjectData("bug573659", "bug573659_referenced") //$NON-NLS-1$ //$NON-NLS-2$
};
}
diff --git a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/javaless/JavalessQvtTest.java b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/javaless/JavalessQvtTest.java
index 945dc9e..e86c41a 100644
--- a/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/javaless/JavalessQvtTest.java
+++ b/tests/org.eclipse.m2m.tests.qvt.oml/src/org/eclipse/m2m/tests/qvt/oml/transform/javaless/JavalessQvtTest.java
@@ -152,8 +152,8 @@
// EObjects for incremental update are loaded from original 'in.ecore' so they don't match with those from 'in.ecore.javaless'
"bug463572", //$NON-NLS-1$
- // use of Eclipse project references requires patching across multiple projects
- "bug433937", //$NON-NLS-1$
+ // use of Eclipse project references or plug-in dependencies requires patching across multiple projects
+ "bug433937", "bug573659" //$NON-NLS-1$ //$NON-NLS-2$
}));