From d2b54826ba6d905fa73ea22e38489b2115f34b6a Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Mon, 20 Oct 2025 18:08:35 +0200 Subject: [PATCH 1/4] [maven-release-plugin] prepare for next development iteration --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 1c97977..13aae8a 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-testing - 2.0.0 + 2.0.1-SNAPSHOT Plexus Testing Library to help testing plexus components @@ -18,7 +18,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-testing.git ${project.scm.connection} - plexus-testing-2.0.0 + HEAD https://github.com/codehaus-plexus/plexus-testing @@ -36,7 +36,7 @@ 0.9.0.M4 - 2025-10-20T16:08:27Z + 2025-10-20T16:08:34Z From b37ca9e664de2149fa66b85b34e96efafee35912 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Mon, 27 Oct 2025 20:38:40 +0100 Subject: [PATCH 2/4] 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(); } /** From f5de5df5af2d87cefd5c076f24e29c4b19ae7174 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Mon, 27 Oct 2025 20:43:12 +0100 Subject: [PATCH 3/4] Use AutoClosable for cleanups of PlexusContext --- .../plexus/testing/PlexusExtension.java | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java b/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java index 11cbe31..c45e782 100644 --- a/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java +++ b/src/main/java/org/codehaus/plexus/testing/PlexusExtension.java @@ -64,6 +64,23 @@ */ public class PlexusExtension implements BeforeEachCallback, AfterEachCallback { + private static class PlexusClosableWrapper implements AutoCloseable { + private final PlexusContainer container; + + PlexusClosableWrapper(PlexusContainer container) { + this.container = container; + } + + @Override + public void close() { + container.dispose(); + } + + public PlexusContainer get() { + return container; + } + } + private static final ExtensionContext.Namespace PLEXUS_EXTENSION = ExtensionContext.Namespace.create("PlexusExtension"); @@ -140,7 +157,7 @@ private PlexusContainer setupContainer(ExtensionContext context) { throw new IllegalArgumentException("Failed to create plexus container.", e); } testInstanceCustomizeContainer(container, context); - context.getStore(PLEXUS_EXTENSION).put(PlexusContainer.class, container); + context.getStore(PLEXUS_EXTENSION).put(PlexusClosableWrapper.class, new PlexusClosableWrapper(container)); return container; } @@ -175,11 +192,7 @@ protected void customizeContext(Context context) {} @Override public void afterEach(ExtensionContext context) throws Exception { - PlexusContainer container = - context.getStore(PLEXUS_EXTENSION).remove(PlexusContainer.class, PlexusContainer.class); - if (container != null) { - container.dispose(); - } + // empty method, not used } /** @@ -211,12 +224,12 @@ protected void setTestBasedir(String testBasedir, ExtensionContext context) { } public PlexusContainer getContainer(ExtensionContext context) { - PlexusContainer container = - context.getStore(PLEXUS_EXTENSION).get(PlexusContainer.class, PlexusContainer.class); + PlexusClosableWrapper container = + context.getStore(PLEXUS_EXTENSION).get(PlexusClosableWrapper.class, PlexusClosableWrapper.class); if (container == null) { return setupContainer(context); } - return container; + return container.get(); } protected String getCustomConfigurationName() { From 8f058c34004b9a2db6b921780446ce6f301b9b15 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Mon, 27 Oct 2025 22:16:51 +0100 Subject: [PATCH 4/4] [maven-release-plugin] prepare release plexus-testing-2.0.1 --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 13aae8a..4558aa7 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ plexus-testing - 2.0.1-SNAPSHOT + 2.0.1 Plexus Testing Library to help testing plexus components @@ -18,7 +18,7 @@ scm:git:https://github.com/codehaus-plexus/plexus-testing.git ${project.scm.connection} - HEAD + plexus-testing-2.0.1 https://github.com/codehaus-plexus/plexus-testing @@ -36,7 +36,7 @@ 0.9.0.M4 - 2025-10-20T16:08:34Z + 2025-10-27T21:16:48Z