Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rapicault2014-02-24 19:04:17 +0000
committerPascal Rapicault2014-02-24 19:21:36 +0000
commit088d18233f6713231418f244337fb56f7f19a57d (patch)
tree7bda5f07b0ec19104b144f5324c60fdd7ab1968e /bundles/org.eclipse.equinox.p2.tests
parent64975349785ed9cb5983e35a1b290bf69f09a6cb (diff)
downloadrt.equinox.p2-088d18233f6713231418f244337fb56f7f19a57d.tar.gz
rt.equinox.p2-088d18233f6713231418f244337fb56f7f19a57d.tar.xz
rt.equinox.p2-088d18233f6713231418f244337fb56f7f19a57d.zip
Bug 428684 - [remediation] Plug-ins directly installed can break resulting installI20140225-0800
Change-Id: Ibb4a918d708c1d7044a970dedf58ff9b75bb7f6c Signed-off-by: Pascal Rapicault <pascal@rapicorp.com>
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests')
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java1
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/ResolvedIUInPCR.java133
2 files changed, 134 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java
index 4188b94f0..e08f33c5f 100644
--- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/AllTests.java
@@ -136,6 +136,7 @@ public class AllTests extends TestCase {
suite.addTestSuite(PatchTestUsingNegativeRequirement.class);
suite.addTestSuite(PermissiveSlicerTest.class);
suite.addTestSuite(PP2ShouldFailToInstall.class);
+ suite.addTestSuite(ResolvedIUInPCR.class);
// suite.addTestSuite(ProvisioningPlanQueryTest.class); disabled, see bug 313812
suite.addTestSuite(SDKPatchingTest1.class);
suite.addTestSuite(SDKPatchingTest2.class);
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/ResolvedIUInPCR.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/ResolvedIUInPCR.java
new file mode 100644
index 000000000..9c3a9d1c0
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/planner/ResolvedIUInPCR.java
@@ -0,0 +1,133 @@
+package org.eclipse.equinox.p2.tests.planner;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
+import org.eclipse.equinox.internal.p2.metadata.ResolvedInstallableUnit;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.tests.*;
+
+public class ResolvedIUInPCR extends AbstractProvisioningTest {
+
+ @IUDescription(content = "package: iu1 \n" + "singleton: true\n" + "version: 1 \n")
+ public IInstallableUnit iu1;
+
+ @IUDescription(content = "package: iu2 \n" + "singleton: true\n" + "version: 1 \n")
+ public IInstallableUnit iu2;
+
+ private IProfile profile;
+
+ protected void setUp() throws Exception {
+ IULoader.loadIUs(this);
+ profile = createProfile("ResolvedIUInPCR." + getName());
+ }
+
+ public void testNoResolvedIUInAddition() {
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.add(riu1);
+
+ assertFalse(identityContains(pcr.getAdditions(), riu1));
+ assertTrue(identityContains(pcr.getAdditions(), iu1));
+ }
+
+ public void testNoResolvedIUInBulkAddition() {
+ Collection<IInstallableUnit> riusToAdd = new ArrayList<IInstallableUnit>();
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ riusToAdd.add(riu1);
+
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.addAll(riusToAdd);
+
+ assertFalse(identityContains(pcr.getAdditions(), riu1));
+ assertTrue(identityContains(pcr.getAdditions(), iu1));
+ }
+
+ public void testNoResolvedIUInBulkAddition2() {
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
+
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.addInstallableUnits(riu1, riu2);
+
+ assertFalse(identityContains(pcr.getAdditions(), riu1));
+ assertFalse(identityContains(pcr.getAdditions(), riu2));
+
+ assertTrue(identityContains(pcr.getAdditions(), iu1));
+ assertTrue(identityContains(pcr.getAdditions(), iu2));
+ }
+
+ public void testNoResolvedIUInRemoval() {
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.remove(riu1);
+
+ assertFalse(identityContains(pcr.getRemovals(), riu1));
+ assertTrue(identityContains(pcr.getRemovals(), iu1));
+ }
+
+ public void testNoResolvedIUInBulkRemoval() {
+ Collection<IInstallableUnit> riusToAdd = new ArrayList<IInstallableUnit>();
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ riusToAdd.add(riu1);
+
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.removeAll(riusToAdd);
+
+ assertFalse(identityContains(pcr.getRemovals(), riu1));
+ assertTrue(identityContains(pcr.getRemovals(), iu1));
+ }
+
+ public void testNoResolvedIUInBulkRemoval2() {
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
+
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.removeInstallableUnits(new IInstallableUnit[] {riu1, riu2});
+
+ assertFalse(identityContains(pcr.getRemovals(), riu1));
+ assertFalse(identityContains(pcr.getRemovals(), riu2));
+
+ assertTrue(identityContains(pcr.getRemovals(), iu1));
+ assertTrue(identityContains(pcr.getRemovals(), iu2));
+ }
+
+ public void testNoResolvedIUInstallableUnitInclusionRules() {
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
+
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.setInstallableUnitInclusionRules(riu1, "inclusion");
+ pcr.setInstallableUnitProfileProperty(riu2, "a", "b");
+
+ assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), riu1));
+ assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), riu2));
+
+ assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), iu1));
+ assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToAdd().keySet(), iu2));
+ }
+
+ public void testNoResolvedIUInstallableUnitInclusionRules2() {
+ ResolvedInstallableUnit riu1 = new ResolvedInstallableUnit(iu1);
+ ResolvedInstallableUnit riu2 = new ResolvedInstallableUnit(iu2);
+
+ ProfileChangeRequest pcr = new ProfileChangeRequest(profile);
+ pcr.removeInstallableUnitInclusionRules(riu1);
+ pcr.removeInstallableUnitProfileProperty(riu2, "a");
+
+ assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), riu1));
+ assertFalse(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), riu2));
+
+ assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), iu1));
+ assertTrue(identityContains(pcr.getInstallableUnitProfilePropertiesToRemove().keySet(), iu2));
+ }
+
+ private boolean identityContains(Collection<IInstallableUnit> ius, IInstallableUnit match) {
+ for (IInstallableUnit iu : ius) {
+ if (iu == match)
+ return true;
+ }
+ return false;
+ }
+}

Back to the top