Skip to content

Commit

Permalink
Simplify DefaultLauncher, remove TestEngineRegistry interface
Browse files Browse the repository at this point in the history
  • Loading branch information
marcphilipp committed Jan 22, 2016
1 parent 1f209b6 commit 9c963d4
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 58 deletions.
Expand Up @@ -38,28 +38,16 @@ class DefaultLauncher implements Launcher {


private static final Logger LOG = Logger.getLogger(DefaultLauncher.class.getName()); private static final Logger LOG = Logger.getLogger(DefaultLauncher.class.getName());


private final TestEngineRegistry testEngineRegistry; private final TestExecutionListenerRegistry listenerRegistry = new TestExecutionListenerRegistry();
private final TestExecutionListenerRegistry testExecutionListenerRegistry; private final Iterable<TestEngine> testEngines;


DefaultLauncher() { DefaultLauncher(Iterable<TestEngine> testEngines) {
this(new ServiceLoaderTestEngineRegistry(), new TestExecutionListenerRegistry()); this.testEngines = testEngines;
}

// For tests only
DefaultLauncher(TestEngineRegistry testEngineRegistry) {
this(testEngineRegistry, new TestExecutionListenerRegistry());
}

// For tests only
DefaultLauncher(TestEngineRegistry testEngineRegistry,
TestExecutionListenerRegistry testExecutionListenerRegistry) {
this.testEngineRegistry = testEngineRegistry;
this.testExecutionListenerRegistry = testExecutionListenerRegistry;
} }


@Override @Override
public void registerTestExecutionListeners(TestExecutionListener... listeners) { public void registerTestExecutionListeners(TestExecutionListener... listeners) {
testExecutionListenerRegistry.registerListener(listeners); listenerRegistry.registerListener(listeners);
} }


@Override @Override
Expand All @@ -77,7 +65,7 @@ private Root discoverRoot(TestDiscoveryRequest discoveryRequest, String phase) {


Set<String> uniqueEngineIds = new HashSet<>(); Set<String> uniqueEngineIds = new HashSet<>();


for (TestEngine testEngine : testEngineRegistry.getTestEngines()) { for (TestEngine testEngine : testEngines) {
final String engineId = testEngine.getId(); final String engineId = testEngine.getId();


if (discoveryRequest.getEngineIdFilters().stream().map( if (discoveryRequest.getEngineIdFilters().stream().map(
Expand All @@ -88,9 +76,8 @@ private Root discoverRoot(TestDiscoveryRequest discoveryRequest, String phase) {
} }


if (!uniqueEngineIds.add(engineId)) { if (!uniqueEngineIds.add(engineId)) {
throw new JUnitException(String.format( throw new JUnitException(
"Failure in launcher: TestEngineRegistry [%s] returned multiple engines with the same ID [%s].", String.format("Failure in launcher: multiple engines with the same ID [%s].", engineId));
testEngineRegistry.getClass().getName(), engineId));
} }


LOG.fine( LOG.fine(
Expand All @@ -105,7 +92,7 @@ private Root discoverRoot(TestDiscoveryRequest discoveryRequest, String phase) {


private void execute(Root root) { private void execute(Root root) {
TestPlan testPlan = TestPlan.from(root.getEngineDescriptors()); TestPlan testPlan = TestPlan.from(root.getEngineDescriptors());
TestExecutionListener testExecutionListener = testExecutionListenerRegistry.getCompositeTestExecutionListener(); TestExecutionListener testExecutionListener = listenerRegistry.getCompositeTestExecutionListener();
testExecutionListener.testPlanExecutionStarted(testPlan); testExecutionListener.testPlanExecutionStarted(testPlan);
ExecutionListenerAdapter engineExecutionListener = new ExecutionListenerAdapter(testPlan, ExecutionListenerAdapter engineExecutionListener = new ExecutionListenerAdapter(testPlan,
testExecutionListener); testExecutionListener);
Expand Down
Expand Up @@ -10,7 +10,7 @@


package org.junit.gen5.launcher.main; package org.junit.gen5.launcher.main;


import org.junit.gen5.launcher.*; import org.junit.gen5.launcher.Launcher;


/** /**
* Factory for creating {@link Launcher} instances by invoking {@link #create()}. * Factory for creating {@link Launcher} instances by invoking {@link #create()}.
Expand All @@ -28,10 +28,11 @@
public class LauncherFactory { public class LauncherFactory {


/** /**
* Factory method for creating a new instance of {@link Launcher}. * Factory method for creating a new instance of {@link Launcher} using dynamically
* registered test engines.
*/ */
public static Launcher create() { public static Launcher create() {
return new DefaultLauncher(); return new DefaultLauncher(new ServiceLoaderTestEngineRegistry().loadTestEngines());
} }


} }
Expand Up @@ -22,19 +22,15 @@
/** /**
* @since 5.0 * @since 5.0
*/ */
class ServiceLoaderTestEngineRegistry implements TestEngineRegistry { class ServiceLoaderTestEngineRegistry {


private static final Logger LOG = Logger.getLogger(ServiceLoaderTestEngineRegistry.class.getName()); private static final Logger LOG = Logger.getLogger(ServiceLoaderTestEngineRegistry.class.getName());


private static Iterable<TestEngine> testEngines; public Iterable<TestEngine> loadTestEngines() {

Iterable<TestEngine> testEngines = ServiceLoader.load(TestEngine.class,
@Override ReflectionUtils.getDefaultClassLoader());
public synchronized Iterable<TestEngine> getTestEngines() { LOG.info(() -> "Discovered TestEngines with IDs "
if (testEngines == null) { + stream(testEngines.spliterator(), false).map(TestEngine::getId).collect(toList()));
testEngines = ServiceLoader.load(TestEngine.class, ReflectionUtils.getDefaultClassLoader());
LOG.info(() -> "Discovered TestEngines with IDs "
+ stream(testEngines.spliterator(), false).map(TestEngine::getId).collect(toList()));
}
return testEngines; return testEngines;
} }


Expand Down

This file was deleted.

Expand Up @@ -24,7 +24,7 @@ public static DefaultLauncher createLauncher(TestEngine... engines) {
} }


public static DefaultLauncher createLauncher(Iterable<TestEngine> engines) { public static DefaultLauncher createLauncher(Iterable<TestEngine> engines) {
return new DefaultLauncher(() -> engines); return new DefaultLauncher(engines);
} }


} }

0 comments on commit 9c963d4

Please sign in to comment.