Skip to content

Commit aa97f63

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

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

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

+54
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,27 @@ public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult
333339
}));
334340
}
335341

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

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

0 commit comments

Comments
 (0)