| /******************************************************************************* |
| * Copyright (c) 2008, 2017 IBM Corporation and others. |
| * |
| * This |
| * program and the accompanying materials are made available under the terms of |
| * the Eclipse Public License 2.0 which accompanies this distribution, and is |
| * available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: IBM Corporation - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.equinox.p2.tests.planner; |
| |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest; |
| import org.eclipse.equinox.internal.p2.engine.ProvisioningPlan; |
| import org.eclipse.equinox.p2.engine.*; |
| import org.eclipse.equinox.p2.engine.query.IUProfilePropertyQuery; |
| import org.eclipse.equinox.p2.metadata.*; |
| import org.eclipse.equinox.p2.planner.IPlanner; |
| import org.eclipse.equinox.p2.query.IQueryResult; |
| import org.eclipse.equinox.p2.tests.AbstractProvisioningTest; |
| |
| public class IUPropertyRemoval extends AbstractProvisioningTest { |
| private IInstallableUnit a1; |
| private IInstallableUnit b1; |
| private IProfile profile; |
| private IPlanner planner; |
| private IEngine engine; |
| private String profileId; |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| a1 = createIU("A", Version.create("1.0.0"), createRequiredCapabilities(IInstallableUnit.NAMESPACE_IU_ID, "B1", new VersionRange("[1.0.0, 2.0.0)"))); |
| |
| b1 = createIU("B1", Version.create("1.0.0"), true); |
| |
| createTestMetdataRepository(new IInstallableUnit[] {a1, b1}); |
| |
| profileId = "TestProfile." + getName(); |
| profile = createProfile(profileId); |
| planner = createPlanner(); |
| engine = createEngine(); |
| |
| } |
| |
| public void testRemoveIUProperty() { |
| ProfileChangeRequest req1 = new ProfileChangeRequest(profile); |
| req1.addInstallableUnits(new IInstallableUnit[] {a1}); |
| req1.setInstallableUnitProfileProperty(a1, "FOO", "BAR"); |
| req1.setInstallableUnitProfileProperty(b1, "FOO", "BAR"); |
| IProvisioningPlan pp1 = planner.getProvisioningPlan(req1, null, null); |
| assertEquals(IStatus.OK, pp1.getStatus().getSeverity()); |
| engine.perform(pp1, null); |
| IQueryResult<IInstallableUnit> res = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", IUProfilePropertyQuery.ANY), null); |
| assertEquals(2, queryResultSize(res)); |
| |
| ProfileChangeRequest req2 = new ProfileChangeRequest(profile); |
| req2.removeInstallableUnitProfileProperty(b1, "FOO"); |
| ProvisioningPlan pp2 = (ProvisioningPlan) planner.getProvisioningPlan(req2, null, null); |
| assertEquals(1, pp2.getOperands().length); |
| engine.perform(pp2, null); |
| IQueryResult<IInstallableUnit> res2 = getProfile(profileId).query(new IUProfilePropertyQuery("FOO", IUProfilePropertyQuery.ANY), null); |
| assertEquals(1, queryResultSize(res2)); |
| } |
| } |