diff options
author | Andrew Niefer | 2009-05-12 20:21:28 +0000 |
---|---|---|
committer | Andrew Niefer | 2009-05-12 20:21:28 +0000 |
commit | dcc433f038dda66c44e22a82d6bcb86476c88303 (patch) | |
tree | 1f2e503fde24e750c6e07a47646f0c25cd87208b /bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher | |
parent | f86dbfb4063fdb068b4a05617cc0e1796032749b (diff) | |
download | rt.equinox.p2-dcc433f038dda66c44e22a82d6bcb86476c88303.tar.gz rt.equinox.p2-dcc433f038dda66c44e22a82d6bcb86476c88303.tar.xz rt.equinox.p2-dcc433f038dda66c44e22a82d6bcb86476c88303.zip |
bug 252743 - CU filters need to agree with host
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher')
2 files changed, 139 insertions, 2 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java index d62b33aba..162d9912e 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ConfigCUsActionTest.java @@ -105,20 +105,21 @@ public class ConfigCUsActionTest extends ActionTest { ConfigAdvice configAdvice = new ConfigAdvice(configData, configSpec); ArrayList configList = new ArrayList(); configList.add(configAdvice); - expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IConfigAdvice.class))).andReturn(configList); + expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IConfigAdvice.class))).andReturn(configList).anyTimes(); //configure ILaunchingAdvice LauncherData launcherData = loader.getLauncherData(); LaunchingAdvice launchingAdvice = new LaunchingAdvice(launcherData, configSpec); ArrayList launchingList = new ArrayList(); launchingList.add(launchingAdvice); - expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IExecutableAdvice.class))).andReturn(launchingList); + expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IExecutableAdvice.class))).andReturn(launchingList).anyTimes(); //setup metadata repository IInstallableUnit[] ius = {mockIU("foo", null), mockIU("bar", null)}; //$NON-NLS-1$ //$NON-NLS-2$ metadataRepo = new TestMetadataRepository(ius); expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepo).anyTimes(); + expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes(); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java index f968a4b4f..e9e64b260 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTest.java @@ -23,6 +23,8 @@ import org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile; import org.eclipse.equinox.internal.provisional.frameworkadmin.BundleInfo; import org.eclipse.equinox.internal.provisional.p2.core.Version; import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; +import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory; +import org.eclipse.equinox.internal.provisional.p2.metadata.MetadataFactory.InstallableUnitDescription; import org.eclipse.equinox.internal.provisional.p2.metadata.query.InstallableUnitQuery; import org.eclipse.equinox.internal.provisional.p2.query.Collector; import org.eclipse.equinox.p2.publisher.*; @@ -34,6 +36,9 @@ import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository; @SuppressWarnings( {"unchecked"}) public class ProductActionTest extends ActionTest { + private String winFitler = "(& (osgi.ws=win32)(osgi.os=win32)(osgi.arch=x86))"; + private String linuxFilter = "(& (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86))"; + File executablesFeatureLocation = null; String productLocation = ""; private Capture<RootIUAdvice> rootIUAdviceCapture; @@ -159,15 +164,146 @@ public class ProductActionTest extends ActionTest { info.setConfigurations(getArrayFromString(configSpec, COMMA_SEPARATOR)); PublisherResult results = new PublisherResult(); + InstallableUnitDescription iuDescription = new InstallableUnitDescription(); + iuDescription.setId("org.eclipse.core.runtime"); + iuDescription.setVersion(Version.create("4.0.0")); + IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription); + + results.addIU(iu, IPublisherResult.NON_ROOT); ProductAction action1 = new ProductAction(null, productFile1, flavorArg, executablesFeatureLocation); ProductAction action2 = new ProductAction(null, productFile2, flavorArg, executablesFeatureLocation); action1.perform(info, results, new NullProgressMonitor()); results = new PublisherResult(); + + results.addIU(iu, IPublisherResult.NON_ROOT); + action2.perform(info, results, new NullProgressMonitor()); Collector collector = results.query(new InstallableUnitQuery(flavorArg + configSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); assertEquals("1.0", 1, collector.size()); } + public void testMultiPlatformCUs_DifferentPlatforms() throws Exception { + ProductFile productFile2 = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + PublisherInfo info = new PublisherInfo(); + String windowsConfigSpec = AbstractPublisherAction.createConfigSpec("win32", "win32", "x86"); + String linuxConfigSpec = AbstractPublisherAction.createConfigSpec("gtk", "linux", "x86"); + info.setConfigurations(getArrayFromString(linuxConfigSpec, COMMA_SEPARATOR)); + PublisherResult results = new PublisherResult(); + + InstallableUnitDescription iuDescription = new InstallableUnitDescription(); + iuDescription.setId("org.eclipse.core.runtime"); + iuDescription.setVersion(Version.create("0.0.0")); + iuDescription.setFilter(winFitler); + IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription); + + results.addIU(iu, IPublisherResult.NON_ROOT); + ProductAction action = new ProductAction(null, productFile2, flavorArg, executablesFeatureLocation); + + action.perform(info, results, new NullProgressMonitor()); + + Collector collector = results.query(new InstallableUnitQuery(flavorArg + linuxConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("1.0", 0, collector.size()); + + collector = results.query(new InstallableUnitQuery(flavorArg + windowsConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("2.0", 0, collector.size()); + } + + public void testMultiPlatformCUs_SamePlatforms() throws Exception { + ProductFile productFile2 = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + PublisherInfo info = new PublisherInfo(); + String windowsConfigSpec = AbstractPublisherAction.createConfigSpec("win32", "win32", "x86"); + String linuxConfigSpec = AbstractPublisherAction.createConfigSpec("gtk", "linux", "x86"); + info.setConfigurations(getArrayFromString(linuxConfigSpec, COMMA_SEPARATOR)); + PublisherResult results = new PublisherResult(); + + InstallableUnitDescription iuDescription = new InstallableUnitDescription(); + iuDescription.setId("org.eclipse.core.runtime"); + iuDescription.setVersion(Version.create("0.0.0")); + iuDescription.setFilter(linuxFilter); + IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription); + + results.addIU(iu, IPublisherResult.NON_ROOT); + ProductAction action = new ProductAction(null, productFile2, flavorArg, executablesFeatureLocation); + + action.perform(info, results, new NullProgressMonitor()); + + Collector collector = results.query(new InstallableUnitQuery(flavorArg + linuxConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("1.0", 1, collector.size()); + + collector = results.query(new InstallableUnitQuery(flavorArg + windowsConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("2.0", 0, collector.size()); + } + + public void testMultiPlatformCUs_SamePlatforms_NoVersion() throws Exception { + ProductFile productFile2 = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + PublisherInfo info = new PublisherInfo(); + String windowsConfigSpec = AbstractPublisherAction.createConfigSpec("win32", "win32", "x86"); + String linuxConfigSpec = AbstractPublisherAction.createConfigSpec("gtk", "linux", "x86"); + info.setConfigurations(getArrayFromString(linuxConfigSpec, COMMA_SEPARATOR)); + PublisherResult results = new PublisherResult(); + + InstallableUnitDescription iuDescription = new InstallableUnitDescription(); + iuDescription.setId("org.eclipse.core.runtime"); + iuDescription.setFilter(linuxFilter); + IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription); + + results.addIU(iu, IPublisherResult.NON_ROOT); + ProductAction action = new ProductAction(null, productFile2, flavorArg, executablesFeatureLocation); + + action.perform(info, results, new NullProgressMonitor()); + + Collector collector = results.query(new InstallableUnitQuery(flavorArg + linuxConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("1.0", 1, collector.size()); + + collector = results.query(new InstallableUnitQuery(flavorArg + windowsConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("2.0", 0, collector.size()); + } + + public void testMultiPlatformCUs_SamePlatforms_BoundedVersions() throws Exception { + ProductFile productFile2 = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + PublisherInfo info = new PublisherInfo(); + String windowsConfigSpec = AbstractPublisherAction.createConfigSpec("win32", "win32", "x86"); + String linuxConfigSpec = AbstractPublisherAction.createConfigSpec("gtk", "linux", "x86"); + info.setConfigurations(getArrayFromString(linuxConfigSpec, COMMA_SEPARATOR)); + PublisherResult results = new PublisherResult(); + + InstallableUnitDescription iuDescription = new InstallableUnitDescription(); + iuDescription.setId("org.eclipse.core.runtime"); + iuDescription.setVersion(Version.create("4.0.0")); // Set a specific version number, the one in the .product file uses 0.0.0. Let's see if it binds properly + iuDescription.setFilter("(osgi.os=linux)"); //filter is different from linuxConfigSpec, but will still match + IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription); + + results.addIU(iu, IPublisherResult.NON_ROOT); + ProductAction action = new ProductAction(null, productFile2, flavorArg, executablesFeatureLocation); + + action.perform(info, results, new NullProgressMonitor()); + + Collector collector = results.query(new InstallableUnitQuery(flavorArg + linuxConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("1.0", 1, collector.size()); + + collector = results.query(new InstallableUnitQuery(flavorArg + windowsConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("2.0", 0, collector.size()); + } + + public void testCUNoHost() throws Exception { + ProductFile productFile2 = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + PublisherInfo info = new PublisherInfo(); + String windowsConfigSpec = AbstractPublisherAction.createConfigSpec("win32", "win32", "x86"); + String linuxConfigSpec = AbstractPublisherAction.createConfigSpec("gtk", "linux", "x86"); + info.setConfigurations(getArrayFromString(linuxConfigSpec, COMMA_SEPARATOR)); + PublisherResult results = new PublisherResult(); + + ProductAction action = new ProductAction(null, productFile2, flavorArg, executablesFeatureLocation); + + action.perform(info, results, new NullProgressMonitor()); + + Collector collector = results.query(new InstallableUnitQuery(flavorArg + linuxConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("1.0", 0, collector.size()); + + collector = results.query(new InstallableUnitQuery(flavorArg + windowsConfigSpec + "org.eclipse.core.runtime"), new Collector(), new NullProgressMonitor()); + assertEquals("2.0", 0, collector.size()); + } + public void testMultiConfigspecProductPublishing() throws IOException, Exception { ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "platform.product").toString()); PublisherInfo info = new PublisherInfo(); |