@@ -202,6 +202,45 @@ class MavenConfigGenerationTest extends BaseConfigSuite {
202202 }
203203 }
204204
205+ @ Test
206+ def conflictingSubmodules () = {
207+ check(
208+ " conflicting_modules/pom.xml" ,
209+ submodules = List (
210+ " conflicting_modules/module1/pom.xml" ,
211+ " conflicting_modules/module1-test/pom.xml"
212+ )
213+ ) {
214+ case (configFile, projectName, List (module1, module2)) =>
215+ // module1 is "module1"
216+ // module2 is "module1-test"
217+
218+ // module1's test configuration should be renamed to avoid conflict with module2
219+ // Default would be "module1-test", but "module1-test" exists as a reactor artifact (module2)
220+ // So it should be "module1-test-scope"
221+ assertEquals(" module1" , module1.project.name)
222+
223+ // We need to check the test configuration name for module1.
224+ // check() function loads the "compile" configuration (default expectation in this test suite assumption?)
225+ // Actually check() loads the config based on the project file name.
226+ // module1 comes from "conflicting_modules/module1/pom.xml" -> parent dir is "module1".
227+ // The bloop file loaded is "module1.json".
228+
229+ // Let's check the test config of module1
230+ val module1TestConfigPath = configFile.project.directory.resolve(" .bloop" ).resolve(" module1-test-scope.json" )
231+ assertTrue(s " Test config for module1 should be renamed to module1-test-scope.json " , Files .exists(module1TestConfigPath))
232+
233+ val module1TestConfig = readValidBloopConfig(module1TestConfigPath.toFile())
234+ assertEquals(" module1-test-scope" , module1TestConfig.project.name)
235+
236+ // module2 should start with module1-test
237+ assertEquals(" module1-test" , module2.project.name)
238+
239+ case _ =>
240+ fail(" Conflicting modules test should have 2 submodules" )
241+ }
242+ }
243+
205244 @ Test
206245 def dependencyTestJars () = {
207246 check(" test_jars/pom.xml" ) { (configFile, projectName, subprojects) =>
@@ -260,6 +299,29 @@ class MavenConfigGenerationTest extends BaseConfigSuite {
260299 }
261300 }
262301
302+ @ Test
303+ def testFallbackNamingForTestScope () = {
304+ check(
305+ " multi_dependency/pom.xml" ,
306+ submodules = List (" multi_dependency/module1/pom.xml" , " multi_dependency/module2/pom.xml" )
307+ ) {
308+ case (configFile, projectName, submodulesList) =>
309+ val (module1 : Config .File , module2 : Config .File ) = submodulesList match {
310+ case List (m1, m2) => (m1, m2)
311+ case _ => fail(s " Expected 2 submodules, but got ${submodulesList.size}" )
312+ }
313+
314+ // Standard naming should be preserved when no collision exists
315+ assert(! configFile.project.name.contains(" -compile" ))
316+ assert(! module1.project.name.contains(" -compile" ))
317+ assert(! module2.project.name.contains(" -compile" ))
318+
319+ // Note: To test actual collision, we would need to construct a project structure
320+ // where a submodule name conflicts with the test suffix of another module.
321+ // For now, we verify that the default behavior is correct (no suffixes).
322+ }
323+ }
324+
263325 @ Test
264326 def junitSupport () = {
265327 check(" junit_project/pom.xml" ) { (configFile, projectName, subprojects) =>
@@ -328,6 +390,7 @@ class MavenConfigGenerationTest extends BaseConfigSuite {
328390 val projectName = projectPath.toFile().getName()
329391 val bloopDir = projectPath.resolve(" .bloop" )
330392 val projectFile = bloopDir.resolve(s " ${projectName}.json " )
393+
331394 val configFile = readValidBloopConfig(projectFile.toFile())
332395
333396 val subProjects = submodules.map { mod =>
@@ -362,7 +425,7 @@ class MavenConfigGenerationTest extends BaseConfigSuite {
362425 val processBuilder = new ProcessBuilder ()
363426 val out = new StringBuilder ()
364427 processBuilder.directory(cwd)
365- processBuilder.command(cmd : _* );
428+ processBuilder.command(cmd : _* )
366429 var process = processBuilder.start()
367430
368431 val reader =
@@ -373,6 +436,9 @@ class MavenConfigGenerationTest extends BaseConfigSuite {
373436 out.append(line + " \n " )
374437 line = reader.readLine()
375438 }
439+
440+ val exitCode = process.waitFor()
441+
376442 out.toString()
377443 }
378444 }
0 commit comments