Skip to content

Commit 8e3ff08

Browse files
authored
Fix root build file selection (#429)
1 parent 93b52c7 commit 8e3ff08

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

components/sbm-core/src/main/java/org/springframework/sbm/build/api/ApplicationModules.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ public Stream<Module> stream() {
4444

4545
public Module getRootModule() {
4646
return modules.stream()
47-
.sorted((m2, m1) -> m1.getBuildFile().getAbsolutePath().toString().compareTo(m2.getBuildFile().getAbsolutePath().toString()))
47+
.filter(m -> m.getBuildFile().isRootBuildFile())
4848
.findFirst()
49-
.orElse(modules.get(0));
49+
.orElseThrow(() -> new RootBuildFileNotFoundException("Module with root build file is missing"));
5050
}
5151

5252
public List<Module> list() {

components/sbm-core/src/test/java/org/springframework/sbm/build/api/ApplicationModulesTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@
2222
import org.springframework.sbm.project.resource.TestProjectContext;
2323

2424
import java.nio.file.Path;
25+
import java.util.List;
26+
import java.util.Optional;
27+
import java.util.stream.Stream;
2528

2629
import static org.assertj.core.api.Assertions.assertThat;
30+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2731

2832
class ApplicationModulesTest {
2933

@@ -115,17 +119,22 @@ void shouldBeRecognizedAsMultiModuleProject() {
115119
}
116120

117121
@Test
118-
void rootModule() {
122+
void shouldFindRootModule() {
119123
Module rootModule = sut.getRootModule();
120124
assertThat(rootModule.getModulePath()).isEqualTo(Path.of(""));
121125
assertThat(rootModule.getBuildFile().getCoordinates()).isEqualTo("org.example:parent:1.0-SNAPSHOT");
122-
// assertThat(rootModule.getModules().get(0).getBuildFile().getCoordinates()).isEqualTo("org.example:module1:1.0-SNAPSHOT");
123-
// assertThat(rootModule.getModules().get(1).getBuildFile().getCoordinates()).isEqualTo("org.example:module2:1.0-SNAPSHOT");
124126
assertThat(rootModule.getDeclaredModules()).hasSize(2);
125127
assertThat(rootModule.getDeclaredModules().get(0)).isEqualTo("org.example:module1:1.0-SNAPSHOT");
126128
assertThat(rootModule.getDeclaredModules().get(1)).isEqualTo("org.example:module2:1.0-SNAPSHOT");
127129
}
128130

131+
@Test
132+
void shouldNotFindRootModuleForMissingRootBuildFile() {
133+
ApplicationModules applicationModules = new ApplicationModules(List.of());
134+
135+
assertThatThrownBy(applicationModules::getRootModule).isInstanceOf(RootBuildFileNotFoundException.class);
136+
}
137+
129138
@Test
130139
void getModule() {
131140
Module parentModule = sut.findModule("org.example:parent:1.0-SNAPSHOT").get();

0 commit comments

Comments
 (0)