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) {

Reply via email to