diff options
author | Alexander Kurtakov | 2021-12-08 11:15:29 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2021-12-10 10:18:32 +0000 |
commit | ce3923a1e1c69fbb60d4ee9dcdfb15c4664772a0 (patch) | |
tree | 8d7f8f21849b2f4017a416ebc4fba6f0d1b7b0ff | |
parent | 556f831a5bcb586a01761cb80b1efd51472ef48a (diff) | |
download | rt.equinox.p2-ce3923a1e1c69fbb60d4ee9dcdfb15c4664772a0.tar.gz rt.equinox.p2-ce3923a1e1c69fbb60d4ee9dcdfb15c4664772a0.tar.xz rt.equinox.p2-ce3923a1e1c69fbb60d4ee9dcdfb15c4664772a0.zip |
Bug 577552 - Switch tests to mockitoY20211212-0600Y20211211-0600Y20211210-0600I20211212-1800I20211211-1800I20211210-1800I20211210-1050I20211210-0600
Switch p2 tests to mockito from easymock.
Improve asserts to be slightly more readable and give better failure
message.
Change-Id: I3b975983a5c975dc03814a73bdbf0ce9ed652a1f
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
Reviewed-on: https://git.eclipse.org/r/c/equinox/rt.equinox.p2/+/188640
Tested-by: Equinox Bot <equinox-bot@eclipse.org>
21 files changed, 529 insertions, 563 deletions
diff --git a/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF index 7859591e4..f864e043e 100644 --- a/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.equinox.p2.tests/META-INF/MANIFEST.MF @@ -114,6 +114,5 @@ Import-Package: org.eclipse.ant.core, org.eclipse.osgi.util;version="1.1.0", org.osgi.framework;version="1.3.0", org.osgi.service.packageadmin;version="1.2.0", - org.osgi.util.tracker;version="1.3.0", - org.easymock;version="4.0.0" + org.osgi.util.tracker;version="1.3.0" Automatic-Module-Name: org.eclipse.equinox.p2.tests diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java index dcc84bbfb..ab74b9572 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/AbstractProvisioningTest.java @@ -739,7 +739,7 @@ public abstract class AbstractProvisioningTest extends TestCase { } } - public static void writeBuffer(File outputFile, StringBuffer buffer) throws IOException { + public static void writeBuffer(File outputFile, StringBuilder buffer) throws IOException { outputFile.getParentFile().mkdirs(); try (FileOutputStream stream = new FileOutputStream(outputFile)) { stream.write(buffer.toString().getBytes()); @@ -1367,7 +1367,7 @@ public abstract class AbstractProvisioningTest extends TestCase { IInstallableUnit sourceIU = it.next(); IQueryResult destinationCollector = destination.query(QueryUtil.createIUQuery(sourceIU), null); assertEquals(message, 1, queryResultSize(destinationCollector)); - assertTrue(message, sourceIU.equals(destinationCollector.iterator().next())); + assertEquals(message, sourceIU, destinationCollector.iterator().next()); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java index bb92cf4ef..d6085fd8a 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ANYConfigCUsActionTest.java @@ -14,13 +14,17 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.expect; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.matches; +import static org.mockito.Mockito.when; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.easymock.EasyMock; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.equinox.internal.p2.metadata.InstallableUnit; import org.eclipse.equinox.internal.p2.publisher.eclipse.DataLoader; @@ -212,7 +216,8 @@ public class ANYConfigCUsActionTest extends ActionTest { fail("Unable to create product file advice", e); //$NON-NLS-1$ } - expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IExecutableAdvice.class))).andReturn(launchingList).anyTimes(); + when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class), + eq(IExecutableAdvice.class))).thenReturn(launchingList); //configure IConfigAdvice ConfigData configData = loader.getConfigData(); @@ -220,14 +225,15 @@ public class ANYConfigCUsActionTest extends ActionTest { ArrayList<IConfigAdvice> configList = new ArrayList<>(); configList.add(configAdvice); configList.add(productAdvice); - expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IConfigAdvice.class))).andReturn(configList).anyTimes(); + when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class), + eq(IConfigAdvice.class))).thenReturn(configList); //setup metadata repository IInstallableUnit[] ius = {mockIU("foo", null), mockIU("bar", null)}; //$NON-NLS-1$ //$NON-NLS-2$ metadataRepo = new TestMetadataRepository(getAgent(), ius); - expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepo).anyTimes(); - expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes(); + when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepo); + when(publisherInfo.getContextMetadataRepository()).thenReturn(null); } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java index 480303b82..ffe6009d5 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AccumulateConfigDataActionTest.java @@ -15,21 +15,25 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; +import static org.mockito.Mockito.verify; + import java.io.File; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Map; -import org.easymock.Capture; -import org.easymock.EasyMock; +import java.util.stream.Collectors; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.equinox.frameworkadmin.BundleInfo; import org.eclipse.equinox.internal.provisional.frameworkadmin.ConfigData; +import org.eclipse.equinox.p2.publisher.IPublisherAdvice; import org.eclipse.equinox.p2.publisher.eclipse.AccumulateConfigDataAction; import org.eclipse.equinox.p2.publisher.eclipse.ConfigAdvice; import org.eclipse.equinox.p2.publisher.eclipse.LaunchingAdvice; import org.eclipse.equinox.p2.tests.TestActivator; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; public class AccumulateConfigDataActionTest extends ActionTest { @@ -43,13 +47,11 @@ public class AccumulateConfigDataActionTest extends ActionTest { private static String launcherName = "launcherName"; //$NON-NLS-1$ private static String launcherVersion = "0.0.0"; //$NON-NLS-1$ - Capture<ConfigAdvice> configAdviceCapture; - Capture<LaunchingAdvice> launchingAdviceCapture; + ArgumentCaptor<IPublisherAdvice> capture; @Override public void setUp() throws Exception { - configAdviceCapture = Capture.newInstance(); - launchingAdviceCapture = Capture.newInstance(); + capture = ArgumentCaptor.forClass(IPublisherAdvice.class); setupPublisherInfo(); setupPublisherResult(); testAction = new AccumulateConfigDataAction(publisherInfo, configSpec, configLocation, executableLocation); @@ -57,13 +59,15 @@ public class AccumulateConfigDataActionTest extends ActionTest { public void testAccumulateConfigDataAction() throws Exception { testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor()); + verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(capture.capture()); verifyConfigAdvice(); verifyLaunchAdvice(); debug("Completed AccumulateConfigDataActionTest."); //$NON-NLS-1$ } private void verifyLaunchAdvice() throws URISyntaxException { - LaunchingAdvice captured = launchingAdviceCapture.getValue(); + LaunchingAdvice captured = (LaunchingAdvice) capture.getAllValues().stream() + .filter(LaunchingAdvice.class::isInstance).collect(Collectors.toList()).get(0); String[] programArgs = captured.getProgramArguments(); assertTrue(programArgs.length == 4); assertTrue(programArgs[0].equalsIgnoreCase("-startup")); //$NON-NLS-1$ @@ -81,7 +85,8 @@ public class AccumulateConfigDataActionTest extends ActionTest { } private void verifyConfigAdvice() throws Exception { - ConfigAdvice captured = configAdviceCapture.getValue(); + ConfigAdvice captured = (ConfigAdvice) capture.getAllValues().stream().filter(ConfigAdvice.class::isInstance) + .collect(Collectors.toList()).get(0); Map<String, String> prop = captured.getProperties(); assertTrue(prop.get("eclipse.buildId").equalsIgnoreCase("TEST-ID")); //$NON-NLS-1$ //$NON-NLS-2$ assertTrue(prop.get("eclipse.p2.profile").equalsIgnoreCase("PlatformProfile")); //$NON-NLS-1$//$NON-NLS-2$ @@ -109,8 +114,5 @@ public class AccumulateConfigDataActionTest extends ActionTest { ConfigAdvice configAdvice = new ConfigAdvice(configData, configSpec); ArrayList<ConfigAdvice> configList = new ArrayList<>(); configList.add(configAdvice); - - publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(ConfigAdvice.class), EasyMock.capture(configAdviceCapture))); - publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(LaunchingAdvice.class), EasyMock.capture(launchingAdviceCapture))); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java index 1741c7878..25290d337 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ActionTest.java @@ -14,10 +14,9 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.io.ByteArrayOutputStream; import java.io.File; @@ -118,9 +117,9 @@ public abstract class ActionTest extends AbstractProvisioningTest { for (IRequirement act : actual) { if (expected.getMatches().equals(act.getMatches())) { String descr = "IRequirement " + expected.getMatches(); - Assert.assertEquals("Min of " + descr, expected.getMin(), act.getMin()); - Assert.assertEquals("Max of " + descr, expected.getMax(), act.getMax()); - Assert.assertEquals("Greedy of " + descr, expected.isGreedy(), act.isGreedy()); + assertEquals("Min of " + descr, expected.getMin(), act.getMin()); + assertEquals("Max of " + descr, expected.getMax(), act.getMax()); + assertEquals("Greedy of " + descr, expected.isGreedy(), act.isGreedy()); return; } } @@ -128,13 +127,12 @@ public abstract class ActionTest extends AbstractProvisioningTest { } protected IInstallableUnit mockIU(String id, Version version) { - IInstallableUnit result = createMock(IInstallableUnit.class); - expect(result.getId()).andReturn(id).anyTimes(); + IInstallableUnit result = mock(IInstallableUnit.class); + when(result.getId()).thenReturn(id); if (version == null) version = Version.emptyVersion; - expect(result.getVersion()).andReturn(version).anyTimes(); - expect(result.getFilter()).andReturn(null).anyTimes(); - replay(result); + when(result.getVersion()).thenReturn(version); + when(result.getFilter()).thenReturn(null); return result; } @@ -170,31 +168,20 @@ public abstract class ActionTest extends AbstractProvisioningTest { * Call this method to setup Publisher Info, not <code>insertPublisherInfoBehavior</code> */ public void setupPublisherInfo() { - publisherInfo = createPublisherInfoMock(); + publisherInfo = mock(IPublisherInfo.class); String[] config = getArrayFromString(configSpec, COMMA_SEPARATOR); - expect(publisherInfo.getConfigurations()).andReturn(config).anyTimes(); + when(publisherInfo.getConfigurations()).thenReturn(config); insertPublisherInfoBehavior(); - replay(publisherInfo); - } - - /** - * Creates the mock object for the IPublisherInfo. Subclasses - * can override to create a nice or strict mock instead. - * @return The publisher info mock - * @see org.easymock.EasyMock#createNiceMock(Class) - * @see org.easymock.EasyMock#createStrictMock(Class) - */ - protected IPublisherInfo createPublisherInfoMock() { - return createMock(IPublisherInfo.class); } /** * Do not call this method, it is called by <code>setupPublisherInfo</code>. */ protected void insertPublisherInfoBehavior() { - expect(publisherInfo.getMetadataRepository()).andReturn(createTestMetdataRepository(new IInstallableUnit[0])).anyTimes(); - expect(publisherInfo.getContextMetadataRepository()).andReturn(createTestMetdataRepository(new IInstallableUnit[0])).anyTimes(); + when(publisherInfo.getMetadataRepository()).thenReturn(createTestMetdataRepository(new IInstallableUnit[0])); + when(publisherInfo.getContextMetadataRepository()) + .thenReturn(createTestMetdataRepository(new IInstallableUnit[0])); } public void cleanup() { diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceMatcher.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceMatcher.java deleted file mode 100644 index f23e1f53b..000000000 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/AdviceMatcher.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * 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.publisher.actions; - -import org.easymock.EasyMock; -import org.easymock.IArgumentMatcher; -import org.eclipse.equinox.p2.metadata.Version; -import org.eclipse.equinox.p2.publisher.IPublisherAdvice; - -/** - * A matcher that matches advice applicable to a given id and version. - */ -public class AdviceMatcher implements IArgumentMatcher { - private final Version version; - private final String id; - private static Class<?> clazz; - - public static IPublisherAdvice adviceMatches(String id, Version version, Class<?> clazz) { - AdviceMatcher.clazz = clazz; - EasyMock.reportMatcher(new AdviceMatcher(id, version)); - return null; - } - - public AdviceMatcher(String id, Version version) { - this.id = id; - this.version = version; - } - - @Override - public void appendTo(StringBuffer buf) { - buf.append("AdviceMatcher[" + id + ',' + version + ']'); - } - - @Override - public boolean matches(Object arg) { - if (!(arg instanceof IPublisherAdvice)) - return false; - if (!(clazz.isAssignableFrom(arg.getClass()))) - return false; - IPublisherAdvice advice = (IPublisherAdvice) arg; - return advice.isApplicable("", false, id, version); - } -} diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java index 72bde8105..fd95c834b 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/BundlesActionTest.java @@ -16,15 +16,16 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.and; -import static org.easymock.EasyMock.capture; -import static org.easymock.EasyMock.expect; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.statusWithMessageWhich; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.io.BufferedInputStream; import java.io.File; @@ -39,9 +40,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.zip.ZipInputStream; -import org.easymock.Capture; -import org.easymock.CaptureType; -import org.easymock.EasyMock; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; @@ -60,6 +58,7 @@ import org.eclipse.equinox.p2.metadata.IUpdateDescriptor; import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription; import org.eclipse.equinox.p2.metadata.Version; import org.eclipse.equinox.p2.metadata.VersionRange; +import org.eclipse.equinox.p2.metadata.expression.IMatchExpression; import org.eclipse.equinox.p2.publisher.AbstractPublisherApplication; import org.eclipse.equinox.p2.publisher.AdviceFileAdvice; import org.eclipse.equinox.p2.publisher.IPublisherInfo; @@ -80,6 +79,8 @@ import org.eclipse.equinox.p2.tests.TestActivator; import org.eclipse.equinox.p2.tests.TestData; import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository; import org.eclipse.equinox.spi.p2.publisher.PublisherHelper; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; public class BundlesActionTest extends ActionTest { private static final String OSGI = PublisherHelper.OSGI_BUNDLE_CLASSIFIER; @@ -143,39 +144,27 @@ public class BundlesActionTest extends ActionTest { private static final VersionRange TEST1_IU_D_VERSION_RANGE = VersionRange.create("1.3.0");//$NON-NLS-1$ protected TestArtifactRepository artifactRepository = new TestArtifactRepository(getAgent()); - - private Capture<ITouchpointAdvice> tpAdvice1, tpAdvice2; - private Capture<IUpdateDescriptorAdvice> udAdvice3; - private Capture<ICapabilityAdvice> capAdvice5; - - @Override - public void setupPublisherInfo() { - tpAdvice1 = Capture.newInstance(CaptureType.ALL); - tpAdvice2 = Capture.newInstance(CaptureType.ALL); - - udAdvice3 = Capture.newInstance(CaptureType.ALL); - capAdvice5 = Capture.newInstance(CaptureType.ALL); - - super.setupPublisherInfo(); - } + private ArgumentCaptor<AdviceFileAdvice> updateDescriptorCapture; public void testAll() throws Exception { File[] files = TEST_BASE.listFiles(); - testAction = new BundlesAction(files); + testAction = Mockito.spy(new BundlesAction(files)); setupPublisherResult(); setupPublisherInfo(); artifactRepository.setProperty(AbstractPublisherApplication.PUBLISH_PACK_FILES_AS_SIBLINGS, "true");//$NON-NLS-1$ + updateDescriptorCapture = ArgumentCaptor.forClass(AdviceFileAdvice.class); + IStatus status = testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor()); + verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(updateDescriptorCapture.capture()); + assertEquals(Status.OK_STATUS, status); - assertEquals(Status.OK_STATUS, testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor())); verifyBundlesAction(); cleanup(); - debug("Completed BundlesActionTest.");//$NON-NLS-1$ } public void testTranslationFragment() { File foo_fragment = new File(TestActivator.getTestDataFolder(), "FragmentPublisherTest/foo.fragment");//$NON-NLS-1$ File foo = new File(TestActivator.getTestDataFolder(), "FragmentPublisherTest/foo");//$NON-NLS-1$ - BundlesAction bundlesAction = new BundlesAction(new File[] {foo_fragment}); + BundlesAction bundlesAction = new BundlesAction(new File[] { foo_fragment }); PublisherInfo info = new PublisherInfo(); PublisherResult results = new PublisherResult(); @@ -185,7 +174,7 @@ public class BundlesActionTest extends ActionTest { info = new PublisherInfo(); results = new PublisherResult(); - bundlesAction = new BundlesAction(new File[] {foo}); + bundlesAction = new BundlesAction(new File[] { foo }); bundlesAction.perform(info, results, new NullProgressMonitor()); ius = results.getIUs(null, null); assertEquals(1, ius.size()); @@ -197,7 +186,7 @@ public class BundlesActionTest extends ActionTest { utils.setTranslationSource(queryableArray); assertEquals("English Foo", utils.getIUProperty(iu, IInstallableUnit.PROP_NAME)); - bundlesAction = new BundlesAction(new File[] {foo_fragment}); + bundlesAction = new BundlesAction(new File[] { foo_fragment }); bundlesAction.perform(info, results, new NullProgressMonitor()); ius = results.getIUs(null, null); assertEquals(3, ius.size()); @@ -238,7 +227,8 @@ public class BundlesActionTest extends ActionTest { canonicalIdx = 0; } - try (ZipInputStream actual = artifactRepository.getZipInputStream(descriptors[canonicalIdx]); ZipInputStream expected = new ZipInputStream(new FileInputStream(TEST_FILE2))) { + try (ZipInputStream actual = artifactRepository.getZipInputStream(descriptors[canonicalIdx]); + ZipInputStream expected = new ZipInputStream(new FileInputStream(TEST_FILE2))) { TestData.assertEquals(expected, actual); } @@ -248,12 +238,14 @@ public class BundlesActionTest extends ActionTest { IArtifactKey key1 = ArtifactKey.parse("osgi.bundle,test1,0.1.0");//$NON-NLS-1$ ZipInputStream zis = artifactRepository.getZipInputStream(key1); - Map<String, Object[]> fileMap = getFileMap(new HashMap<>(), new File[] {TEST_FILE1}, new Path(TEST_FILE1.getAbsolutePath())); + Map<String, Object[]> fileMap = getFileMap(new HashMap<>(), new File[] { TEST_FILE1 }, + new Path(TEST_FILE1.getAbsolutePath())); TestData.assertContains(fileMap, zis, true); } private void verifyBundle1() { - List<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST1_PROVBUNDLE_NAME, IPublisherResult.ROOT)); + List<IInstallableUnit> ius = new ArrayList<>( + publisherResult.getIUs(TEST1_PROVBUNDLE_NAME, IPublisherResult.ROOT)); assertEquals(1, ius.size()); IInstallableUnit bundle1IU = ius.get(0); @@ -272,25 +264,28 @@ public class BundlesActionTest extends ActionTest { verifyProvidedCapability(providedCapabilities, OSGI_IDENTITY, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION); verifyProvidedCapability(providedCapabilities, OSGI, TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION); verifyProvidedCapability(providedCapabilities, TEST1_PROV_Z_NAMESPACE, TEST1_PROVZ_NAME, TEST2_PROVZ_VERSION); - verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "source", Version.create("1.0.0"));//$NON-NLS-1$//$NON-NLS-2$ + verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "source", //$NON-NLS-1$ + Version.create("1.0.0"));//$NON-NLS-1$ assertEquals(5, providedCapabilities.size()); - Collection<ITouchpointData> data = bundle1IU.getTouchpointData(); + List<AdviceFileAdvice> tData = updateDescriptorCapture.getAllValues(); boolean found = false; - for (ITouchpointData td : data) { - ITouchpointInstruction configure = td.getInstruction("configure"); - if (configure == null) - continue; - String body = configure.getBody(); - if (body != null && body.indexOf("download.eclipse.org/releases/ganymede") > 0) { - found = true; + for (AdviceFileAdvice iTouchpointAdvice : tData) { + ITouchpointInstruction configure = iTouchpointAdvice.getTouchpointData(NO_TP_DATA) + .getInstruction("configure"); + if (configure != null) { + String body = configure.getBody(); + if (body != null && body.indexOf("download.eclipse.org/releases/ganymede") > 0) { + found = true; + } } } assertTrue(found); } private void verifyBundle2() { - List<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST2_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); + List<IInstallableUnit> ius = new ArrayList<>( + publisherResult.getIUs(TEST2_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); assertEquals(1, ius.size()); IInstallableUnit bundleIu = ius.get(0); @@ -307,14 +302,16 @@ public class BundlesActionTest extends ActionTest { // check provided capabilities Collection<IProvidedCapability> providedCapabilities = bundleIu.getProvidedCapabilities(); - verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST2_PROV_BUNDLE_NAME, PROVBUNDLE2_VERSION); + verifyProvidedCapability(providedCapabilities, PROVBUNDLE_NAMESPACE, TEST2_PROV_BUNDLE_NAME, + PROVBUNDLE2_VERSION); verifyProvidedCapability(providedCapabilities, OSGI, TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION); verifyProvidedCapability(providedCapabilities, OSGI_IDENTITY, TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION); verifyProvidedCapability(providedCapabilities, TEST2_PROV_Z_NAMESPACE, TEST2_PROV_Z_NAME, TEST2_PROVZ_VERSION); verifyProvidedCapability(providedCapabilities, TEST2_PROV_Y_NAMESPACE, TEST2_PROV_Y_NAME, TEST2_PROVY_VERSION); verifyProvidedCapability(providedCapabilities, TEST2_PROV_X_NAMESPACE, TEST2_PROV_X_NAME, TEST2_PROVX_VERSION); - verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "bundle", Version.create("1.0.0"));//$NON-NLS-1$//$NON-NLS-2$ - assertEquals(7, providedCapabilities.size()); /*number of tested elements*/ + verifyProvidedCapability(providedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "bundle", //$NON-NLS-1$ + Version.create("1.0.0"));//$NON-NLS-1$ + assertEquals(7, providedCapabilities.size()); /* number of tested elements */ // check %bundle name is correct Map<String, String> prop = bundleIu.getProperties(); @@ -336,27 +333,41 @@ public class BundlesActionTest extends ActionTest { } private void verifyBundle3() { - // also a regression test for bug 393051: manifest headers use uncommon (but valid) capitalization - ArrayList<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST3_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); + // also a regression test for bug 393051: manifest headers use uncommon (but + // valid) capitalization + ArrayList<IInstallableUnit> ius = new ArrayList<>( + publisherResult.getIUs(TEST3_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); assertEquals(1, ius.size()); - - IInstallableUnit bundleIu = ius.get(0); - - IUpdateDescriptor updateDescriptor = bundleIu.getUpdateDescriptor(); - String name = RequiredCapability.extractName(updateDescriptor.getIUsBeingUpdated().iterator().next()); + IUpdateDescriptor updateDescriptor = null; + boolean found = false; + for (AdviceFileAdvice advice : updateDescriptorCapture.getAllValues()) { + IUpdateDescriptor descriptor = advice.getUpdateDescriptor(new InstallableUnitDescription()); + if (descriptor != null) { + Collection<IMatchExpression<IInstallableUnit>> iUsBeingUpdated = descriptor.getIUsBeingUpdated(); + if (iUsBeingUpdated != null) { + String name = RequiredCapability.extractName(descriptor.getIUsBeingUpdated().iterator().next()); + if (TEST3_PROV_BUNDLE_NAME.equals(name)) { + updateDescriptor = descriptor; + found = true; + break; + } + } + } + } + assertTrue(found); VersionRange range = RequiredCapability.extractRange(updateDescriptor.getIUsBeingUpdated().iterator().next()); String description = updateDescriptor.getDescription(); int severity = updateDescriptor.getSeverity(); VersionRange expectedRange = new VersionRange("(0.0.1," + BUNDLE3_VERSION + "]"); - assertEquals(TEST3_PROV_BUNDLE_NAME, name); assertEquals(expectedRange, range); assertEquals("Some description about this update", description.trim()); assertEquals(8, severity); } private void verifyBundle4() { - ArrayList<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST4_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); + ArrayList<IInstallableUnit> ius = new ArrayList<>( + publisherResult.getIUs(TEST4_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); assertEquals(1, ius.size()); IInstallableUnit bundleIu = ius.get(0); @@ -365,23 +376,29 @@ public class BundlesActionTest extends ActionTest { // check required capabilities Collection<IRequirement> requirements = bundleIu.getRequirements(); - verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTIONAL_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, false); - verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTGREEDY_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, true); + verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTIONAL_NAME, DEFAULT_VERSION_RANGE, null, 0, + 1, false); + verifyRequirement(requirements, JAVA_PACKAGE, TEST4_REQ_PACKAGE_OPTGREEDY_NAME, DEFAULT_VERSION_RANGE, null, 0, + 1, true); verifyRequirement(requirements, OSGI, TEST4_REQ_BUNDLE_OPTIONAL_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, false); verifyRequirement(requirements, OSGI, TEST4_REQ_BUNDLE_OPTGREEDY_NAME, DEFAULT_VERSION_RANGE, null, 0, 1, true); assertEquals(4, requirements.size()); } private void verifyBundle5() { - ArrayList<IInstallableUnit> ius = new ArrayList<>(publisherResult.getIUs(TEST5_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); + ArrayList<IInstallableUnit> ius = new ArrayList<>( + publisherResult.getIUs(TEST5_PROV_BUNDLE_NAME, IPublisherResult.ROOT)); assertEquals(1, ius.size()); IInstallableUnit bundle5IU = ius.get(0); - + for (AdviceFileAdvice adv : updateDescriptorCapture.getAllValues()) { + IRequirement[] reqs = adv.getRequiredCapabilities(new InstallableUnitDescription()); + if (reqs != null) { + verifyRequirement(List.of(reqs), "bar", "foo", VersionRange.emptyRange, null, 6, 7, true); + } + } Collection<IRequirement> requirements = bundle5IU.getRequirements(); verifyRequirement(requirements, OSGI_EE, TEST5_REQ_EE, null, 1, 1, true); - verifyRequirement(requirements, "bar", "foo", VersionRange.emptyRange, null, 6, 7, true); - assertEquals(2, requirements.size()); } @Override @@ -395,7 +412,8 @@ public class BundlesActionTest extends ActionTest { @Override protected void insertPublisherInfoBehavior() { - //super sets publisherInfo.getMetadataRepository and publisherInfo.getContextMetadataRepository + // super sets publisherInfo.getMetadataRepository and + // publisherInfo.getContextMetadataRepository super.insertPublisherInfoBehavior(); Map<String, String> sarProperties = new HashMap<>(); sarProperties.put("key1", "value1");//$NON-NLS-1$//$NON-NLS-2$ @@ -405,23 +423,21 @@ public class BundlesActionTest extends ActionTest { sdkProperties.put("key1", "value1");//$NON-NLS-1$//$NON-NLS-2$ sdkProperties.put("key2", "value2");//$NON-NLS-1$//$NON-NLS-2$ - expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes(); - expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes(); - expect(publisherInfo.getAdvice(null, false, null, null, ICapabilityAdvice.class)).andReturn(new ArrayList<>()).anyTimes(); + when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository); + when(publisherInfo.getArtifactOptions()) + .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH); + when(publisherInfo.getAdvice(null, false, null, null, ICapabilityAdvice.class)).thenReturn(new ArrayList<>()); expectOtherAdviceQueries(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION); expectPropertyAdviceQuery(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, sarProperties); expectUpdateDescriptorAdviceQuery(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, null); - expectTouchpointAdviceQuery(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, tpAdvice1.getValues()); expectOtherAdviceQueries(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION); expectPropertyAdviceQuery(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, sdkProperties); expectUpdateDescriptorAdviceQuery(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, null); - expectTouchpointAdviceQuery(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, tpAdvice2.getValues()); expectOtherAdviceQueries(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION); expectPropertyAdviceQuery(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, sarProperties); - expectUpdateDescriptorAdviceQuery(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, udAdvice3.getValues()); expectTouchpointAdviceQuery(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, null); expectOtherAdviceQueries(TEST4_PROV_BUNDLE_NAME, BUNDLE4_VERSION); @@ -429,49 +445,43 @@ public class BundlesActionTest extends ActionTest { expectUpdateDescriptorAdviceQuery(TEST4_PROV_BUNDLE_NAME, BUNDLE4_VERSION, null); expectTouchpointAdviceQuery(TEST4_PROV_BUNDLE_NAME, BUNDLE4_VERSION, null); - expectCapabilityAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, capAdvice5.getValues()); +// expectCapabilityAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, capAdvice5.getValues()); expectOtherAdviceQueries(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION); expectPropertyAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, sarProperties); expectUpdateDescriptorAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, null); expectTouchpointAdviceQuery(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, null); - //capture any touchpoint advice, and return the captured advice when the action asks for it - publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST1_PROVBUNDLE_NAME, BUNDLE1_VERSION, ITouchpointAdvice.class), capture(tpAdvice1))); - EasyMock.expectLastCall().anyTimes(); - - publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST2_PROV_BUNDLE_NAME, BUNDLE2_VERSION, ITouchpointAdvice.class), capture(tpAdvice2))); - EasyMock.expectLastCall().anyTimes(); - - publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST3_PROV_BUNDLE_NAME, BUNDLE3_VERSION, AdviceFileAdvice.class), capture(udAdvice3))); - - publisherInfo.addAdvice(and(AdviceMatcher.adviceMatches(TEST5_PROV_BUNDLE_NAME, BUNDLE5_VERSION, AdviceFileAdvice.class), capture(capAdvice5))); - EasyMock.expectLastCall().anyTimes(); } private void expectOtherAdviceQueries(String bundleName, Version bundleVersion) { - expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class)) - .andReturn(Collections.emptyList()); - expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IAdditionalInstallableUnitAdvice.class)) - .andReturn(Collections.emptyList()); - expect(publisherInfo.getAdvice(null, true, bundleName, bundleVersion, IBundleShapeAdvice.class)).andReturn(null); + when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IAdditionalInstallableUnitAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, true, bundleName, bundleVersion, IBundleShapeAdvice.class)).thenReturn(null); } - private void expectCapabilityAdviceQuery(String bundleName, Version bundleVersion, Collection<ICapabilityAdvice> answer) { - if (answer == null) - answer = Collections.emptyList(); - expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class)).andReturn(answer); - } +// private void expectCapabilityAdviceQuery(String bundleName, Version bundleVersion, +// Collection<ICapabilityAdvice> answer) { +// if (answer == null) +// answer = Collections.emptyList(); +// when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ICapabilityAdvice.class)) +// .thenReturn(answer); +// } - private void expectUpdateDescriptorAdviceQuery(String bundleName, Version bundleVersion, Collection<IUpdateDescriptorAdvice> answer) { + private void expectUpdateDescriptorAdviceQuery(String bundleName, Version bundleVersion, + Collection<IUpdateDescriptorAdvice> answer) { if (answer == null) answer = Collections.emptyList(); - expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IUpdateDescriptorAdvice.class)).andReturn(answer); + when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IUpdateDescriptorAdvice.class)) + .thenReturn(answer); } - private void expectTouchpointAdviceQuery(String bundleName, Version bundleVersion, Collection<ITouchpointAdvice> answer) { + private void expectTouchpointAdviceQuery(String bundleName, Version bundleVersion, List<ITouchpointAdvice> answer) { if (answer == null) answer = Collections.emptyList(); - expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ITouchpointAdvice.class)).andReturn(answer).anyTimes(); + when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, ITouchpointAdvice.class)) + .thenReturn(answer); } private void expectPropertyAdviceQuery(String bundleName, Version bundleVersion, Map<String, String> answer) { @@ -480,20 +490,22 @@ public class BundlesActionTest extends ActionTest { propertyAdvices = Collections.singletonList(createPropertyAdvice(answer)); else propertyAdvices = Collections.emptyList(); - expect(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IPropertyAdvice.class)).andReturn(propertyAdvices).times(2); + when(publisherInfo.getAdvice(null, false, bundleName, bundleVersion, IPropertyAdvice.class)) + .thenReturn(propertyAdvices); } private IPropertyAdvice createPropertyAdvice(Map<String, String> properties) { - IPropertyAdvice mockAdvice = EasyMock.createMock(IPropertyAdvice.class); - expect(mockAdvice.getInstallableUnitProperties((InstallableUnitDescription) EasyMock.anyObject())).andReturn(null).anyTimes(); - expect(mockAdvice.getArtifactProperties((IInstallableUnit) EasyMock.anyObject(), (IArtifactDescriptor) EasyMock.anyObject())).andReturn(properties).anyTimes(); - EasyMock.replay(mockAdvice); + IPropertyAdvice mockAdvice = mock(IPropertyAdvice.class); + when(mockAdvice.getInstallableUnitProperties(any(InstallableUnitDescription.class))).thenReturn(null); + when(mockAdvice.getArtifactProperties(any(IInstallableUnit.class), any(IArtifactDescriptor.class))) + .thenReturn(properties); return mockAdvice; } public void testDynamicImport() throws Exception { File testData = getTestData("dymamicImport", "testData/dynamicImport"); - IInstallableUnit iu = BundlesAction.createBundleIU(BundlesAction.createBundleDescription(testData), null, new PublisherInfo()); + IInstallableUnit iu = BundlesAction.createBundleIU(BundlesAction.createBundleDescription(testData), null, + new PublisherInfo()); Collection<IRequirement> requirements = iu.getRequirements(); verifyRequirement(requirements, OSGI_EE, TESTDYN_REQ_EE, null, 1, 1, true); @@ -510,11 +522,13 @@ public class BundlesActionTest extends ActionTest { // overall status shall be error... assertThat(status, errorStatus()); List<IStatus> childStatuses = Arrays.asList(status.getChildren()); - assertThat(childStatuses, hasItem(statusWithMessageWhich(containsString("The manifest line \"foo\" is invalid; it has no colon ':' character after the header key.")))); + assertThat(childStatuses, hasItem(statusWithMessageWhich(containsString( + "The manifest line \"foo\" is invalid; it has no colon ':' character after the header key.")))); assertThat(childStatuses.size(), is(1)); // ... but the valid bundle must still be published - Collection<IInstallableUnit> ius = publisherResult.getIUs("org.eclipse.p2.test.validManifest", IPublisherResult.ROOT); + Collection<IInstallableUnit> ius = publisherResult.getIUs("org.eclipse.p2.test.validManifest", + IPublisherResult.ROOT); assertThat(ius.size(), is(1)); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/CaptureList.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/CaptureList.java deleted file mode 100644 index e317d621c..000000000 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/CaptureList.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * 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.publisher.actions; - -import java.util.AbstractList; -import org.easymock.Capture; - -/** - * An object that adapts an EasyMock Capture to a List. - */ -public class CaptureList<E> extends AbstractList<E> { - private Capture<E> capture; - - public CaptureList(Capture<E> capture) { - this.capture = capture; - } - - @Override - public E get(int arg0) { - return capture.getValue(); - } - - @Override - public int size() { - return capture.hasCaptured() ? 1 : 0; - } - -} 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 24b6997bb..99afa871c 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 @@ -15,13 +15,17 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.expect; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.matches; +import static org.mockito.Mockito.when; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.easymock.EasyMock; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.equinox.internal.p2.metadata.InstallableUnit; import org.eclipse.equinox.internal.p2.publisher.eclipse.DataLoader; @@ -147,7 +151,8 @@ public class ConfigCUsActionTest extends ActionTest { ConfigAdvice configAdvice = new ConfigAdvice(configData, configSpec); ArrayList<IConfigAdvice> 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).anyTimes(); + when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class), + eq(IConfigAdvice.class))).thenReturn(configList); //configure IExecutableAdvice LauncherData launcherData = loader.getLauncherData(); @@ -164,14 +169,15 @@ public class ConfigCUsActionTest extends ActionTest { // TODO Auto-generated catch block } - expect(publisherInfo.getAdvice(EasyMock.matches(configSpec), EasyMock.eq(false), (String) EasyMock.anyObject(), (Version) EasyMock.anyObject(), EasyMock.eq(IExecutableAdvice.class))).andReturn(launchingList).anyTimes(); + when(publisherInfo.getAdvice(matches(configSpec), eq(false), anyString(), any(Version.class), + eq(IExecutableAdvice.class))).thenReturn(launchingList); //setup metadata repository IInstallableUnit[] ius = {mockIU("foo", null), mockIU("bar", null)}; //$NON-NLS-1$ //$NON-NLS-2$ metadataRepo = new TestMetadataRepository(getAgent(), ius); - expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepo).anyTimes(); - expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes(); + when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepo); + when(publisherInfo.getContextMetadataRepository()).thenReturn(null); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java index 41bf705a0..532bab05e 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxExecutableActionTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2017 Code 9 and others. + * Copyright (c) 2008, 2021 Code 9 and others. * * This * program and the accompanying materials are made available under the terms of @@ -15,9 +15,11 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.anyBoolean; -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.expect; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.nullable; +import static org.mockito.Mockito.when; import java.io.File; import java.io.FileInputStream; @@ -30,6 +32,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.LinkedList; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.zip.ZipEntry; @@ -62,10 +65,9 @@ public class EquinoxExecutableActionTest extends ActionTest { private static final File LINUX_EXEC = new File(TestActivator.getTestDataFolder(), "EquinoxExecutableActionTest/linux/"); //$NON-NLS-1$ private static final File WIN_EXEC = new File(TestActivator.getTestDataFolder(), "EquinoxExecutableActionTest/win/"); //$NON-NLS-1$ private final String EXECUTABLE_NAME = "LauncherName"; //$NON-NLS-1$ - private Collection<IBrandingAdvice> brandingAdvice = new LinkedList<>(); private String macConfigCocoa = "cocoa.macosx.x86"; //$NON-NLS-1$ - private String winConfig = "win32.win32.x86"; //$NON-NLS-1$ - private String linuxConfig = "linux.gtk.x86"; //$NON-NLS-1$ + private String winConfig = "win32.win32.x86_64"; //$NON-NLS-1$ + private String linuxConfig = "linux.gtk.x86_64"; //$NON-NLS-1$ private ExecutablesDescriptor executablesDescriptor; private IArtifactRepository artifactRepository; private Version version = Version.create("1.2.3"); //$NON-NLS-1$ @@ -76,9 +78,6 @@ public class EquinoxExecutableActionTest extends ActionTest { public void setUp() throws Exception { setupPublisherInfo(); setupPublisherResult(); - } - - private void setupArtifactRepository() { artifactRepository = new TestArtifactRepository(getAgent()); } @@ -118,7 +117,10 @@ public class EquinoxExecutableActionTest extends ActionTest { private void testExecutableAction(String idBase, final String osArg, String config, File exec, File icon) { id = idBase; - setupBrandingAdvice(osArg, configSpec, exec, icon); + when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository); + when(publisherInfo.getArtifactOptions()).thenReturn(IPublisherInfo.A_PUBLISH); + when(publisherInfo.getAdvice(anyString(), anyBoolean(), nullable(String.class), nullable(Version.class), + eq(IBrandingAdvice.class))).then(invocation -> setupBrandingAdvice(osArg, icon)); executablesDescriptor = ExecutablesDescriptor.createDescriptor(osArg, "eclipse", exec); testAction = new EquinoxExecutableAction(executablesDescriptor, config, idBase, version, flavorArg); testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor()); @@ -128,10 +130,10 @@ public class EquinoxExecutableActionTest extends ActionTest { private void verifyResults(String idBase, String confSpec) { ArrayList<IInstallableUnit> iuList = new ArrayList<>(publisherResult.getIUs(null, IPublisherResult.ROOT)); + assertEquals(3, iuList.size()); verifyEclipseIU(iuList, idBase, confSpec); verifyCU(iuList, idBase, confSpec); verifyExecIU(iuList, idBase, confSpec); - assertTrue(iuList.size() == 3); } private void verifyCU(ArrayList<IInstallableUnit> iuList, String idBase, String confSpec) { @@ -162,16 +164,16 @@ public class EquinoxExecutableActionTest extends ActionTest { private void verifyEclipseIU(ArrayList<IInstallableUnit> iuList, String idBase, String confSpec) { for (IInstallableUnit possibleEclipse : iuList) { if (possibleEclipse.getId().equals((idBase + ".executable." + confSpec + "." + EXECUTABLE_NAME))) { //$NON-NLS-1$//$NON-NLS-2$ - assertTrue(possibleEclipse.getVersion().equals(version)); + assertEquals(version, possibleEclipse.getVersion()); Collection<IProvidedCapability> providedCapability = possibleEclipse.getProvidedCapabilities(); verifyProvidedCapability(providedCapability, IInstallableUnit.NAMESPACE_IU_ID, idBase + ".executable." + confSpec + "." + EXECUTABLE_NAME, version); //$NON-NLS-1$ //$NON-NLS-2$ - assertTrue(providedCapability.size() == 1); + assertEquals(1, providedCapability.size()); Collection<IRequirement> req = possibleEclipse.getRequirements(); - assertTrue(req.size() == 0); + assertEquals(0, req.size()); return;//pass } } - fail(); + fail("No executable installable unit."); } private void verifyExecIU(ArrayList<IInstallableUnit> iuList, String idBase, String confSpec) { @@ -274,15 +276,8 @@ public class EquinoxExecutableActionTest extends ActionTest { } } - @Override - protected void insertPublisherInfoBehavior() { - setupArtifactRepository(); - expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes(); - expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_PUBLISH).anyTimes(); - expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), (Class<IBrandingAdvice>) anyObject())).andReturn(brandingAdvice); - } - - private void setupBrandingAdvice(final String osArg, final String config, final File exec, final File icon) { + private List<IBrandingAdvice> setupBrandingAdvice(final String osArg, final File icon) { + List<IBrandingAdvice> brandingAdvice = new LinkedList<>(); brandingAdvice.add(new IBrandingAdvice() { @Override public boolean isApplicable(String configSpec, boolean includeDefault, String id, Version version) { @@ -304,5 +299,6 @@ public class EquinoxExecutableActionTest extends ActionTest { return EXECUTABLE_NAME; } }); + return brandingAdvice; } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java index 95442d175..ff0b846fb 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/EquinoxLauncherCUActionTest.java @@ -15,9 +15,8 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.createMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.replay; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Collection; @@ -56,13 +55,12 @@ public class EquinoxLauncherCUActionTest extends ActionTest { } protected IInstallableUnit mockIU(String id, Version version, boolean fragment) { - IInstallableUnit result = createMock(IInstallableUnit.class); - expect(result.getId()).andReturn(id).anyTimes(); + IInstallableUnit result = mock(IInstallableUnit.class); + when(result.getId()).thenReturn(id); if (version == null) version = Version.emptyVersion; - expect(result.getVersion()).andReturn(version).anyTimes(); - expect(result.getFilter()).andReturn(null).anyTimes(); - replay(result); + when(result.getVersion()).thenReturn(version); + when(result.getFilter()).thenReturn(null); return result; } @@ -108,7 +106,10 @@ public class EquinoxLauncherCUActionTest extends ActionTest { ArrayList<IVersionAdvice> versionList = new ArrayList<>(); versionList.add(versionAdvice); - expect(publisherInfo.getAdvice(null, true, EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER, null, IVersionAdvice.class)).andReturn(versionList); - expect(publisherInfo.getAdvice(configSpec, true, EquinoxLauncherCUAction.ORG_ECLIPSE_EQUINOX_LAUNCHER + "." + configSpec, null, IVersionAdvice.class)).andReturn(versionList); //$NON-NLS-1$ + 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); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java index bae3a460e..279660892 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/FeaturesActionTest.java @@ -15,10 +15,10 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.and; -import static org.easymock.EasyMock.capture; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.isA; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.io.File; import java.io.IOException; @@ -26,10 +26,9 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.zip.ZipInputStream; -import org.easymock.Capture; -import org.easymock.EasyMock; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.equinox.internal.p2.metadata.ArtifactKey; @@ -62,6 +61,8 @@ import org.eclipse.equinox.p2.tests.TestData; import org.eclipse.equinox.p2.tests.TestMetadataRepository; import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository; import org.eclipse.equinox.spi.p2.publisher.PublisherHelper; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; public class FeaturesActionTest extends ActionTest { @@ -75,12 +76,12 @@ public class FeaturesActionTest extends ActionTest { private Version barVersion = Version.create("1.1.1"); //$NON-NLS-1$ private String BAR = "bar"; //$NON-NLS-1$ private String FOO = "foo"; //$NON-NLS-1$ - private Capture<ITouchpointAdvice> tpAdvice; + private ArgumentCaptor<ITouchpointAdvice> capture = ArgumentCaptor.forClass(ITouchpointAdvice.class); @Override public void setUp() throws Exception { - testAction = new FeaturesAction(new File[] {root}); - tpAdvice = Capture.newInstance(); + super.setUp(); + testAction = Mockito.spy(new FeaturesAction(new File[] { root })); setupPublisherInfo(); setupPublisherResult(); } @@ -90,37 +91,41 @@ public class FeaturesActionTest extends ActionTest { */ public void testSimple() throws Exception { testAction.perform(publisherInfo, publisherResult, new NullProgressMonitor()); + verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(capture.capture()); verifyRepositoryContents(); debug("Completed FeaturesAction."); //$NON-NLS-1$ } public void testFeaturePatch() throws Exception { File testFolder = getTestFolder("FeaturesAction.testFilters"); - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n"); buffer.append(" <requires> \n"); - buffer.append(" <import feature=\"org.foo\" version=\"[1.0.0,2.0.0)\" match=\"versionRange\" patch=\"true\"/> \n"); + buffer.append( + " <import feature=\"org.foo\" version=\"[1.0.0,2.0.0)\" match=\"versionRange\" patch=\"true\"/> \n"); buffer.append(" </requires> \n"); buffer.append("</feature> \n"); File featureXML = new File(testFolder, "feature.xml"); writeBuffer(featureXML, buffer); publisherInfo = new PublisherInfo(); - FeaturesAction action = new FeaturesAction(new File[] {testFolder}); + FeaturesAction action = new FeaturesAction(new File[] { testFolder }); action.perform(publisherInfo, publisherResult, new NullProgressMonitor()); - IInstallableUnitPatch iu = (IInstallableUnitPatch) publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null); + IInstallableUnitPatch iu = (IInstallableUnitPatch) publisherResult.getIU("test.feature.feature.group", + Version.parseVersion("1.0.0"), null); IRequirement[][] applicabilityScope = iu.getApplicabilityScope(); assertEquals(1, applicabilityScope.length); IRequiredCapability require = (IRequiredCapability) applicabilityScope[0][0]; - IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true); + IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, + "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true); verifyRequirement(Collections.singleton(expected), require); } public void testMatchRange() throws Exception { File testFolder = getTestFolder("FeaturesAction.testFilters"); - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n"); buffer.append(" <requires> \n"); buffer.append(" <import plugin=\"org.plug\" version=\"[1.0.0,2.0.0)\" match=\"versionRange\" /> \n"); @@ -131,7 +136,7 @@ public class FeaturesActionTest extends ActionTest { writeBuffer(featureXML, buffer); publisherInfo = new PublisherInfo(); - FeaturesAction action = new FeaturesAction(new File[] {testFolder}); + FeaturesAction action = new FeaturesAction(new File[] { testFolder }); action.perform(publisherInfo, publisherResult, new NullProgressMonitor()); IInstallableUnit iu = publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null); @@ -141,10 +146,12 @@ public class FeaturesActionTest extends ActionTest { String requireName = ((IRequiredCapability) require).getName(); if (requireName.equals("org.foo.feature.group")) { - IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true); + IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, + "org.foo.feature.group", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true); verifyRequirement(Collections.singleton(expected), require); } else if (requireName.equals("org.plug")) { - IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug", VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true); + IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug", + VersionRange.create("[1.0.0, 2.0.0)"), null, false, false, true); verifyRequirement(Collections.singleton(expected), require); } } @@ -152,7 +159,7 @@ public class FeaturesActionTest extends ActionTest { public void testMatchGreaterOrEqual() throws Exception { File testFolder = getTestFolder("FeaturesAction.testFilters"); - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n"); buffer.append(" <requires> \n"); buffer.append(" <import plugin=\"org.plug\" version=\"1.0.0\" match=\"greaterOrEqual\" /> \n"); @@ -163,7 +170,7 @@ public class FeaturesActionTest extends ActionTest { writeBuffer(featureXML, buffer); publisherInfo = new PublisherInfo(); - FeaturesAction action = new FeaturesAction(new File[] {testFolder}); + FeaturesAction action = new FeaturesAction(new File[] { testFolder }); action.perform(publisherInfo, publisherResult, new NullProgressMonitor()); IInstallableUnit iu = publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null); @@ -173,10 +180,12 @@ public class FeaturesActionTest extends ActionTest { String requireName = ((IRequiredCapability) require).getName(); if (requireName.equals("org.foo.feature.group")) { - IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.foo.feature.group", VersionRange.create("1.0.0"), null, false, false, true); + IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, + "org.foo.feature.group", VersionRange.create("1.0.0"), null, false, false, true); verifyRequirement(Collections.singleton(expected), require); } else if (requireName.equals("org.plug")) { - IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug", VersionRange.create("1.0.0"), null, false, false, true); + IRequirement expected = MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "org.plug", + VersionRange.create("1.0.0"), null, false, false, true); verifyRequirement(Collections.singleton(expected), require); } } @@ -184,7 +193,7 @@ public class FeaturesActionTest extends ActionTest { public void testFilters() throws Exception { File testFolder = getTestFolder("FeaturesAction.testFilters"); - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append("<feature id=\"test.feature\" version=\"1.0.0\" > \n"); buffer.append(" <includes id=\"org.foo\" version=\"1.0.0\" filter=\"(osgi.os=win32)\"/> \n"); buffer.append(" <plugin id=\"org.plug\" version=\"1.0.0\" filter=\"(my.prop=foo)\" os=\"win32\" /> \n"); @@ -197,7 +206,7 @@ public class FeaturesActionTest extends ActionTest { writeBuffer(featureXML, buffer); publisherInfo = new PublisherInfo(); - FeaturesAction action = new FeaturesAction(new File[] {testFolder}); + FeaturesAction action = new FeaturesAction(new File[] { testFolder }); action.perform(publisherInfo, publisherResult, new NullProgressMonitor()); IInstallableUnit iu = publisherResult.getIU("test.feature.feature.group", Version.parseVersion("1.0.0"), null); @@ -207,7 +216,8 @@ public class FeaturesActionTest extends ActionTest { if (((IRequiredCapability) require).getName().equals("org.foo.feature.group")) { assertEquals(ExpressionUtil.parseLDAP("(osgi.os=win32)"), require.getFilter().getParameters()[0]); } else if (((IRequiredCapability) require).getName().equals("org.plug")) { - assertEquals(ExpressionUtil.parseLDAP("(&(my.prop=foo)(osgi.os=win32))"), require.getFilter().getParameters()[0]); + assertEquals(ExpressionUtil.parseLDAP("(&(my.prop=foo)(osgi.os=win32))"), + require.getFilter().getParameters()[0]); } else if (((IRequiredCapability) require).getName().equals("org.plug2")) { assertEquals(ExpressionUtil.parseLDAP("(my.prop=foo)"), require.getFilter().getParameters()[0]); } else if (((IRequiredCapability) require).getName().equals("org.foo2.feature.group")) { @@ -222,151 +232,173 @@ public class FeaturesActionTest extends ActionTest { } private void verifyMetadata() { - //{foo.feature.jar=[foo.feature.jar 1.0.0], bar.feature.jar=[bar.feature.jar 1.1.1], foo.feature.group=[foo.feature.group 1.0.0], bar.feature.group=[bar.feature.group 1.1.1]} - ArrayList<IInstallableUnit> fooIUs = new ArrayList<>(publisherResult.getIUs("foo.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$ - assertTrue(fooIUs.size() == 1); + // {foo.feature.jar=[foo.feature.jar 1.0.0], bar.feature.jar=[bar.feature.jar + // 1.1.1], foo.feature.group=[foo.feature.group 1.0.0], + // bar.feature.group=[bar.feature.group 1.1.1]} + ArrayList<IInstallableUnit> fooIUs = new ArrayList<>( + publisherResult.getIUs("foo.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$ + assertEquals(1, fooIUs.size()); IInstallableUnit foo = fooIUs.get(0); assertTrue(foo.getId().equalsIgnoreCase("foo.feature.jar")); //$NON-NLS-1$ - assertTrue(foo.getVersion().equals(fooVersion)); + assertEquals(fooVersion, foo.getVersion()); assertEquals("Foo Feature", foo.getProperty(IInstallableUnit.PROP_NAME)); assertEquals("Foo Description", foo.getProperty(IInstallableUnit.PROP_DESCRIPTION)); assertEquals("Foo License", foo.getLicenses().iterator().next().getBody()); assertEquals("Foo Copyright", foo.getCopyright().getBody()); - assertTrue(foo.getProperty("key1").equals("value1")); //$NON-NLS-1$ //$NON-NLS-2$ - assertTrue(foo.getProperty("key2").equals("value2")); //$NON-NLS-1$//$NON-NLS-2$ - assertTrue(foo.getArtifacts().iterator().next().equals(FOO_KEY)); - assertEquals(foo.getFilter().getParameters()[0], ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$ + assertEquals("value1", foo.getProperty("key1")); //$NON-NLS-1$ //$NON-NLS-2$ + assertEquals("value2", foo.getProperty("key2")); //$NON-NLS-1$//$NON-NLS-2$ + assertEquals(FOO_KEY, foo.getArtifacts().iterator().next()); + assertEquals(foo.getFilter().getParameters()[0], + ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$ - //check touchpointType + // check touchpointType assertTrue(foo.getTouchpointType().getId().equalsIgnoreCase("org.eclipse.equinox.p2.osgi")); //$NON-NLS-1$ - assertTrue(foo.getTouchpointType().getVersion().equals(fooVersion)); + assertEquals(fooVersion, foo.getTouchpointType().getVersion()); - //zipped=true + // zipped=true Collection<ITouchpointData> tpData = foo.getTouchpointData(); String fooValue = tpData.iterator().next().getInstructions().get("zipped").getBody(); //$NON-NLS-1$ assertTrue(fooValue.equalsIgnoreCase("true")); //$NON-NLS-1$ Collection<IRequirement> fooRequiredCapabilities = foo.getRequirements(); - assertTrue(fooRequiredCapabilities.size() == 0); + assertTrue(fooRequiredCapabilities.isEmpty()); Collection<IProvidedCapability> fooProvidedCapabilities = foo.getProvidedCapabilities(); - verifyProvidedCapability(fooProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "foo.feature.jar", fooVersion); //$NON-NLS-1$ - verifyProvidedCapability(fooProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$ + verifyProvidedCapability(fooProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "foo.feature.jar", //$NON-NLS-1$ + fooVersion); + verifyProvidedCapability(fooProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", //$NON-NLS-1$ + fooVersion); verifyProvidedCapability(fooProvidedCapabilities, "org.eclipse.update.feature", FOO, fooVersion); //$NON-NLS-1$ - assertTrue(fooProvidedCapabilities.size() == 3); + assertEquals(3, fooProvidedCapabilities.size()); - //feature group IU for foo + // feature group IU for foo fooIUs = new ArrayList<>(publisherResult.getIUs("foo.feature.group", IPublisherResult.ROOT)); //$NON-NLS-1$ - assertTrue(fooIUs.size() == 1); + assertEquals(1, fooIUs.size()); IInstallableUnit fooGroup = fooIUs.get(0); - tpData = fooGroup.getTouchpointData(); - assertEquals(1, tpData.size()); - ITouchpointInstruction instruction = tpData.iterator().next().getInstruction("install"); + ITouchpointAdvice tData = capture.getValue(); + ITouchpointInstruction instruction = tData.getTouchpointData(NO_TP_DATA).getInstruction("install"); assertNotNull(instruction); - assertEquals("ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);", instruction.getBody()); + assertEquals( + "ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);", + instruction.getBody()); assertNull(fooGroup.getFilter()); - /*verify bar*/ - ArrayList<IInstallableUnit> barIUs = new ArrayList<>(publisherResult.getIUs("bar.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$ - assertTrue(barIUs.size() == 1); + /* verify bar */ + ArrayList<IInstallableUnit> barIUs = new ArrayList<>( + publisherResult.getIUs("bar.feature.jar", IPublisherResult.NON_ROOT)); //$NON-NLS-1$ + assertEquals(1, barIUs.size()); IInstallableUnit bar = barIUs.get(0); - assertTrue(bar.getId().equals("bar.feature.jar")); //$NON-NLS-1$ - assertTrue(bar.getVersion().equals(barVersion)); - assertTrue(bar.getProperty("key1").equals("value1")); //$NON-NLS-1$//$NON-NLS-2$ - assertTrue(bar.getProperty("key2").equals("value2")); //$NON-NLS-1$//$NON-NLS-2$ + assertEquals("bar.feature.jar", bar.getId()); //$NON-NLS-1$ + assertEquals(barVersion, bar.getVersion()); + assertEquals("value1", bar.getProperty("key1")); //$NON-NLS-1$//$NON-NLS-2$ + assertEquals("value2", bar.getProperty("key2")); //$NON-NLS-1$//$NON-NLS-2$ assertTrue(bar.getProperties().containsKey("org.eclipse.update.installHandler")); //$NON-NLS-1$ assertTrue(bar.getProperties().containsValue("handler=bar handler")); //$NON-NLS-1$ - assertTrue(bar.getArtifacts().iterator().next().equals(BAR_KEY)); - assertEquals(bar.getFilter().getParameters()[0], ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$ + assertEquals(BAR_KEY, bar.getArtifacts().iterator().next()); + assertEquals(bar.getFilter().getParameters()[0], + ExpressionUtil.parseLDAP("(org.eclipse.update.install.features=true)")); //$NON-NLS-1$ assertTrue(bar.isSingleton()); barIUs = new ArrayList<>(publisherResult.getIUs("bar.feature.group", IPublisherResult.ROOT)); //$NON-NLS-1$ - assertTrue(fooIUs.size() == 1); + assertEquals(1, fooIUs.size()); IInstallableUnit barGroup = barIUs.get(0); Collection<IRequirement> barRequiredCapabilities = barGroup.getRequirements(); - //contains(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar_root", new VersionRange(barVersion, true, barVersion, true), null, false /*multiple*/, false /*optional*/); //$NON-NLS-1$//$NON-NLS-2$ - verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", new VersionRange(barVersion, true, barVersion, true), "(org.eclipse.update.install.features=true)", 1, 1, true); //$NON-NLS-1$//$NON-NLS-2$ - verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "org.bar.feature.feature.group", VersionRange.emptyRange, "(&(|(osgi.nl=de)(osgi.nl=en)(osgi.nl=fr)))", 1, 1, true); //$NON-NLS-1$//$NON-NLS-2$ - assertEquals(barGroup.getFilter().getParameters()[0], ExpressionUtil.parseLDAP("(&(|(osgi.os=macosx)(osgi.os=win32))(|(osgi.ws=carbon)(osgi.ws=win32))(|(osgi.arch=ppc)(osgi.arch=x86))(osgi.nl=en))")); - - //check zipped=true in touchpointData + // contains(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, + // "bar_root", new VersionRange(barVersion, true, barVersion, true), null, false + // /*multiple*/, false /*optional*/); //$NON-NLS-1$//$NON-NLS-2$ + verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", //$NON-NLS-1$ + new VersionRange(barVersion, true, barVersion, true), "(org.eclipse.update.install.features=true)", 1, //$NON-NLS-1$ + 1, true); + verifyRequirement(barRequiredCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "org.bar.feature.feature.group", //$NON-NLS-1$ + VersionRange.emptyRange, "(&(|(osgi.nl=de)(osgi.nl=en)(osgi.nl=fr)))", 1, 1, true); //$NON-NLS-1$ + assertEquals(barGroup.getFilter().getParameters()[0], ExpressionUtil.parseLDAP( + "(&(|(osgi.os=macosx)(osgi.os=win32))(|(osgi.ws=carbon)(osgi.ws=win32))(|(osgi.arch=ppc)(osgi.arch=x86))(osgi.nl=en))")); + + // check zipped=true in touchpointData String barValue = bar.getTouchpointData().iterator().next().getInstructions().get("zipped").getBody(); //$NON-NLS-1$ assertTrue(barValue.equalsIgnoreCase("true")); //$NON-NLS-1$ - //check touchpointType + // check touchpointType assertTrue(bar.getTouchpointType().getId().equalsIgnoreCase("org.eclipse.equinox.p2.osgi")); //$NON-NLS-1$ - assertTrue(bar.getTouchpointType().getVersion().equals(fooVersion)); - //String namespace, String name, VersionRange range, String filter, boolean optional, boolean multiple, boolean greedy) + assertEquals(fooVersion, bar.getTouchpointType().getVersion()); + // String namespace, String name, VersionRange range, String filter, boolean + // optional, boolean multiple, boolean greedy) barRequiredCapabilities = bar.getRequirements(); - assertTrue(barRequiredCapabilities.size() == 0); + assertTrue(barRequiredCapabilities.isEmpty()); Collection<IProvidedCapability> barProvidedCapabilities = bar.getProvidedCapabilities(); - verifyProvidedCapability(barProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", barVersion); //$NON-NLS-1$ - verifyProvidedCapability(barProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", fooVersion); //$NON-NLS-1$ + verifyProvidedCapability(barProvidedCapabilities, IInstallableUnit.NAMESPACE_IU_ID, "bar.feature.jar", //$NON-NLS-1$ + barVersion); + verifyProvidedCapability(barProvidedCapabilities, PublisherHelper.NAMESPACE_ECLIPSE_TYPE, "feature", //$NON-NLS-1$ + fooVersion); verifyProvidedCapability(barProvidedCapabilities, "org.eclipse.update.feature", BAR, barVersion); //$NON-NLS-1$ - assertTrue(barProvidedCapabilities.size() == 3); + assertEquals(3, barProvidedCapabilities.size()); } private void verifyArtifacts() throws IOException { ZipInputStream actualStream = artifactRepository.getZipInputStream(FOO_KEY); - Map<String, Object[]> expected = getFileMap(new HashMap<>(), new File[] {new File(root, FOO)}, new Path(new File(root, FOO).getAbsolutePath())); + Map<String, Object[]> expected = getFileMap(new HashMap<>(), new File[] { new File(root, FOO) }, + new Path(new File(root, FOO).getAbsolutePath())); TestData.assertContains(expected, actualStream, true); - expected = getFileMap(new HashMap<>(), new File[] {new File(root, BAR)}, new Path(new File(root, BAR).getAbsolutePath())); + expected = getFileMap(new HashMap<>(), new File[] { new File(root, BAR) }, + new Path(new File(root, BAR).getAbsolutePath())); actualStream = artifactRepository.getZipInputStream(BAR_KEY); TestData.assertContains(expected, actualStream, true); } @Override protected void insertPublisherInfoBehavior() { - //setup metadataRepository with barIU - metadataRepository = new TestMetadataRepository(getAgent(), new IInstallableUnit[] {mockIU(BAR, null)}); - - ArrayList<IPropertyAdvice> adviceCollection = fillAdvice(new ArrayList<>()); - expect(publisherInfo.getAdvice(null, false, "bar.feature.jar", barVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "bar", barVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "bar", barVersion, IFeatureRootAdvice.class)) - .andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ITouchpointAdvice.class)) - .andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ICapabilityAdvice.class)) - .andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, - IAdditionalInstallableUnitAdvice.class)).andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo.feature.jar", fooVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IUpdateDescriptorAdvice.class)) - .andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo", fooVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo", fooVersion, IFeatureRootAdvice.class)) - .andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IPropertyAdvice.class)).andReturn(adviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, ICapabilityAdvice.class)) - .andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, - IAdditionalInstallableUnitAdvice.class)).andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IUpdateDescriptorAdvice.class)) - .andReturn(Collections.emptyList()).anyTimes(); - expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes(); - expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes(); - expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepository).anyTimes(); - expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes(); - - //capture any touchpoint advice, and return the captured advice when the action asks for it - publisherInfo.addAdvice(and(isA(ITouchpointAdvice.class), capture(tpAdvice))); - EasyMock.expectLastCall().anyTimes(); - expect(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, ITouchpointAdvice.class)).andReturn(new CaptureList<>(tpAdvice)).anyTimes(); + // setup metadataRepository with barIU + metadataRepository = new TestMetadataRepository(getAgent(), new IInstallableUnit[] { mockIU(BAR, null) }); + + List<IPropertyAdvice> adviceCollection = fillAdvice(new ArrayList<>()); + when(publisherInfo.getAdvice(null, false, "bar.feature.jar", barVersion, IPropertyAdvice.class)) + .thenReturn(adviceCollection); + when(publisherInfo.getAdvice(null, false, "bar", barVersion, IPropertyAdvice.class)) + .thenReturn(adviceCollection); + when(publisherInfo.getAdvice(null, false, "bar", barVersion, IFeatureRootAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IPropertyAdvice.class)) + .thenReturn(adviceCollection); + when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ITouchpointAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, ICapabilityAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, + IAdditionalInstallableUnitAdvice.class)).thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "foo.feature.jar", fooVersion, IPropertyAdvice.class)) + .thenReturn(adviceCollection); + when(publisherInfo.getAdvice(null, false, "bar.feature.group", barVersion, IUpdateDescriptorAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "foo", fooVersion, IPropertyAdvice.class)) + .thenReturn(adviceCollection); + when(publisherInfo.getAdvice(null, false, "foo", fooVersion, IFeatureRootAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IPropertyAdvice.class)) + .thenReturn(adviceCollection); + when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, ICapabilityAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, + IAdditionalInstallableUnitAdvice.class)).thenReturn(Collections.emptyList()); + when(publisherInfo.getAdvice(null, false, "foo.feature.group", fooVersion, IUpdateDescriptorAdvice.class)) + .thenReturn(Collections.emptyList()); + when(publisherInfo.getArtifactOptions()) + .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH); + when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository); + when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepository); + when(publisherInfo.getContextMetadataRepository()).thenReturn(null); } - private ArrayList<IPropertyAdvice> fillAdvice(ArrayList<IPropertyAdvice> adviceCollection) { + private List<IPropertyAdvice> fillAdvice(ArrayList<IPropertyAdvice> adviceCollection) { Map<String, String> prop = new HashMap<>(); prop.put("key1", "value1"); //$NON-NLS-1$//$NON-NLS-2$ prop.put("key2", "value2"); //$NON-NLS-1$//$NON-NLS-2$ - IPropertyAdvice propertyAdvice = EasyMock.createMock(IPropertyAdvice.class); - expect(propertyAdvice.getInstallableUnitProperties((InstallableUnitDescription) EasyMock.anyObject())).andReturn(prop).anyTimes(); - expect(propertyAdvice.getArtifactProperties((IInstallableUnit) EasyMock.anyObject(), (IArtifactDescriptor) EasyMock.anyObject())).andReturn(null).anyTimes(); - EasyMock.replay(propertyAdvice); + IPropertyAdvice propertyAdvice = mock(IPropertyAdvice.class); + when(propertyAdvice.getInstallableUnitProperties(any(InstallableUnitDescription.class))).thenReturn(prop); + when(propertyAdvice.getArtifactProperties(any(IInstallableUnit.class), any(IArtifactDescriptor.class))) + .thenReturn(null); adviceCollection.add(propertyAdvice); return adviceCollection; } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java index d1d3a4a20..dc5719e14 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/JREActionTest.java @@ -16,7 +16,6 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.expect; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.statusWithMessageWhich; @@ -27,6 +26,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.greaterThan; +import static org.mockito.Mockito.when; import java.io.ByteArrayOutputStream; import java.io.File; @@ -276,7 +276,7 @@ public class JREActionTest extends ActionTest { @Override protected void insertPublisherInfoBehavior() { - expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes(); - expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_PUBLISH).anyTimes(); + when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository); + when(publisherInfo.getArtifactOptions()).thenReturn(IPublisherInfo.A_PUBLISH); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java index 706760c4e..53d5f03b8 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/LocalUpdateSiteActionTest.java @@ -14,9 +14,11 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.anyBoolean; -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.expect; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; import java.io.File; import java.util.Collection; @@ -29,7 +31,6 @@ import org.eclipse.equinox.p2.metadata.IInstallableUnit; import org.eclipse.equinox.p2.metadata.ITouchpointData; import org.eclipse.equinox.p2.metadata.ITouchpointInstruction; import org.eclipse.equinox.p2.metadata.Version; -import org.eclipse.equinox.p2.publisher.IPublisherAdvice; import org.eclipse.equinox.p2.publisher.IPublisherInfo; import org.eclipse.equinox.p2.tests.TestData; import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository; @@ -48,10 +49,11 @@ public class LocalUpdateSiteActionTest extends ActionTest { @Override protected void insertPublisherInfoBehavior() { super.insertPublisherInfoBehavior(); - expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes(); - expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes(); - expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), - (Class<IPublisherAdvice>) anyObject())).andReturn(Collections.emptyList()).anyTimes(); + when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository); + when(publisherInfo.getArtifactOptions()) + .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH); + when(publisherInfo.getAdvice(anyString(), anyBoolean(), anyString(), any(Version.class), any(Class.class))) + .thenReturn(Collections.emptyList()); } /** diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java index eb9a2d1b8..898c5f0fb 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionCapturingTest.java @@ -16,65 +16,35 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.anyBoolean; -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.verify; import java.io.File; -import java.util.Collections; -import org.easymock.Capture; -import org.easymock.EasyMock; +import java.util.stream.Collectors; import org.eclipse.core.runtime.IStatus; import org.eclipse.equinox.frameworkadmin.BundleInfo; import org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile; -import org.eclipse.equinox.p2.metadata.Version; import org.eclipse.equinox.p2.publisher.IPublisherAdvice; -import org.eclipse.equinox.p2.publisher.IPublisherInfo; -import org.eclipse.equinox.p2.publisher.actions.RootIUAdvice; import org.eclipse.equinox.p2.publisher.eclipse.IConfigAdvice; import org.eclipse.equinox.p2.publisher.eclipse.IExecutableAdvice; import org.eclipse.equinox.p2.publisher.eclipse.ProductAction; import org.eclipse.equinox.p2.publisher.eclipse.ProductFileAdvice; import org.eclipse.equinox.p2.tests.TestData; import org.eclipse.equinox.p2.tests.publisher.TestArtifactRepository; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; public class ProductActionCapturingTest extends ActionTest { File executablesFeatureLocation = null; String source = ""; - private Capture<RootIUAdvice> rootIUAdviceCapture; - private Capture<ProductFileAdvice> productFileAdviceCapture; protected TestArtifactRepository artifactRepository = new TestArtifactRepository(getAgent()); @Override - protected IPublisherInfo createPublisherInfoMock() { - //override to create a nice mock, because we don't care about other method calls. - return createNiceMock(IPublisherInfo.class); - } - - @Override - protected void insertPublisherInfoBehavior() { - // capture these calls for assertions - publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(RootIUAdvice.class), EasyMock.capture(rootIUAdviceCapture))); - publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(ProductFileAdvice.class), EasyMock.capture(productFileAdviceCapture))); - - expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes(); - expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_PUBLISH).anyTimes(); - //Return an empty list every time getAdvice is called - expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), (Class<IPublisherAdvice>) anyObject())).andReturn(Collections.emptyList()); - expectLastCall().anyTimes(); - } - - @Override public void setUp() throws Exception { - rootIUAdviceCapture = Capture.newInstance(); - productFileAdviceCapture = Capture.newInstance(); setupPublisherInfo(); setupPublisherResult(); } @@ -84,15 +54,18 @@ public class ProductActionCapturingTest extends ActionTest { * IConfigAdvice (start levels, auto-start). */ public void testSetBundleConfigData() throws Exception { + ArgumentCaptor<IPublisherAdvice> productFileAdviceCapture = ArgumentCaptor.forClass(IPublisherAdvice.class); addContextIU("org.eclipse.rcp.feature.group", "3.5.0.v20081110-9C9tEvNEla71LZ2jFz-RFB-t"); ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "startLevel.product").toString()); - testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation); + testAction = Mockito.spy(new ProductAction(source, productFile, flavorArg, executablesFeatureLocation)); IStatus status = testAction.perform(publisherInfo, publisherResult, null); + verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(productFileAdviceCapture.capture()); assertThat(status, is(okStatus())); - IConfigAdvice configAdvice = productFileAdviceCapture.getValue(); + IConfigAdvice configAdvice = (IConfigAdvice) productFileAdviceCapture.getAllValues().stream() + .filter(IConfigAdvice.class::isInstance).collect(Collectors.toList()).get(0); BundleInfo[] bundles = configAdvice.getBundles(); assertEquals("1.0", 2, bundles.length); assertEquals("1.1", "org.eclipse.equinox.common", bundles[0].getSymbolicName()); @@ -110,14 +83,17 @@ public class ProductActionCapturingTest extends ActionTest { * Tests that correct advice is created for the org.eclipse.platform product. */ public void testPlatformProduct() throws Exception { + ArgumentCaptor<IPublisherAdvice> productFileAdviceCapture = ArgumentCaptor.forClass(IPublisherAdvice.class); ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "platform.product").toString()); addContextIU("org.eclipse.platform.feature.group", "1.2.3"); - testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation); + testAction = Mockito.spy(new ProductAction(source, productFile, flavorArg, executablesFeatureLocation)); IStatus status = testAction.perform(publisherInfo, publisherResult, null); + verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(productFileAdviceCapture.capture()); assertThat(status, is(okStatus())); - IExecutableAdvice launchAdvice = productFileAdviceCapture.getValue(); + IExecutableAdvice launchAdvice = (IExecutableAdvice) productFileAdviceCapture.getAllValues().stream() + .filter(ProductFileAdvice.class::isInstance).collect(Collectors.toList()).get(0); assertEquals("1.0", "eclipse", launchAdvice.getExecutableName()); String[] programArgs = launchAdvice.getProgramArguments(); 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 3405c53e5..994cfafcd 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 @@ -16,7 +16,6 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.createNiceMock; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.errorStatus; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.statusWithMessageWhich; @@ -71,21 +70,18 @@ public class ProductActionTest extends ActionTest { String source = ""; protected TestArtifactRepository artifactRepository = new TestArtifactRepository(getAgent()); - @Override protected IPublisherInfo createPublisherInfoMock() { - //override to create a nice mock, because we don't care about other method calls. - return createNiceMock(IPublisherInfo.class); - } - - @Override public void setUp() throws Exception { + @Override + public void setUp() throws Exception { setupPublisherInfo(); setupPublisherResult(); } - @Override public void setupPublisherInfo() { + @Override + public void setupPublisherInfo() { PublisherInfo publisherInfoImpl = new PublisherInfo(); publisherInfoImpl.setArtifactRepository(artifactRepository); publisherInfoImpl.setArtifactOptions(IPublisherInfo.A_PUBLISH); - publisherInfoImpl.setConfigurations(new String[] {configSpec}); + publisherInfoImpl.setConfigurations(new String[] { configSpec }); publisherInfo = publisherInfoImpl; } @@ -95,18 +91,20 @@ public class ProductActionTest extends ActionTest { * splash screen, icon, etc. */ public void testBrandedApplication() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString()); addContextIU("org.eclipse.platform.feature.group", "1.2.3"); performProductAction(productFile); Collection<IInstallableUnit> ius = publisherResult.getIUs("branded.product", IPublisherResult.NON_ROOT); assertEquals("1.0", 1, ius.size()); - //TODO assert branding was done correctly + // TODO assert branding was done correctly } public void testLicense() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productWithLicense.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "productWithLicense.product").toString()); performProductAction(productFile); Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT); assertEquals("1.0", 1, ius.size()); @@ -116,7 +114,8 @@ public class ProductActionTest extends ActionTest { } public void testLicenseNoURL() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "licenseNoURL.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "licenseNoURL.product").toString()); performProductAction(productFile); Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT); assertEquals("1.0", 1, ius.size()); @@ -126,7 +125,8 @@ public class ProductActionTest extends ActionTest { } public void testLicenseNoText() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "licenseNoText.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "licenseNoText.product").toString()); performProductAction(productFile); Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT); assertEquals("1.0", 1, ius.size()); @@ -136,7 +136,8 @@ public class ProductActionTest extends ActionTest { } public void testMissingLicense() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productWithNoLicense.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "productWithNoLicense.product").toString()); performProductAction(productFile); Collection<IInstallableUnit> ius = publisherResult.getIUs("licenseIU.product", IPublisherResult.NON_ROOT); assertEquals("1.0", 1, ius.size()); @@ -145,8 +146,10 @@ public class ProductActionTest extends ActionTest { } public void testMultiProductPublishing() throws Exception { - ProductFile productFile1 = new ProductFile(TestData.getFile("ProductActionTest", "boundedVersionConfigurations.product").toString()); - ProductFile productFile2 = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + ProductFile productFile1 = new ProductFile( + TestData.getFile("ProductActionTest", "boundedVersionConfigurations.product").toString()); + ProductFile productFile2 = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); addContextIU("org.eclipse.core.runtime", "4.0.0"); performProductAction(productFile1); @@ -158,7 +161,8 @@ public class ProductActionTest extends ActionTest { } public void testMultiPlatformCUs_DifferentPlatforms() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); setConfiguration(LINUX_CONFIG_SPEC); addContextIU("org.eclipse.core.runtime", "0.0.0", WIN_FILTER); @@ -169,7 +173,8 @@ public class ProductActionTest extends ActionTest { } public void testMultiPlatformCUs_SamePlatforms() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); setConfiguration(LINUX_CONFIG_SPEC); addContextIU("org.eclipse.core.runtime", "0.0.0", LINUX_FILTER); @@ -180,7 +185,8 @@ public class ProductActionTest extends ActionTest { } public void testMultiPlatformCUs_SamePlatforms_NoVersion() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); setConfiguration(LINUX_CONFIG_SPEC); addContextIU("org.eclipse.core.runtime", null, LINUX_FILTER); @@ -191,11 +197,13 @@ public class ProductActionTest extends ActionTest { } public void testMultiPlatformCUs_SamePlatforms_BoundedVersions() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); setConfiguration(LINUX_CONFIG_SPEC); - // Set a specific version number, the one in the .product file uses 0.0.0. Let's see if it binds properly - //filter is different from linuxConfigSpec, but will still match + // Set a specific version number, the one in the .product file uses 0.0.0. Let's + // see if it binds properly + // filter is different from linuxConfigSpec, but will still match addContextIU("org.eclipse.core.runtime", "4.0.0", "(osgi.os=linux)"); performProductAction(productFile); @@ -205,36 +213,45 @@ public class ProductActionTest extends ActionTest { } public void testCUsHost() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); setConfiguration(LINUX_CONFIG_SPEC); - // Set a specific version number, the one in the .product file uses 0.0.0. Let's see if it binds properly - //filter is different from linuxConfigSpec, but will still match + // Set a specific version number, the one in the .product file uses 0.0.0. Let's + // see if it binds properly + // filter is different from linuxConfigSpec, but will still match addContextIU("org.eclipse.core.runtime", "4.0.0", "(osgi.os=linux)"); performProductAction(productFile); - IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU(flavorArg + LINUX_CONFIG_SPEC + "org.eclipse.core.runtime"); - assertEquals("1.1", "org.eclipse.core.runtime", RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches())); - assertEquals("1.2", Version.create("4.0.0"), RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum()); + IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU( + flavorArg + LINUX_CONFIG_SPEC + "org.eclipse.core.runtime"); + assertEquals("1.1", "org.eclipse.core.runtime", + RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches())); + assertEquals("1.2", Version.create("4.0.0"), + RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum()); assertEquals("1.3", Version.create("1.0.0"), fragment.getVersion()); } public void testMultiConfigspecProductPublishing() throws IOException, Exception { ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "platform.product").toString()); - ((PublisherInfo) publisherInfo).setConfigurations(new String[] {"carbon.macos.x86", "cocoa.macos.x86"}); + ((PublisherInfo) publisherInfo).setConfigurations(new String[] { "carbon.macos.x86", "cocoa.macos.x86" }); addContextIU("org.eclipse.platform.feature.group", "1.2.3"); performProductAction(productFile); - Collection<IConfigAdvice> advice = publisherInfo.getAdvice("carbon.macos.x86", false, null, null, IConfigAdvice.class); + Collection<IConfigAdvice> advice = publisherInfo.getAdvice("carbon.macos.x86", false, null, null, + IConfigAdvice.class); assertEquals("1.0", 1, advice.size()); } public void testANYConfigSpecPublishing_GeneralBundle() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); - String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to create CUs without filters + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to + // create CUs without + // filters setConfiguration(configSpecANY); addContextIU("org.eclipse.core.runtime", "4.0.0"); @@ -242,16 +259,22 @@ public class ProductActionTest extends ActionTest { performProductAction(productFile); // there is a CU for the IU because it applies to all platforms - IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU(flavorArg + configSpecANY + "org.eclipse.core.runtime"); - assertEquals("1.1", "org.eclipse.core.runtime", RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches())); - assertEquals("1.2", Version.create("4.0.0"), RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum()); + IInstallableUnitFragment fragment = (IInstallableUnitFragment) getUniquePublishedIU( + flavorArg + configSpecANY + "org.eclipse.core.runtime"); + assertEquals("1.1", "org.eclipse.core.runtime", + RequiredCapability.extractName(fragment.getHost().iterator().next().getMatches())); + assertEquals("1.2", Version.create("4.0.0"), + RequiredCapability.extractRange(fragment.getHost().iterator().next().getMatches()).getMinimum()); assertEquals("1.3", Version.create("1.0.0"), fragment.getVersion()); assertNull("1.3", fragment.getFilter()); } public void testANYConfigSpecPublishing_PlatformSpecificBundle() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); - String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to create CUs without filters + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "unboundedVersionConfigurations.product").toString()); + String configSpecANY = AbstractPublisherAction.createConfigSpec("ANY", "ANY", "ANY"); // configuration spec to + // create CUs without + // filters setConfiguration(configSpecANY); addContextIU("org.eclipse.core.runtime", "4.0.0", WIN_FILTER); // any valid filter can be set here @@ -276,13 +299,15 @@ public class ProductActionTest extends ActionTest { testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation); PublisherInfo info = new PublisherInfo(); info.setContextMetadataRepository(repository); - // TODO this line doesn't have any effect -> is this a bug in the implementation? + // TODO this line doesn't have any effect -> is this a bug in the + // implementation? info.addAdvice(new QueryableFilterAdvice(info.getContextMetadataRepository())); IStatus status = testAction.perform(info, publisherResult, null); assertThat(status, is(okStatus())); - IQueryResult<IInstallableUnit> results = publisherResult.query(QueryUtil.createIUQuery("org.eclipse.platform.ide", Version.create("3.5.0.I20081118")), null); + IQueryResult<IInstallableUnit> results = publisherResult + .query(QueryUtil.createIUQuery("org.eclipse.platform.ide", Version.create("3.5.0.I20081118")), null); assertEquals("1.0", 1, queryResultSize(results)); IInstallableUnit unit = results.iterator().next(); Collection<IRequirement> requiredCapabilities = unit.getRequirements(); @@ -296,12 +321,14 @@ public class ProductActionTest extends ActionTest { } } assertTrue("1.1", capability != null); - assertEquals("1.2", InstallableUnit.parseFilter("(org.eclipse.update.install.features=true)"), capability.getFilter()); + assertEquals("1.2", InstallableUnit.parseFilter("(org.eclipse.update.install.features=true)"), + capability.getFilter()); } public void testProductWithAdviceFile() throws Exception { // product file that has a corresponding advice file (p2.inf). - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest/productWithAdvice", "productWithAdvice.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest/productWithAdvice", "productWithAdvice.product").toString()); testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation); IStatus status = testAction.perform(new PublisherInfo(), publisherResult, null); assertThat(status, is(okStatus())); @@ -310,27 +337,30 @@ public class ProductActionTest extends ActionTest { Collection<ITouchpointData> data = product.getTouchpointData(); assertEquals("1.1", 1, data.size()); String configure = data.iterator().next().getInstruction("configure").getBody(); - assertEquals("1.2", "addRepository(type:0,location:http${#58}//download.eclipse.org/releases/fred);addRepository(type:1,location:http${#58}//download.eclipse.org/releases/fred);", configure); - - //update.id = com.zoobar - //update.range = [4.0,4.3) - //update.severity = 0 - //update.description = This is the description + assertEquals("1.2", + "addRepository(type:0,location:http${#58}//download.eclipse.org/releases/fred);addRepository(type:1,location:http${#58}//download.eclipse.org/releases/fred);", + configure); + + // update.id = com.zoobar + // update.range = [4.0,4.3) + // update.severity = 0 + // update.description = This is the description IUpdateDescriptor update = product.getUpdateDescriptor(); assertEquals("2.0", 0, update.getSeverity()); assertEquals("2.1", "This is the description", update.getDescription()); - //unit that fits in range + // unit that fits in range assertTrue("2.2", update.isUpdateOf(createIU("com.zoobar", Version.createOSGi(4, 1, 0)))); - //unit that is too old for range + // unit that is too old for range assertFalse("2.3", update.isUpdateOf(createIU("com.zoobar", Version.createOSGi(3, 1, 0)))); - //version that is too new and outside of range + // version that is too new and outside of range assertFalse("2.4", update.isUpdateOf(createIU("com.zoobar", Version.createOSGi(6, 1, 0)))); - //unit with matching version but not matching id + // unit with matching version but not matching id assertFalse("2.6", update.isUpdateOf(createIU("com.other", Version.createOSGi(4, 1, 0)))); } public void testFiltersOfInclusions() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productIncludingFragments.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "productIncludingFragments.product").toString()); addContextIU("generalbundle", "1.0.1"); addContextIU("fragment.win", "1.0.2", WIN_FILTER); // no fragment.linux in the context @@ -338,39 +368,48 @@ public class ProductActionTest extends ActionTest { IStatus status = performProductActionAndReturnStatus(productFile); IInstallableUnit productIU = getUniquePublishedIU("productIncludingFragments.uid"); - assertThat(productIU.getRequirements(), hasItem(createIURequirement("generalbundle", createStrictVersionRange("1.0.1")))); - assertThat(productIU.getRequirements(), hasItem(createIURequirement("fragment.win", createStrictVersionRange("1.0.2"), WIN_FILTER))); + assertThat(productIU.getRequirements(), + hasItem(createIURequirement("generalbundle", createStrictVersionRange("1.0.1")))); + assertThat(productIU.getRequirements(), + hasItem(createIURequirement("fragment.win", createStrictVersionRange("1.0.2"), WIN_FILTER))); - // this is bug 390361: the Linux fragment is required without filter, so the product cannot be installed for Windows ... + // this is bug 390361: the Linux fragment is required without filter, so the + // product cannot be installed for Windows ... assertThat(productIU.getRequirements(), hasItem(createIURequirement("fragment.linux", ANY_VERSION))); // ... therefore the action shall report an error assertThat(status, is(errorStatus())); - assertThat(Arrays.asList(status.getChildren()), hasItem(statusWithMessageWhich(containsString("Included element fragment.linux 0.0.0 is missing")))); + assertThat(Arrays.asList(status.getChildren()), + hasItem(statusWithMessageWhich(containsString("Included element fragment.linux 0.0.0 is missing")))); } public void testMessageForProductWithIgnoredContent() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "mixedContentIgnored.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "mixedContentIgnored.product").toString()); IStatus status = performProductActionAndReturnStatus(productFile); - // expect a warning about redundant, ignored content in product file -> requested in bug 325611 + // expect a warning about redundant, ignored content in product file -> + // requested in bug 325611 assertThat(Arrays.asList(status.getChildren()), hasItem(statusWithMessageWhich(containsString("are ignored")))); // TODO the message should have a code identifying it } public void testJREIncluded() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "brandedProduct/branded.product").toString()); addContextIU("org.eclipse.platform.feature.group", "1.2.3"); performProductAction(productFile); Collection<IInstallableUnit> ius = publisherResult.getIUs("branded.product", IPublisherResult.NON_ROOT); assertEquals(1, ius.size()); assertEquals("Missing a.jre.javase", 1, publisherResult.getIUs("a.jre.javase", IPublisherResult.ROOT).size()); - assertEquals("Missing config.a.jre.javase", 1, publisherResult.getIUs("config.a.jre.javase", IPublisherResult.ROOT).size()); + assertEquals("Missing config.a.jre.javase", 1, + publisherResult.getIUs("config.a.jre.javase", IPublisherResult.ROOT).size()); } public void testRequiredEEAsSpecified() throws Exception { - ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "productFileActionTest.product").toString()); + ProductFile productFile = new ProductFile( + TestData.getFile("ProductActionTest", "productFileActionTest.product").toString()); addContextIU("org.eclipse.core.commands", "5.0.0"); performProductAction(productFile); @@ -407,7 +446,7 @@ public class ProductActionTest extends ActionTest { } private void setConfiguration(String configSpec) { - ((PublisherInfo) publisherInfo).setConfigurations(new String[] {configSpec}); + ((PublisherInfo) publisherInfo).setConfigurations(new String[] { configSpec }); } } diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java index a14b660b5..7673a092c 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductActionTestMac.java @@ -13,30 +13,23 @@ *******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.anyBoolean; -import static org.easymock.EasyMock.anyObject; -import static org.easymock.EasyMock.createNiceMock; -import static org.easymock.EasyMock.expect; -import static org.easymock.EasyMock.expectLastCall; import static org.eclipse.equinox.p2.tests.publisher.actions.StatusMatchers.okStatus; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.MatcherAssert.assertThat; +import static org.mockito.Mockito.verify; import java.io.File; -import java.util.Collections; -import org.easymock.Capture; -import org.easymock.EasyMock; +import java.util.stream.Collectors; import org.eclipse.core.runtime.IStatus; import org.eclipse.equinox.internal.p2.publisher.eclipse.ProductFile; -import org.eclipse.equinox.p2.metadata.Version; import org.eclipse.equinox.p2.publisher.AbstractPublisherAction; import org.eclipse.equinox.p2.publisher.IPublisherAdvice; -import org.eclipse.equinox.p2.publisher.IPublisherInfo; -import org.eclipse.equinox.p2.publisher.actions.RootIUAdvice; import org.eclipse.equinox.p2.publisher.eclipse.IExecutableAdvice; import org.eclipse.equinox.p2.publisher.eclipse.ProductAction; import org.eclipse.equinox.p2.publisher.eclipse.ProductFileAdvice; import org.eclipse.equinox.p2.tests.TestData; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; /** * Tests for {@link ProductAction} specific to Mac. @@ -44,30 +37,11 @@ import org.eclipse.equinox.p2.tests.TestData; public class ProductActionTestMac extends ActionTest { private File executablesFeatureLocation = null; - private Capture<RootIUAdvice> rootIUAdviceCapture; - private Capture<ProductFileAdvice> productFileAdviceCapture; private String source = ""; @Override - protected IPublisherInfo createPublisherInfoMock() { - //override to create a nice mock, because we don't care about other method calls. - return createNiceMock(IPublisherInfo.class); - } - - @Override - protected void insertPublisherInfoBehavior() { - publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(RootIUAdvice.class), EasyMock.capture(rootIUAdviceCapture))); - publisherInfo.addAdvice(EasyMock.and(EasyMock.isA(ProductFileAdvice.class), EasyMock.capture(productFileAdviceCapture))); - //Return an empty list every time getAdvice is called - expect(publisherInfo.getAdvice((String) anyObject(), anyBoolean(), (String) anyObject(), (Version) anyObject(), (Class<IPublisherAdvice>) anyObject())).andReturn(Collections.emptyList()); - expectLastCall().anyTimes(); - } - - @Override public void setUp() throws Exception { configSpec = AbstractPublisherAction.createConfigSpec("carbon", "macosx", "x86"); - rootIUAdviceCapture = Capture.newInstance(); - productFileAdviceCapture = Capture.newInstance(); setupPublisherInfo(); setupPublisherResult(); } @@ -76,13 +50,16 @@ public class ProductActionTestMac extends ActionTest { * Tests that correct advice is created for the org.eclipse.platform product. */ public void testPlatformProduct() throws Exception { + ArgumentCaptor<IPublisherAdvice> productFileAdviceCapture = ArgumentCaptor.forClass(IPublisherAdvice.class); ProductFile productFile = new ProductFile(TestData.getFile("ProductActionTest", "platform.product").toString()); addContextIU("org.eclipse.platform.feature.group", "3.8.3"); - testAction = new ProductAction(source, productFile, flavorArg, executablesFeatureLocation); + testAction = Mockito.spy(new ProductAction(source, productFile, flavorArg, executablesFeatureLocation)); IStatus status = testAction.perform(publisherInfo, publisherResult, null); + verify(publisherInfo, Mockito.atLeastOnce()).addAdvice(productFileAdviceCapture.capture()); assertThat(status, is(okStatus())); - IExecutableAdvice launchAdvice = productFileAdviceCapture.getValue(); + IExecutableAdvice launchAdvice = (IExecutableAdvice) productFileAdviceCapture.getAllValues().stream() + .filter(ProductFileAdvice.class::isInstance).collect(Collectors.toList()).get(0); assertEquals("1.0", "eclipse", launchAdvice.getExecutableName()); String[] programArgs = launchAdvice.getProgramArguments(); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java index 3a93eb59a..91bc64d39 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/ProductFileAdviceTest.java @@ -208,7 +208,7 @@ public class ProductFileAdviceTest extends AbstractProvisioningTest { configProperties.put("osgi.bundles", "org.eclipse.equinox.simpleconfigurator@1:start"); writeProperties(new File(rootFolder, "config.ini"), configProperties); - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append("org.eclipse.equinox.common,3.5.100.v20090817,plugins/org.eclipse.equinox.common_3.5.100.v20090817.jar,2,true\n"); buffer.append("org.eclipse.equinox.simpleconfigurator,1.0.200.v20090729-1800,plugins/org.eclipse.equinox.simpleconfigurator_1.0.200.v20090729-1800.jar,1,true\n"); writeBuffer(new File(rootFolder, "org.eclipse.equinox.simpleconfigurator/bundles.info"), buffer); @@ -229,7 +229,7 @@ public class ProductFileAdviceTest extends AbstractProvisioningTest { File root = getTestFolder("configNullLauncher"); File testProduct = new File(root, "test.product"); - StringBuffer buffer = new StringBuffer(); + StringBuilder buffer = new StringBuilder(); buffer.append("<product id=\"test.product\" version=\"1\" useFeatures=\"false\"> \n"); buffer.append(" <configIni use=\"default\"> \n"); buffer.append(" <win32>config.ini</win32> \n"); diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java index 9fa2a5d65..030cd8b2a 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootFilesActionTest.java @@ -15,19 +15,30 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.expect; - -import java.io.*; -import java.util.*; +import static org.mockito.Mockito.when; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; import java.util.zip.ZipInputStream; -import org.eclipse.core.runtime.*; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; import org.eclipse.equinox.internal.p2.core.helpers.FileUtils; import org.eclipse.equinox.internal.p2.metadata.ArtifactKey; import org.eclipse.equinox.p2.metadata.IArtifactKey; import org.eclipse.equinox.p2.metadata.Version; import org.eclipse.equinox.p2.publisher.AbstractPublisherAction; import org.eclipse.equinox.p2.publisher.IPublisherInfo; -import org.eclipse.equinox.p2.publisher.actions.*; +import org.eclipse.equinox.p2.publisher.actions.IRootFilesAdvice; +import org.eclipse.equinox.p2.publisher.actions.ITouchpointAdvice; +import org.eclipse.equinox.p2.publisher.actions.RootFilesAction; +import org.eclipse.equinox.p2.publisher.actions.RootFilesAdvice; import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository; import org.eclipse.equinox.p2.tests.TestActivator; import org.eclipse.equinox.p2.tests.TestData; @@ -68,10 +79,13 @@ public class RootFilesActionTest extends ActionTest { @Override public void insertPublisherInfoBehavior() { - expect(publisherInfo.getArtifactRepository()).andReturn(artifactRepository).anyTimes(); - expect(publisherInfo.getArtifactOptions()).andReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH).anyTimes(); - expect(publisherInfo.getAdvice(configSpec, true, null, null, IRootFilesAdvice.class)).andReturn(adviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(configSpec, false, flavorArg + topArg, versionArg, ITouchpointAdvice.class)).andReturn(null).anyTimes(); + when(publisherInfo.getArtifactRepository()).thenReturn(artifactRepository); + when(publisherInfo.getArtifactOptions()) + .thenReturn(IPublisherInfo.A_INDEX | IPublisherInfo.A_OVERWRITE | IPublisherInfo.A_PUBLISH); + when(publisherInfo.getAdvice(configSpec, true, null, null, IRootFilesAdvice.class)) + .thenReturn(adviceCollection); + when(publisherInfo.getAdvice(configSpec, false, flavorArg + topArg, versionArg, ITouchpointAdvice.class)) + .thenReturn(null); } private void setupTestCase(int testArg) throws Exception { diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java index 21b4dd4b2..637465c39 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/publisher/actions/RootIUActionTest.java @@ -15,7 +15,7 @@ ******************************************************************************/ package org.eclipse.equinox.p2.tests.publisher.actions; -import static org.easymock.EasyMock.expect; +import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Collection; @@ -358,16 +358,22 @@ public class RootIUActionTest extends ActionTest { @Override public void insertPublisherInfoBehavior() { - expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, ICapabilityAdvice.class)).andReturn(new ArrayList<>()).anyTimes(); - expect(publisherInfo.getAdvice(null, true, null, null, IRootIUAdvice.class)).andReturn(rootIUAdviceCollection).anyTimes(); - expect(publisherInfo.getAdvice(null, true, null, null, IVersionAdvice.class)).andReturn(null).anyTimes(); - expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, ITouchpointAdvice.class)).andReturn(new ArrayList<>()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, IUpdateDescriptorAdvice.class)).andReturn(new ArrayList<>()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, IPropertyAdvice.class)).andReturn(new ArrayList<>()).anyTimes(); - expect(publisherInfo.getAdvice(null, false, rootIU, versionArg, IAdditionalInstallableUnitAdvice.class)).andReturn(new ArrayList<>()).anyTimes(); - expect(publisherInfo.getAdvice(null, true, rootIU, versionArg, ILicenseAdvice.class)).andReturn(new ArrayList<>()).anyTimes(); - expect(publisherInfo.getMetadataRepository()).andReturn(metadataRepository).anyTimes(); - expect(publisherInfo.getContextMetadataRepository()).andReturn(null).anyTimes(); + when(publisherInfo.getAdvice(null, false, rootIU, versionArg, ICapabilityAdvice.class)) + .thenReturn(new ArrayList<>()); + when(publisherInfo.getAdvice(null, true, null, null, IRootIUAdvice.class)).thenReturn(rootIUAdviceCollection); + when(publisherInfo.getAdvice(null, true, null, null, IVersionAdvice.class)).thenReturn(null); + when(publisherInfo.getAdvice(null, false, rootIU, versionArg, ITouchpointAdvice.class)) + .thenReturn(new ArrayList<>()); + when(publisherInfo.getAdvice(null, false, rootIU, versionArg, IUpdateDescriptorAdvice.class)) + .thenReturn(new ArrayList<>()); + when(publisherInfo.getAdvice(null, false, rootIU, versionArg, IPropertyAdvice.class)) + .thenReturn(new ArrayList<>()); + when(publisherInfo.getAdvice(null, false, rootIU, versionArg, IAdditionalInstallableUnitAdvice.class)) + .thenReturn(new ArrayList<>()); + when(publisherInfo.getAdvice(null, true, rootIU, versionArg, ILicenseAdvice.class)) + .thenReturn(new ArrayList<>()); + when(publisherInfo.getMetadataRepository()).thenReturn(metadataRepository); + when(publisherInfo.getContextMetadataRepository()).thenReturn(null); } @Override diff --git a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java index de6ddd662..f01f88db3 100644 --- a/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java +++ b/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/touchpoint/eclipse/SetLauncherNameActionTest.java @@ -14,7 +14,9 @@ package org.eclipse.equinox.p2.tests.touchpoint.eclipse; import java.io.File; -import java.util.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import org.eclipse.equinox.frameworkadmin.BundleInfo; import org.eclipse.equinox.internal.p2.engine.InstallableUnitOperand; import org.eclipse.equinox.internal.p2.touchpoint.eclipse.EclipseTouchpoint; @@ -99,7 +101,7 @@ public class SetLauncherNameActionTest extends AbstractProvisioningTest { //profile will start using "eclipse" by default, give it some content and see if it //survives a name change. File eclipseIni = new File(tempFolder, "eclipse.ini"); - StringBuffer ini = new StringBuffer(); + StringBuilder ini = new StringBuilder(); ini.append("-startup\n"); ini.append("plugins/org.eclipse.equinox.launcher_1.2.4.v1234.jar\n"); writeBuffer(eclipseIni, ini); |