blob: ff0b846fb14c60b32ba405a93f7408db578f4b8b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2017 Code 9 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:
* Code 9 - initial API and implementation
* IBM - ongoing development
******************************************************************************/
package org.eclipse.equinox.p2.tests.publisher.actions;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.equinox.internal.p2.metadata.InstallableUnitFragment;
import org.eclipse.equinox.p2.metadata.IInstallableUnit;
import org.eclipse.equinox.p2.metadata.IProvidedCapability;
import org.eclipse.equinox.p2.metadata.Version;
import org.eclipse.equinox.p2.metadata.VersionRange;
import org.eclipse.equinox.p2.publisher.IPublisherResult;
import org.eclipse.equinox.p2.publisher.PublisherResult;
import org.eclipse.equinox.p2.publisher.actions.IVersionAdvice;
import org.eclipse.equinox.p2.publisher.actions.VersionAdvice;
import org.eclipse.equinox.p2.publisher.eclipse.EquinoxLauncherCUAction;
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
public class EquinoxLauncherCUActionTest extends ActionTest {
private static String a_ID = "iua.source"; //$NON-NLS-1$
private static String b_ID = "iub";//$NON-NLS-1$
private static String c_ID = EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER;
private static String d_ID = EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER + ".source";//$NON-NLS-1$
@Override
public void setUp() throws Exception {
setupPublisherInfo();
setupPublisherResult();
testAction = new EquinoxLauncherCUAction(flavorArg, new String[] {configSpec});
}
public void testEquinoxLauncherCUAction() throws Exception {
testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor());
verifyResults();
debug("Completed EquinoxLauncherCUAction test.");//$NON-NLS-1$
}
protected IInstallableUnit mockIU(String id, Version version, boolean fragment) {
IInstallableUnit result = mock(IInstallableUnit.class);
when(result.getId()).thenReturn(id);
if (version == null)
version = Version.emptyVersion;
when(result.getVersion()).thenReturn(version);
when(result.getFilter()).thenReturn(null);
return result;
}
private void verifyResults() {
for (IInstallableUnit iu : new ArrayList<>(publisherResult.getIUs(null, null))) {
if (iu.getId().equals(flavorArg + EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER)) {
assertTrue(iu instanceof InstallableUnitFragment);
//verify required capability
verifyRequirement(((InstallableUnitFragment) iu).getHost(), PublisherHelper.OSGI_BUNDLE_CLASSIFIER, EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER, VersionRange.emptyRange);
verifyRequirement(((InstallableUnitFragment) iu).getHost(), PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "bundle", new VersionRange(Version.create("1.0.0"), true, Version.create("2.0.0"), false), null, 1, 1, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
assertEquals(2, (((InstallableUnitFragment) iu).getHost().size()));
Collection<IProvidedCapability> cap = iu.getProvidedCapabilities();
verifyProvidedCapability(cap, IInstallableUnit.NAMESPACE_IU_ID, flavorArg + "org.eclipse.equinox.launcher", Version.emptyVersion); //$NON-NLS-1$
verifyProvidedCapability(cap, "org.eclipse.equinox.p2.flavor", flavorArg, Version.create("1.0.0")); //$NON-NLS-1$//$NON-NLS-2$
assertTrue(cap.size() == 2);
Map<String, String> prop = iu.getProperties();
assertTrue(prop.get("org.eclipse.equinox.p2.type.fragment").equals("true")); //$NON-NLS-1$ //$NON-NLS-2$
return;
}
}
fail();
}
@Override
public void setupPublisherResult() {
publisherResult = new PublisherResult();
ArrayList<IInstallableUnit> iuList = new ArrayList<>();
iuList.add(mockIU(a_ID, null, true));
iuList.add(mockIU(b_ID, null, true));
iuList.add(mockIU(c_ID, null, false));
iuList.add(mockIU(d_ID, null, false));
publisherResult.addIUs(iuList, IPublisherResult.ROOT);
}
@Override
protected void insertPublisherInfoBehavior() {
VersionAdvice versionAdvice = new VersionAdvice();
versionAdvice.setVersion(IInstallableUnit.NAMESPACE_IU_ID, flavorArg + "org.eclipse.equinox.launcher", Version.emptyVersion); //$NON-NLS-1$
versionAdvice.setVersion(IInstallableUnit.NAMESPACE_IU_ID, "org.eclipse.equinox.launcher", Version.emptyVersion); //$NON-NLS-1$
versionAdvice.setVersion("org.eclipse.equinox.p2.flavor", flavorArg, Version.create("1.0.0")); //$NON-NLS-1$//$NON-NLS-2$
ArrayList<IVersionAdvice> versionList = new ArrayList<>();
versionList.add(versionAdvice);
when(publisherInfo.getAdvice(null, true, EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER, null,
IVersionAdvice.class)).thenReturn(versionList);
when(publisherInfo.getAdvice(configSpec, true,
EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER + "." + configSpec, null, IVersionAdvice.class)) //$NON-NLS-1$
.thenReturn(versionList);
}
}