diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/DefaultLauncherSession.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/DefaultLauncherSession.java index 0a4436dd5ed1..463e9f65ae3f 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/DefaultLauncherSession.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/DefaultLauncherSession.java @@ -28,17 +28,17 @@ */ class DefaultLauncherSession implements LauncherSession { - private final DelegatingCloseableLauncher launcher; private final LauncherSessionListener listener; + private final DelegatingCloseableLauncher launcher; - DefaultLauncherSession(Supplier launcherSupplier, List interceptors, - LauncherSessionListener listener) { + DefaultLauncherSession(List interceptors, Supplier launcherSupplier, + Supplier listenerSupplier) { + this.listener = listenerSupplier.get(); CloseableLauncher closeableLauncher = InterceptingClosableLauncher.decorate(launcherSupplier, interceptors); this.launcher = new DelegatingCloseableLauncher<>(closeableLauncher, delegate -> { delegate.close(); return ClosedLauncher.INSTANCE; }); - this.listener = listener; listener.launcherSessionOpened(this); } diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/LauncherFactory.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/LauncherFactory.java index 77edab9bbc67..56532b55ab4a 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/LauncherFactory.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/LauncherFactory.java @@ -100,8 +100,8 @@ public static LauncherSession openSession() throws PreconditionViolationExceptio public static LauncherSession openSession(LauncherConfig config) throws PreconditionViolationException { Preconditions.notNull(config, "LauncherConfig must not be null"); LauncherConfigurationParameters configurationParameters = LauncherConfigurationParameters.builder().build(); - return new DefaultLauncherSession(() -> createDefaultLauncher(config, configurationParameters), - collectLauncherInterceptors(configurationParameters), createLauncherSessionListener(config)); + return new DefaultLauncherSession(collectLauncherInterceptors(configurationParameters), + () -> createDefaultLauncher(config, configurationParameters), () -> createLauncherSessionListener(config)); } /** @@ -131,7 +131,7 @@ public static Launcher create(LauncherConfig config) throws PreconditionViolatio Preconditions.notNull(config, "LauncherConfig must not be null"); LauncherConfigurationParameters configurationParameters = LauncherConfigurationParameters.builder().build(); return new SessionPerRequestLauncher(() -> createDefaultLauncher(config, configurationParameters), - createLauncherSessionListener(config), () -> collectLauncherInterceptors(configurationParameters)); + () -> createLauncherSessionListener(config), () -> collectLauncherInterceptors(configurationParameters)); } private static DefaultLauncher createDefaultLauncher(LauncherConfig config, diff --git a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/SessionPerRequestLauncher.java b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/SessionPerRequestLauncher.java index 1955bc625e56..dd12240c83d1 100644 --- a/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/SessionPerRequestLauncher.java +++ b/junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/SessionPerRequestLauncher.java @@ -29,13 +29,14 @@ class SessionPerRequestLauncher implements Launcher { private final LauncherListenerRegistry listenerRegistry = new LauncherListenerRegistry(); private final Supplier launcherSupplier; - private final LauncherSessionListener sessionListener; + private final Supplier sessionListenerSupplier; private final Supplier> interceptorFactory; - SessionPerRequestLauncher(Supplier launcherSupplier, LauncherSessionListener sessionListener, + SessionPerRequestLauncher(Supplier launcherSupplier, + Supplier sessionListenerSupplier, Supplier> interceptorFactory) { this.launcherSupplier = launcherSupplier; - this.sessionListener = sessionListener; + this.sessionListenerSupplier = sessionListenerSupplier; this.interceptorFactory = interceptorFactory; } @@ -71,8 +72,8 @@ public void execute(TestPlan testPlan, TestExecutionListener... listeners) { } private LauncherSession createSession() { - LauncherSession session = new DefaultLauncherSession(launcherSupplier, interceptorFactory.get(), - sessionListener); + LauncherSession session = new DefaultLauncherSession(interceptorFactory.get(), launcherSupplier, + sessionListenerSupplier); Launcher launcher = session.getLauncher(); listenerRegistry.launcherDiscoveryListeners.getListeners().forEach( launcher::registerLauncherDiscoveryListeners); diff --git a/platform-tooling-support-tests/projects/standalone/expected-err.txt b/platform-tooling-support-tests/projects/standalone/expected-err.txt index 5788d5f3db68..cc4b8df06ddd 100644 --- a/platform-tooling-support-tests/projects/standalone/expected-err.txt +++ b/platform-tooling-support-tests/projects/standalone/expected-err.txt @@ -1,4 +1,6 @@ .+ org.junit.platform.launcher.core.ServiceLoaderRegistry load +.+ Loaded LauncherInterceptor instances: .. +.+ org.junit.platform.launcher.core.ServiceLoaderRegistry load .+ Loaded LauncherSessionListener instances: .. .+ org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry loadTestEngines .+ Discovered TestEngines: diff --git a/platform-tooling-support-tests/src/test/java/platform/tooling/support/tests/StandaloneTests.java b/platform-tooling-support-tests/src/test/java/platform/tooling/support/tests/StandaloneTests.java index 6bd095431836..97f322765d28 100644 --- a/platform-tooling-support-tests/src/test/java/platform/tooling/support/tests/StandaloneTests.java +++ b/platform-tooling-support-tests/src/test/java/platform/tooling/support/tests/StandaloneTests.java @@ -120,6 +120,7 @@ void test() throws IOException { .addArguments("--show-version") // .addArguments("-enableassertions") // .addArguments("-Djava.util.logging.config.file=logging.properties") // + .addArguments("-Djunit.platform.launcher.interceptors.enabled=true") // .addArguments("-jar", MavenRepo.jar("junit-platform-console-standalone")) // .addArguments("--scan-class-path") // .addArguments("--disable-banner") // @@ -153,6 +154,7 @@ void testOnJava8() throws IOException { .addArguments("--show-version") // .addArguments("-enableassertions") // .addArguments("-Djava.util.logging.config.file=logging.properties") // + .addArguments("-Djunit.platform.launcher.interceptors.enabled=true") // .addArguments("-jar", MavenRepo.jar("junit-platform-console-standalone")) // .addArguments("--scan-class-path") // .addArguments("--disable-banner") // @@ -187,6 +189,7 @@ void testOnJava8SelectPackage() throws IOException { .addArguments("--show-version") // .addArguments("-enableassertions") // .addArguments("-Djava.util.logging.config.file=logging.properties") // + .addArguments("-Djunit.platform.launcher.interceptors.enabled=true") // .addArguments("-jar", MavenRepo.jar("junit-platform-console-standalone")) // .addArguments("--select-package", "standalone") // .addArguments("--disable-banner") //