ascheman commented on code in PR #3392:
URL: https://github.com/apache/maven-surefire/pull/3392#discussion_r3620941289


##########
maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java:
##########
@@ -486,6 +487,96 @@ public void shouldJoinStrings() throws Exception {
         assertThat(result).isEmpty();
     }
 
+    @Test
+    public void shouldFindNestedModuleDescriptor() throws Exception {
+        // Create a temp directory structure: 
target/classes/com.example/module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-nested-module").toFile();
+        try {
+            File moduleDir = new File(tempDir, "com.example");

Review Comment:
   Done in 8527e26b2 — applied to all five places: the `File` objects are 
created before the `try` block and the `finally` block deletes them directly.



##########
maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java:
##########
@@ -486,6 +487,96 @@ public void shouldJoinStrings() throws Exception {
         assertThat(result).isEmpty();
     }
 
+    @Test
+    public void shouldFindNestedModuleDescriptor() throws Exception {
+        // Create a temp directory structure: 
target/classes/com.example/module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-nested-module").toFile();
+        try {
+            File moduleDir = new File(tempDir, "com.example");
+            moduleDir.mkdirs();
+            new File(moduleDir, "module-info.class").createNewFile();

Review Comment:
   Done in 8527e26b2.



##########
maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java:
##########
@@ -486,6 +487,96 @@ public void shouldJoinStrings() throws Exception {
         assertThat(result).isEmpty();
     }
 
+    @Test
+    public void shouldFindNestedModuleDescriptor() throws Exception {
+        // Create a temp directory structure: 
target/classes/com.example/module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-nested-module").toFile();
+        try {
+            File moduleDir = new File(tempDir, "com.example");
+            moduleDir.mkdirs();
+            new File(moduleDir, "module-info.class").createNewFile();
+
+            File result = invokeMethod(AbstractSurefireMojo.class, 
"findNestedModuleDescriptor", tempDir);
+            assertThat(result).isNotNull();
+            assertThat(result.getName()).isEqualTo("com.example");
+        } finally {
+            // Cleanup
+            new File(new File(tempDir, "com.example"), 
"module-info.class").delete();
+            new File(tempDir, "com.example").delete();
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldNotFindNestedModuleDescriptorInFlatLayout() throws 
Exception {
+        // Create a temp directory structure without nested module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-flat").toFile();
+        try {
+            File pkgDir = new File(tempDir, "com/example");

Review Comment:
   Done in 8527e26b2.



##########
maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java:
##########
@@ -486,6 +487,96 @@ public void shouldJoinStrings() throws Exception {
         assertThat(result).isEmpty();
     }
 
+    @Test
+    public void shouldFindNestedModuleDescriptor() throws Exception {
+        // Create a temp directory structure: 
target/classes/com.example/module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-nested-module").toFile();
+        try {
+            File moduleDir = new File(tempDir, "com.example");
+            moduleDir.mkdirs();
+            new File(moduleDir, "module-info.class").createNewFile();
+
+            File result = invokeMethod(AbstractSurefireMojo.class, 
"findNestedModuleDescriptor", tempDir);
+            assertThat(result).isNotNull();
+            assertThat(result.getName()).isEqualTo("com.example");
+        } finally {
+            // Cleanup
+            new File(new File(tempDir, "com.example"), 
"module-info.class").delete();
+            new File(tempDir, "com.example").delete();
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldNotFindNestedModuleDescriptorInFlatLayout() throws 
Exception {
+        // Create a temp directory structure without nested module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-flat").toFile();
+        try {
+            File pkgDir = new File(tempDir, "com/example");
+            pkgDir.mkdirs();
+            new File(pkgDir, "Foo.class").createNewFile();
+
+            File result = invokeMethod(AbstractSurefireMojo.class, 
"findNestedModuleDescriptor", tempDir);
+            assertThat(result).isNull();
+        } finally {
+            new File(new File(tempDir, "com/example"), "Foo.class").delete();
+            new File(tempDir, "com/example").delete();
+            new File(tempDir, "com").delete();
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldReturnNullForEmptyDirectory() throws Exception {
+        File tempDir = 
Files.createTempDirectory("surefire-test-empty").toFile();
+        try {
+            File result = invokeMethod(AbstractSurefireMojo.class, 
"findNestedModuleDescriptor", tempDir);
+            assertThat(result).isNull();
+        } finally {
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldNotTreatClassicModularLayoutAsNested() throws Exception {
+        // Classic layout with a root module descriptor: module "it" with root 
package "it"
+        // produces target/classes/module-info.class and target/classes/it/ — 
the package
+        // directory sharing the module name must NOT switch surefire to the 
nested layout.
+        File tempDir =
+                
Files.createTempDirectory("surefire-test-classic-modular").toFile();
+        try {
+            new File(tempDir, "module-info.class").createNewFile();
+            File pkgDir = new File(tempDir, "it");
+            pkgDir.mkdirs();
+            new File(pkgDir, "Main.class").createNewFile();

Review Comment:
   Done in 8527e26b2.



##########
maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java:
##########
@@ -486,6 +487,96 @@ public void shouldJoinStrings() throws Exception {
         assertThat(result).isEmpty();
     }
 
+    @Test
+    public void shouldFindNestedModuleDescriptor() throws Exception {
+        // Create a temp directory structure: 
target/classes/com.example/module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-nested-module").toFile();
+        try {
+            File moduleDir = new File(tempDir, "com.example");
+            moduleDir.mkdirs();
+            new File(moduleDir, "module-info.class").createNewFile();
+
+            File result = invokeMethod(AbstractSurefireMojo.class, 
"findNestedModuleDescriptor", tempDir);
+            assertThat(result).isNotNull();
+            assertThat(result.getName()).isEqualTo("com.example");
+        } finally {
+            // Cleanup
+            new File(new File(tempDir, "com.example"), 
"module-info.class").delete();
+            new File(tempDir, "com.example").delete();
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldNotFindNestedModuleDescriptorInFlatLayout() throws 
Exception {
+        // Create a temp directory structure without nested module-info.class
+        File tempDir = 
Files.createTempDirectory("surefire-test-flat").toFile();
+        try {
+            File pkgDir = new File(tempDir, "com/example");
+            pkgDir.mkdirs();
+            new File(pkgDir, "Foo.class").createNewFile();
+
+            File result = invokeMethod(AbstractSurefireMojo.class, 
"findNestedModuleDescriptor", tempDir);
+            assertThat(result).isNull();
+        } finally {
+            new File(new File(tempDir, "com/example"), "Foo.class").delete();
+            new File(tempDir, "com/example").delete();
+            new File(tempDir, "com").delete();
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldReturnNullForEmptyDirectory() throws Exception {
+        File tempDir = 
Files.createTempDirectory("surefire-test-empty").toFile();
+        try {
+            File result = invokeMethod(AbstractSurefireMojo.class, 
"findNestedModuleDescriptor", tempDir);
+            assertThat(result).isNull();
+        } finally {
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldNotTreatClassicModularLayoutAsNested() throws Exception {
+        // Classic layout with a root module descriptor: module "it" with root 
package "it"
+        // produces target/classes/module-info.class and target/classes/it/ — 
the package
+        // directory sharing the module name must NOT switch surefire to the 
nested layout.
+        File tempDir =
+                
Files.createTempDirectory("surefire-test-classic-modular").toFile();
+        try {
+            new File(tempDir, "module-info.class").createNewFile();
+            File pkgDir = new File(tempDir, "it");
+            pkgDir.mkdirs();
+            new File(pkgDir, "Main.class").createNewFile();
+
+            boolean result = invokeMethod(AbstractSurefireMojo.class, 
"isNestedModuleLayout", tempDir);
+            assertThat(result).isFalse();
+        } finally {
+            new File(new File(tempDir, "it"), "Main.class").delete();
+            new File(tempDir, "it").delete();
+            new File(tempDir, "module-info.class").delete();
+            tempDir.delete();
+        }
+    }
+
+    @Test
+    public void shouldTreatModuleSourceHierarchyLayoutAsNested() throws 
Exception {
+        File tempDir = 
Files.createTempDirectory("surefire-test-nested-layout").toFile();
+        try {
+            File moduleDir = new File(tempDir, "com.example");
+            moduleDir.mkdirs();
+            new File(moduleDir, "module-info.class").createNewFile();

Review Comment:
   Done in 8527e26b2.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to