Browse Source

SONAR-6514 Unexpected behavior when one module id is 'sonar'

tags/5.6-RC1
Julien HENRY 8 years ago
parent
commit
cadc0c3e86

+ 4
- 1
sonar-scanner-engine/src/main/java/org/sonar/batch/scan/ProjectReactorBuilder.java View File

@@ -154,13 +154,16 @@ public class ProjectReactorBuilder {
}
}
String[] moduleIds = getListFromProperty(currentModuleProperties, PROPERTY_MODULES);
// Sort module by reverse lexicographic order to avoid issue when one module id is a prefix of another one
// Sort modules by reverse lexicographic order to avoid issue when one module id is a prefix of another one
Arrays.sort(moduleIds);
ArrayUtils.reverse(moduleIds);

propertiesByModuleIdPath.put(currentModuleIdPath, currentModuleProperties);

for (String moduleId : moduleIds) {
if ("sonar".equals(moduleId)) {
throw MessageException.of("'sonar' is not a valid module id. Please check property '" + PROPERTY_MODULES + "'.");
}
String subModuleIdPath = currentModuleIdPath.isEmpty() ? moduleId : (currentModuleIdPath + "." + moduleId);
extractPropertiesByModule(propertiesByModuleIdPath, moduleId, subModuleIdPath, currentModuleProperties);
}

+ 8
- 0
sonar-scanner-engine/src/test/java/org/sonar/batch/scan/ProjectReactorBuilderTest.java View File

@@ -101,6 +101,14 @@ public class ProjectReactorBuilderTest {
loadProjectDefinition("multi-module-duplicate-id");
}

@Test
public void sonarModuleIdIsForbidden() {
thrown.expect(MessageException.class);
thrown.expectMessage("'sonar' is not a valid module id. Please check property 'sonar.modules'.");

loadProjectDefinition("multi-module-sonar-module");
}

@Test
public void modulesRepeatedIds() {
ProjectDefinition rootProject = loadProjectDefinition("multi-module-repeated-id");

+ 15
- 0
sonar-scanner-engine/src/test/resources/org/sonar/batch/scan/ProjectReactorBuilderTest/multi-module-sonar-module/sonar-project.properties View File

@@ -0,0 +1,15 @@
sonar.projectKey=com.foo.project
sonar.projectName=Foo Project
sonar.projectVersion=1.0-SNAPSHOT
sonar.projectDescription=Description of Foo Project

sonar.sources=sources
sonar.tests=tests
sonar.binaries=target/classes

sonar.modules=module1,sonar

module1.sonar.sources=src

# Unable to know to which module belong this property
sonar.sonar.sources=foo

Loading…
Cancel
Save