Skip to content

Commit dac543f

Browse files
committed
Add Jupiter extension test
Issue: #2816
1 parent b76ee64 commit dac543f

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

platform-tests/src/test/java/org/junit/platform/launcher/core/LauncherFactoryTests.java

+59
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,12 @@
2626
import java.util.concurrent.atomic.AtomicReference;
2727
import java.util.logging.LogRecord;
2828

29+
import org.junit.jupiter.api.Nested;
2930
import org.junit.jupiter.api.Tag;
3031
import org.junit.jupiter.api.Test;
32+
import org.junit.jupiter.api.extension.BeforeAllCallback;
33+
import org.junit.jupiter.api.extension.ExtendWith;
34+
import org.junit.jupiter.api.extension.ExtensionContext;
3135
import org.junit.jupiter.api.fixtures.TrackLogRecords;
3236
import org.junit.jupiter.engine.JupiterTestEngine;
3337
import org.junit.platform.commons.PreconditionViolationException;
@@ -37,11 +41,13 @@
3741
import org.junit.platform.engine.TestDescriptor;
3842
import org.junit.platform.engine.TestExecutionResult;
3943
import org.junit.platform.engine.UniqueId;
44+
import org.junit.platform.engine.support.store.Namespace;
4045
import org.junit.platform.fakes.TestEngineSpy;
4146
import org.junit.platform.launcher.InterceptedTestEngine;
4247
import org.junit.platform.launcher.InterceptorInjectedLauncherSessionListener;
4348
import org.junit.platform.launcher.LauncherConstants;
4449
import org.junit.platform.launcher.LauncherDiscoveryRequest;
50+
import org.junit.platform.launcher.LauncherSession;
4551
import org.junit.platform.launcher.LauncherSessionListener;
4652
import org.junit.platform.launcher.TagFilter;
4753
import org.junit.platform.launcher.TestExecutionListener;
@@ -333,6 +339,32 @@ public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult
333339
}));
334340
}
335341

342+
@Test
343+
void extensionCanReadValueFromSessionStore() {
344+
var config = LauncherConfig.builder()
345+
.addLauncherSessionListeners(new LauncherSessionListenerExample())
346+
.enableTestEngineAutoRegistration(true)
347+
.build();
348+
349+
try (LauncherSession session = LauncherFactory.openSession(config)) {
350+
var launcher = session.getLauncher();
351+
var request = LauncherDiscoveryRequestBuilder.request()
352+
.selectors(selectClass(JupiterTest.class))
353+
.build();
354+
355+
AtomicReference<Throwable> errorRef = new AtomicReference<>();
356+
launcher.execute(request, new TestExecutionListener() {
357+
@Override
358+
public void executionFinished(TestIdentifier testIdentifier,
359+
TestExecutionResult testExecutionResult) {
360+
testExecutionResult.getThrowable().ifPresent(errorRef::set);
361+
}
362+
});
363+
364+
assertThat(errorRef.get()).isNull();
365+
}
366+
}
367+
336368
@SuppressWarnings("SameParameterValue")
337369
private static void withSystemProperty(String key, String value, Runnable runnable) {
338370
var oldValue = System.getProperty(key);
@@ -390,6 +422,33 @@ static class JUnit5Example {
390422
@Test
391423
void testJ5() {
392424
}
425+
}
426+
427+
@Nested
428+
@ExtendWith(JupiterExtensionExample.class)
429+
class JupiterTest {
430+
431+
@Test
432+
void dummyTest() {
433+
// Just a placeholder to trigger the extension
434+
}
435+
}
393436

437+
static class LauncherSessionListenerExample implements LauncherSessionListener {
438+
@Override
439+
public void launcherSessionOpened(LauncherSession session) {
440+
session.getStore().put(Namespace.GLOBAL, "testKey", "testValue");
441+
}
442+
}
443+
444+
static class JupiterExtensionExample implements BeforeAllCallback {
445+
@Override
446+
public void beforeAll(ExtensionContext context) {
447+
var value = context.getRoot().getStore(ExtensionContext.Namespace.GLOBAL).get("testKey");
448+
if (!"testValue".equals(value)) {
449+
throw new IllegalStateException("Expected 'testValue' but got: " + value);
450+
}
451+
}
394452
}
453+
395454
}

0 commit comments

Comments
 (0)