Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/VariableTest.java')
-rw-r--r--bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/VariableTest.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/VariableTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/VariableTest.java
new file mode 100644
index 000000000..9df16a597
--- /dev/null
+++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/engine/VariableTest.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2012 Landmark Graphics Corporation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Landmark Graphics Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.equinox.p2.tests.engine;
+
+import java.util.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.equinox.p2.engine.*;
+import org.eclipse.equinox.p2.engine.spi.ProvisioningAction;
+import org.eclipse.equinox.p2.engine.spi.Value;
+import org.eclipse.equinox.p2.metadata.*;
+import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
+import org.eclipse.equinox.p2.tests.AbstractProvisioningTest;
+
+public class VariableTest extends AbstractProvisioningTest {
+
+ private IInstallableUnit createIUWithVariable() {
+ InstallableUnitDescription description = new MetadataFactory.InstallableUnitDescription();
+ description.setId("artifactWithZip");
+ description.setVersion(Version.create("1.0.0"));
+ Map touchpointData = new HashMap();
+ touchpointData.put("install", "test.actionForVariableTesting( arg1: expectedValue ); test.actionForVariableTesting ( arg1: ${lastResult} ); test.actionForVariableTesting ( arg1: ${lastResult} )");
+
+ description.addTouchpointData(MetadataFactory.createTouchpointData(touchpointData));
+
+ return MetadataFactory.createInstallableUnit(description);
+ }
+
+ public void testVariable() {
+ Action.reinitForNextTest();
+ Map properties = new HashMap();
+ properties.put(IProfile.PROP_INSTALL_FOLDER, getTempFolder().getAbsolutePath());
+ IProfile profile = createProfile("testVariable1", properties);
+
+ Iterator ius = getInstallableUnits(profile);
+ assertFalse(ius.hasNext());
+
+ IProvisioningPlan plan = getEngine().createPlan(profile, null);
+ plan.addInstallableUnit(createIUWithVariable());
+ IStatus result = getEngine().perform(plan, PhaseSetFactory.createPhaseSetIncluding(new String[] {PhaseSetFactory.PHASE_INSTALL}), new NullProgressMonitor());
+ assertOK(result);
+ assertEquals("expectedValueaaa", Action.result);
+ }
+
+ public void testUndo() {
+ Action.reinitForNextTest();
+ Action.failMode = true;
+ Map properties = new HashMap();
+ properties.put(IProfile.PROP_INSTALL_FOLDER, getTempFolder().getAbsolutePath());
+ IProfile profile = createProfile("testVariable2", properties);
+
+ Iterator ius = getInstallableUnits(profile);
+ assertFalse(ius.hasNext());
+
+ IProvisioningPlan plan = getEngine().createPlan(profile, null);
+ plan.addInstallableUnit(createIUWithVariable());
+ IStatus result = getEngine().perform(plan, PhaseSetFactory.createPhaseSetIncluding(new String[] {PhaseSetFactory.PHASE_INSTALL}), new NullProgressMonitor());
+ assertNotOK(result);
+ assertEquals(3, Action.inputValues.size());
+ assertEquals(3, Action.undoValues.size());
+
+ //The undo values should be the same than the input values
+ assertEquals(Action.inputValues.get(0), Action.undoValues.get(2));
+ assertEquals(Action.inputValues.get(1), Action.undoValues.get(1));
+ assertEquals(Action.inputValues.get(2), Action.undoValues.get(0));
+ }
+
+ public static class Action extends ProvisioningAction {
+ public static String result;
+ public static boolean failMode;
+ private static int count = 0;
+ private static final int failAt = 3;
+
+ public static ArrayList<String> inputValues = new ArrayList<String>();
+ public static ArrayList<String> undoValues = new ArrayList<String>();
+
+ public static void reinitForNextTest() {
+ inputValues = new ArrayList<String>();
+ undoValues = new ArrayList<String>();
+ failMode = false;
+ count = 0;
+ }
+
+ @Override
+ public IStatus execute(Map<String, Object> parameters) {
+ inputValues.add((String) parameters.get("arg1"));
+ System.out.println(this.hashCode());
+ System.out.println((String) parameters.get("arg1"));
+ count++;
+ if (failMode && count == failAt)
+ throw new RuntimeException("GENERATED Exception");
+ result = ((String) parameters.get("arg1")) + "a";
+
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ public IStatus undo(Map<String, Object> parameters) {
+ undoValues.add((String) parameters.get("arg1"));
+ System.out.println("undo arg --> " + (String) parameters.get("arg1"));
+ return Status.OK_STATUS;
+ }
+
+ public Value<String> getResult() {
+ return new Value<String>(result);
+ }
+ }
+}

Back to the top