From 126e8a7a71b48d2a9807b83f4918720ec6e10657 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Mon, 27 Oct 2025 20:38:40 +0100 Subject: [PATCH] Fix setup of test execution context in ThreadLocal - ThreadLocal must be set in setupContainer, such beforeEach method is not called by child implementation - cleanups ThreadLocal by junit - use AutoClosable --- .../org/codehaus/plexus/testing/PlexusExtension.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java b/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java index 0c15235..11cbe31 100644 --- a/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java +++ b/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java @@ -79,7 +79,6 @@ public class PlexusExtension implements BeforeEachCallback, AfterEachCallback { @Override public void beforeEach(ExtensionContext context) throws Exception { - extensionContextThreadLocal.set(context); setTestBasedir(getDefaultBasedir(), context); ((DefaultPlexusContainer) getContainer(context)) @@ -88,6 +87,12 @@ public void beforeEach(ExtensionContext context) throws Exception { } private PlexusContainer setupContainer(ExtensionContext context) { + // Store the context in a thread local for static access + // must be done hear as this method is always executed + extensionContextThreadLocal.set(context); + context.getStore(PLEXUS_EXTENSION) + .put("threadLocalCloseable", (AutoCloseable) extensionContextThreadLocal::remove); + // ---------------------------------------------------------------------------- // Context Setup // ---------------------------------------------------------------------------- @@ -175,8 +180,6 @@ public void afterEach(ExtensionContext context) throws Exception { if (container != null) { container.dispose(); } - context.getStore(PLEXUS_EXTENSION).remove("testBasedir", String.class); - extensionContextThreadLocal.remove(); } /**