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 6c5a42c Set MavenProject.basedir early during mock creating
6c5a42c is described below
commit 6c5a42c78a7fde6170a34cbfb90e5bf714e3aaa7
Author: Slawomir Jaranowski <[email protected]>
AuthorDate: Sat Jan 3 18:01:55 2026 +0100
Set MavenProject.basedir early during mock creating
---
.../maven/api/plugin/testing/MojoExtension.java | 23 ++++++++++++----------
.../plugin/testing/ProvidesInjectMojoTest.java | 10 ++++++++++
2 files changed, 23 insertions(+), 10 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 fd6c959..800f2a7 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
@@ -354,6 +354,16 @@ public class MojoExtension extends PlexusExtension
implements ParameterResolver
mavenProject.setBuild(build);
mavenProject.addCompileSourceRoot(build.getSourceDirectory());
mavenProject.addTestCompileSourceRoot(build.getTestSourceDirectory());
+
+ try {
+ // there is no setter for basedir, so set it via reflection
+ setVariableValueToObject(
+ mavenProject, "basedir", Paths.get(getBasedir()).toFile());
+ } catch (IllegalAccessException e) {
+ // should not happen
+ throw new RuntimeException(e);
+ }
+
return mavenProject;
}
@@ -468,20 +478,13 @@ public class MojoExtension extends PlexusExtension
implements ParameterResolver
}
if (mockingDetails(mavenProject).isMock()) {
+ File pomFile =
Optional.ofNullable(pomPath).map(Path::toFile).orElse(null);
if (mockingDetails(mavenProject).isSpy()) {
- // there is no setter for basedir, so set it via reflection
- setVariableValueToObject(
- mavenProject, "basedir",
Paths.get(getBasedir()).toFile());
-
// we only set the pom file
// setFile also change a basedir, so should not be used here
- mavenProject.setPomFile(
-
Optional.ofNullable(pomPath).map(Path::toFile).orElse(null));
+ mavenProject.setPomFile(pomFile);
} else {
- lenient()
- .doReturn(new File(getTestBasedir(extensionContext)))
- .when(mavenProject)
- .getBasedir();
+ lenient().doReturn(pomFile).when(mavenProject).getFile();
}
}
diff --git
a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectMojoTest.java
b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectMojoTest.java
index 6b0a468..2ddb393 100644
---
a/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectMojoTest.java
+++
b/maven-plugin-testing-harness/src/test/java/org/apache/maven/plugin/testing/ProvidesInjectMojoTest.java
@@ -20,13 +20,18 @@ package org.apache.maven.plugin.testing;
import javax.inject.Inject;
+import java.io.File;
+
import org.apache.maven.api.plugin.testing.InjectMojo;
+import org.apache.maven.api.plugin.testing.MojoExtension;
import org.apache.maven.api.plugin.testing.MojoTest;
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.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertSame;
@@ -45,6 +50,11 @@ public class ProvidesInjectMojoTest {
@Inject
private MojoExecution mojoExecution;
+ @BeforeEach
+ void setup() {
+ assertEquals(new File(MojoExtension.getBasedir()),
project.getBasedir());
+ }
+
@Test
@InjectMojo(pom = POM, goal = "test:test-plugin:0.0.1-SNAPSHOT:provides")
public void bennShouldBeInjected(ProvidesInjectMojo mojo) {