Skip to content

Commit 95f3925

Browse files
committed
Close LauncherInterceptor after reporting session as closed
1 parent 27b738f commit 95f3925

File tree

7 files changed

+29
-94
lines changed

7 files changed

+29
-94
lines changed

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/CloseableLauncher.java

-21
This file was deleted.

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/DefaultLauncherSession.java

+20-20
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,23 @@
2828
*/
2929
class DefaultLauncherSession implements LauncherSession {
3030

31+
private final LauncherInterceptor interceptor;
3132
private final LauncherSessionListener listener;
32-
private final DelegatingCloseableLauncher<CloseableLauncher> launcher;
33-
34-
DefaultLauncherSession(List<LauncherInterceptor> interceptors, Supplier<Launcher> launcherSupplier,
35-
Supplier<LauncherSessionListener> listenerSupplier) {
36-
LauncherInterceptor interceptor = LauncherInterceptor.composite(interceptors);
37-
this.listener = interceptor.intercept(listenerSupplier::get);
38-
Launcher launcher = interceptor.intercept(launcherSupplier::get);
39-
CloseableLauncher closeableLauncher = new InterceptingClosableLauncher(launcher, interceptor);
40-
this.launcher = new DelegatingCloseableLauncher<>(closeableLauncher, delegate -> {
41-
delegate.close();
42-
return ClosedLauncher.INSTANCE;
43-
});
33+
private final DelegatingLauncher launcher;
34+
35+
DefaultLauncherSession(List<LauncherInterceptor> interceptors, Supplier<LauncherSessionListener> listenerSupplier,
36+
Supplier<Launcher> launcherSupplier) {
37+
interceptor = LauncherInterceptor.composite(interceptors);
38+
Launcher launcher;
39+
if (interceptor == LauncherInterceptor.NOOP) {
40+
this.listener = listenerSupplier.get();
41+
launcher = launcherSupplier.get();
42+
}
43+
else {
44+
this.listener = interceptor.intercept(listenerSupplier::get);
45+
launcher = new InterceptingLauncher(interceptor.intercept(launcherSupplier::get), interceptor);
46+
}
47+
this.launcher = new DelegatingLauncher(launcher);
4448
listener.launcherSessionOpened(this);
4549
}
4650

@@ -55,13 +59,14 @@ LauncherSessionListener getListener() {
5559

5660
@Override
5761
public void close() {
58-
if (!launcher.isClosed()) {
59-
launcher.close();
62+
if (launcher.delegate != ClosedLauncher.INSTANCE) {
63+
launcher.delegate = ClosedLauncher.INSTANCE;
6064
listener.launcherSessionClosed(this);
65+
interceptor.close();
6166
}
6267
}
6368

64-
private static class ClosedLauncher implements CloseableLauncher {
69+
private static class ClosedLauncher implements Launcher {
6570

6671
static final ClosedLauncher INSTANCE = new ClosedLauncher();
6772

@@ -92,10 +97,5 @@ public void execute(LauncherDiscoveryRequest launcherDiscoveryRequest, TestExecu
9297
public void execute(TestPlan testPlan, TestExecutionListener... listeners) {
9398
throw new PreconditionViolationException("Launcher session has already been closed");
9499
}
95-
96-
@Override
97-
public void close() {
98-
// do nothing
99-
}
100100
}
101101
}

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/DelegatingCloseableLauncher.java

-41
This file was deleted.

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/DelegatingLauncher.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
/**
2020
* @since 1.10
2121
*/
22-
class DelegatingLauncher<T extends Launcher> implements Launcher {
22+
class DelegatingLauncher implements Launcher {
2323

24-
protected T delegate;
24+
protected Launcher delegate;
2525

26-
DelegatingLauncher(T delegate) {
26+
DelegatingLauncher(Launcher delegate) {
2727
this.delegate = delegate;
2828
}
2929

Original file line numberDiff line numberDiff line change
@@ -19,15 +19,12 @@
1919
/**
2020
* @since 1.10
2121
*/
22-
class InterceptingClosableLauncher extends DelegatingCloseableLauncher<Launcher> {
22+
class InterceptingLauncher extends DelegatingLauncher {
2323

2424
private final LauncherInterceptor interceptor;
2525

26-
InterceptingClosableLauncher(Launcher delegate, LauncherInterceptor interceptor) {
27-
super(delegate, it -> {
28-
interceptor.close();
29-
return it;
30-
});
26+
InterceptingLauncher(Launcher delegate, LauncherInterceptor interceptor) {
27+
super(delegate);
3128
this.interceptor = interceptor;
3229
}
3330

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/LauncherFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public static LauncherSession openSession(LauncherConfig config) throws Precondi
101101
Preconditions.notNull(config, "LauncherConfig must not be null");
102102
LauncherConfigurationParameters configurationParameters = LauncherConfigurationParameters.builder().build();
103103
return new DefaultLauncherSession(collectLauncherInterceptors(configurationParameters),
104-
() -> createDefaultLauncher(config, configurationParameters), () -> createLauncherSessionListener(config));
104+
() -> createLauncherSessionListener(config), () -> createDefaultLauncher(config, configurationParameters));
105105
}
106106

107107
/**

junit-platform-launcher/src/main/java/org/junit/platform/launcher/core/SessionPerRequestLauncher.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ public void execute(TestPlan testPlan, TestExecutionListener... listeners) {
7272
}
7373

7474
private LauncherSession createSession() {
75-
LauncherSession session = new DefaultLauncherSession(interceptorFactory.get(), launcherSupplier,
76-
sessionListenerSupplier);
75+
LauncherSession session = new DefaultLauncherSession(interceptorFactory.get(), sessionListenerSupplier,
76+
launcherSupplier);
7777
Launcher launcher = session.getLauncher();
7878
listenerRegistry.launcherDiscoveryListeners.getListeners().forEach(
7979
launcher::registerLauncherDiscoveryListeners);

0 commit comments

Comments
 (0)