Skip to content

Commit 84cefb2

Browse files
committed
test
1 parent 4fe820b commit 84cefb2

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/BundleValidationOperation.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@
3131
import org.eclipse.osgi.util.NLS;
3232
import org.eclipse.pde.core.plugin.IPluginModelBase;
3333
import org.eclipse.pde.internal.build.BundleHelper;
34+
import org.osgi.framework.hooks.resolver.ResolverHook;
3435

3536
public class BundleValidationOperation implements IWorkspaceRunnable {
3637

3738
private static StateObjectFactory FACTORY;
3839

3940
private final Set<IPluginModelBase> fModels;
4041
private final Dictionary<String, String>[] fProperties;
42+
private ResolverHook fResolverHook;
4143
private State fState;
4244

4345
@SuppressWarnings("unchecked")
@@ -50,13 +52,20 @@ public BundleValidationOperation(Set<IPluginModelBase> models, Dictionary<String
5052
fProperties = properties;
5153
}
5254

55+
public void setResolverHook(ResolverHook resolverHook) {
56+
fResolverHook = resolverHook;
57+
}
58+
5359
@Override
5460
public void run(IProgressMonitor monitor) throws CoreException {
5561
if (FACTORY == null) {
5662
FACTORY = BundleHelper.getPlatformAdmin().getFactory();
5763
}
5864
SubMonitor subMonitor = SubMonitor.convert(monitor, fModels.size() + 1);
5965
fState = FACTORY.createState(true);
66+
if (fResolverHook != null) {
67+
fState.setResolverHookFactory(c -> fResolverHook);
68+
}
6069
long id = 1;
6170
for (IPluginModelBase fModel : fModels) {
6271
BundleDescription bundle = fModel.getBundleDescription();

ui/org.eclipse.pde.launching/src/org/eclipse/pde/internal/launching/launcher/LaunchValidationOperation.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,15 @@
3838
import org.eclipse.pde.core.plugin.PluginRegistry;
3939
import org.eclipse.pde.internal.core.BundleValidationOperation;
4040
import org.eclipse.pde.internal.core.TargetPlatformHelper;
41+
import org.osgi.framework.hooks.resolver.ResolverHook;
4142

4243
public class LaunchValidationOperation implements IWorkspaceRunnable {
4344

4445
private BundleValidationOperation fOperation;
4546
public final ILaunchConfiguration fLaunchConfiguration;
4647
public final String fLaunchMode;
4748
protected final Set<IPluginModelBase> fModels;
49+
private ResolverHook fResolverHook;
4850

4951
public LaunchValidationOperation(ILaunchConfiguration configuration, Set<IPluginModelBase> models) {
5052
this(configuration, models, null);
@@ -56,9 +58,16 @@ public LaunchValidationOperation(ILaunchConfiguration configuration, Set<IPlugin
5658
fLaunchMode = launchMode;
5759
}
5860

61+
public void setResolverHook(ResolverHook resolverHook) {
62+
fResolverHook = resolverHook;
63+
}
64+
5965
@Override
6066
public void run(IProgressMonitor monitor) throws CoreException {
6167
fOperation = new BundleValidationOperation(fModels, getPlatformProperties());
68+
if (fResolverHook != null) {
69+
fOperation.setResolverHook(fResolverHook);
70+
}
6271
fOperation.run(monitor);
6372
}
6473

ui/org.eclipse.pde.launching/src/org/eclipse/pde/launching/JUnitLaunchConfigurationDelegate.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@
2424
import java.nio.file.Path;
2525
import java.util.ArrayList;
2626
import java.util.Arrays;
27+
import java.util.Collection;
2728
import java.util.Collections;
2829
import java.util.Comparator;
30+
import java.util.Iterator;
2931
import java.util.LinkedHashMap;
3032
import java.util.List;
3133
import java.util.Map;
@@ -82,6 +84,11 @@
8284
import org.eclipse.pde.internal.launching.launcher.RequirementHelper;
8385
import org.eclipse.pde.internal.launching.launcher.VMHelper;
8486
import org.osgi.framework.Constants;
87+
import org.osgi.framework.Version;
88+
import org.osgi.framework.hooks.resolver.ResolverHook;
89+
import org.osgi.framework.wiring.BundleCapability;
90+
import org.osgi.framework.wiring.BundleRequirement;
91+
import org.osgi.framework.wiring.BundleRevision;
8592

8693
/**
8794
* A launch delegate for launching JUnit Plug-in tests.
@@ -609,8 +616,41 @@ protected void validateProjectDependencies(ILaunchConfiguration configuration, I
609616
* @param monitor
610617
* a progress monitor
611618
*/
619+
@SuppressWarnings("restriction")
612620
protected void validatePluginDependencies(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
613621
EclipsePluginValidationOperation op = new EclipsePluginValidationOperation(configuration, fModels.keySet(), launchMode);
622+
org.eclipse.jdt.internal.junit.launcher.ITestKind testKind = org.eclipse.jdt.internal.junit.launcher.JUnitLaunchConfigurationConstants.getTestRunnerKind(configuration);
623+
if (org.eclipse.jdt.internal.junit.launcher.TestKindRegistry.JUNIT5_TEST_KIND_ID.equals(testKind.getId())) {
624+
op.setResolverHook(new RemoveJunit6Hook());
625+
}
614626
LaunchPluginValidator.runValidationOperation(op, monitor);
615627
}
628+
629+
private static class RemoveJunit6Hook implements ResolverHook {
630+
631+
@Override
632+
public void filterMatches(BundleRequirement requirement, Collection<BundleCapability> candidates) {
633+
Iterator<BundleCapability> iterator = candidates.iterator();
634+
while (iterator.hasNext()) {
635+
BundleCapability candidate = iterator.next();
636+
String name = candidate.getResource().getSymbolicName();
637+
Version version = candidate.getResource().getVersion();
638+
if (version.getMajor() == 6 && (name.startsWith("junit") || name.startsWith("org.junit"))) { //$NON-NLS-1$ //$NON-NLS-2$
639+
iterator.remove();
640+
}
641+
}
642+
}
643+
644+
@Override
645+
public void filterResolvable(Collection<BundleRevision> candidates) {
646+
}
647+
648+
@Override
649+
public void filterSingletonCollisions(BundleCapability singleton, Collection<BundleCapability> collisionCandidates) {
650+
}
651+
652+
@Override
653+
public void end() {
654+
}
655+
}
616656
}

0 commit comments

Comments
 (0)