This is an automated email from the ASF dual-hosted git repository.

sjaranowski pushed a commit to branch maven-plugin-testing-3.x
in repository https://gitbox.apache.org/repos/asf/maven-plugin-testing.git


The following commit(s) were added to refs/heads/maven-plugin-testing-3.x by 
this push:
     new 4958ac0  Support for Nested tests
4958ac0 is described below

commit 4958ac0eee4594a1dbabb9e86b4a5471021c7c98
Author: Slawomir Jaranowski <[email protected]>
AuthorDate: Thu Jan 1 20:33:12 2026 +0100

    Support for Nested tests
---
 .../maven/api/plugin/testing/MojoExtension.java    | 18 ++++++++-----
 .../maven/plugin/testing/ParametersMojoTest.java   |  3 +++
 .../testing/ProvidesInjectOverrideMojoTest.java    | 31 +++++++++++++++++++++-
 3 files changed, 44 insertions(+), 8 deletions(-)

diff --git 
a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java
 
b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java
index 6853301..0ed3ba5 100644
--- 
a/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java
+++ 
b/maven-plugin-testing-harness/src/main/java/org/apache/maven/api/plugin/testing/MojoExtension.java
@@ -221,10 +221,12 @@ public class MojoExtension extends PlexusExtension 
implements ParameterResolver
 
         PlexusContainer plexusContainer = getContainer(context);
 
-        ((DefaultPlexusContainer) 
plexusContainer).addPlexusInjector(Collections.emptyList(), binder -> {
-            
binder.install(ProviderMethodsModule.forObject(context.getRequiredTestInstance()));
-            binder.install(new 
MavenProvidesModule(context.getRequiredTestInstance()));
-        });
+        
context.getRequiredTestInstances().getAllInstances().forEach(testInstance -> 
((DefaultPlexusContainer)
+                        plexusContainer)
+                .addPlexusInjector(Collections.emptyList(), binder -> {
+                    
binder.install(ProviderMethodsModule.forObject(testInstance));
+                    binder.install(new MavenProvidesModule(testInstance));
+                }));
 
         addMock(plexusContainer, Log.class, () -> new 
MojoLogWrapper(LoggerFactory.getLogger("anonymous")));
         MavenProject mavenProject = addMock(plexusContainer, 
MavenProject.class, this::mockMavenProject);
@@ -243,9 +245,11 @@ public class MojoExtension extends PlexusExtension 
implements ParameterResolver
         executionScope.seed(MavenProject.class, mavenProject);
         executionScope.seed(MojoExecution.class, mojoExecution);
 
-        ((DefaultPlexusContainer) 
plexusContainer).addPlexusInjector(Collections.emptyList(), binder -> {
-            binder.requestInjection(context.getRequiredTestInstance());
-        });
+        
context.getRequiredTestInstances().getAllInstances().forEach(testInstance -> 
((DefaultPlexusContainer)
+                        plexusContainer)
+                .addPlexusInjector(Collections.emptyList(), binder -> {
+                    binder.requestInjection(testInstance);
+                }));
 
         Map<Object, Object> map = 
plexusContainer.getContext().getContextData();
 
diff --git 
a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java
 
b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java
index 90eb789..04f1d4f 100644
--- 
a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java
+++ 
b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ParametersMojoTest.java
@@ -95,6 +95,9 @@ public class ParametersMojoTest {
         @InjectMojo(goal = "test:test-plugin:0.0.1-SNAPSHOT:parameters", pom = 
PROPERTY_POM_DIR + POM_DOT_XML_FILE)
         @MojoParameter(name = "plain", value = "test-${property}")
         void testPropertyPom(ParametersMojo mojo) {
+
+            assertNotNull(log, "log from parent class should be injected 
properly");
+
             assertEquals("test-testPropertyValue", mojo.getPlain());
             assertEquals("testPropertyValue", mojo.getWithProperty());
             assertEquals("default", mojo.getWithDefault());
diff --git 
a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectOverrideMojoTest.java
 
b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectOverrideMojoTest.java
index d3dbbcd..247b234 100644
--- 
a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectOverrideMojoTest.java
+++ 
b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectOverrideMojoTest.java
@@ -27,6 +27,7 @@ import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecution;
 import org.apache.maven.project.MavenProject;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
@@ -74,7 +75,7 @@ class ProvidesInjectOverrideMojoTest {
 
     @Test
     @InjectMojo(pom = POM, goal = "test:test-plugin:0.0.1-SNAPSHOT:provides")
-    public void bennShouldBeInjected(ProvidesInjectMojo mojo) {
+    void bennShouldBeInjected(ProvidesInjectMojo mojo) {
         assertNotNull(mojo);
         // session provided by the @Provides method should be used
         assertSame(session, mojo.getSession());
@@ -86,4 +87,32 @@ class ProvidesInjectOverrideMojoTest {
         assertSame(mojoExecution, mojo.getMojoExecution());
         assertSame(mojoExecution, mojo.getMojoExecutionFromBean());
     }
+
+    @Nested
+    class NestedTest {
+
+        @Mock
+        private MavenProject nestedProject;
+
+        @Provides
+        public MavenProject mockMavenProject() {
+            return nestedProject;
+        }
+
+        @Test
+        @InjectMojo(pom = POM, goal = 
"test:test-plugin:0.0.1-SNAPSHOT:provides")
+        void bennFromParentClassShouldBeInjected(ProvidesInjectMojo mojo) {
+
+            assertNotNull(mojo);
+            // session provided by the @Provides method should be used
+            assertSame(session, mojo.getSession());
+            assertSame(session, mojo.getSessionFromBean());
+
+            assertSame(nestedProject, mojo.getProject());
+            assertSame(nestedProject, mojo.getProjectFromBean());
+
+            assertSame(mojoExecution, mojo.getMojoExecution());
+            assertSame(mojoExecution, mojo.getMojoExecutionFromBean());
+        }
+    }
 }

Reply via email to