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());
+ }
+ }
}