|
26 | 26 | import java.util.concurrent.atomic.AtomicReference;
|
27 | 27 | import java.util.logging.LogRecord;
|
28 | 28 |
|
| 29 | +import org.junit.jupiter.api.Nested; |
29 | 30 | import org.junit.jupiter.api.Tag;
|
30 | 31 | 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; |
31 | 35 | import org.junit.jupiter.api.fixtures.TrackLogRecords;
|
32 | 36 | import org.junit.jupiter.engine.JupiterTestEngine;
|
33 | 37 | import org.junit.platform.commons.PreconditionViolationException;
|
|
37 | 41 | import org.junit.platform.engine.TestDescriptor;
|
38 | 42 | import org.junit.platform.engine.TestExecutionResult;
|
39 | 43 | import org.junit.platform.engine.UniqueId;
|
| 44 | +import org.junit.platform.engine.support.store.Namespace; |
40 | 45 | import org.junit.platform.fakes.TestEngineSpy;
|
41 | 46 | import org.junit.platform.launcher.InterceptedTestEngine;
|
42 | 47 | import org.junit.platform.launcher.InterceptorInjectedLauncherSessionListener;
|
43 | 48 | import org.junit.platform.launcher.LauncherConstants;
|
44 | 49 | import org.junit.platform.launcher.LauncherDiscoveryRequest;
|
| 50 | +import org.junit.platform.launcher.LauncherSession; |
45 | 51 | import org.junit.platform.launcher.LauncherSessionListener;
|
46 | 52 | import org.junit.platform.launcher.TagFilter;
|
47 | 53 | import org.junit.platform.launcher.TestExecutionListener;
|
@@ -333,6 +339,27 @@ public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult
|
333 | 339 | }));
|
334 | 340 | }
|
335 | 341 |
|
| 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 | + |
336 | 363 | @SuppressWarnings("SameParameterValue")
|
337 | 364 | private static void withSystemProperty(String key, String value, Runnable runnable) {
|
338 | 365 | var oldValue = System.getProperty(key);
|
@@ -390,6 +417,33 @@ static class JUnit5Example {
|
390 | 417 | @Test
|
391 | 418 | void testJ5() {
|
392 | 419 | }
|
| 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 | + } |
393 | 431 |
|
| 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 | + } |
394 | 447 | }
|
| 448 | + |
395 | 449 | }
|
0 commit comments