Преглед на файлове

SONAR-5878 Fix another regression (should not remove root properties from TaskProperties)

tags/5.0-RC1
Julien HENRY преди 9 години
родител
ревизия
0cb501f39e

+ 4
- 1
sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorBuilder.java Целия файл

@@ -116,8 +116,11 @@ public class ProjectReactorBuilder {
rootProjectWorkDir = rootProject.getWorkDir();
defineChildren(rootProject, propertiesByModuleId);
cleanAndCheckProjectDefinitions(rootProject);
// Optimization now that all properties have been read and stored in appropriate ProjectDefinition
// Optimization remove all children properties from taskProps
taskProps.properties().clear();
for (Map.Entry<Object, Object> entry : propertiesByModuleId.get("").entrySet()) {
taskProps.properties().put((String) entry.getKey(), (String) entry.getValue());
}
return new ProjectReactor(rootProject);
}


+ 27
- 4
sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorBuilderTest.java Целия файл

@@ -289,10 +289,11 @@ public class ProjectReactorBuilderTest {
}

@Test
public void modulePropertiesShouldNotLeak() throws IOException {
public void multiModuleProperties() throws IOException {
ProjectDefinition projectDefinition = loadProjectDefinition("big-multi-module-definitions-all-in-root");

assertThat(projectDefinition.getProperties().getProperty("module11.property")).isNull();
assertThat(projectDefinition.getProperties().getProperty("sonar.profile")).isEqualTo("Foo");
ProjectDefinition module1 = null;
ProjectDefinition module2 = null;
for (ProjectDefinition prj : projectDefinition.getSubProjects()) {
@@ -304,8 +305,10 @@ public class ProjectReactorBuilderTest {
}
assertThat(module1.getProperties().getProperty("module11.property")).isNull();
assertThat(module1.getProperties().getProperty("property")).isNull();
assertThat(module1.getProperties().getProperty("sonar.profile")).isEqualTo("Foo");
assertThat(module2.getProperties().getProperty("module11.property")).isNull();
assertThat(module2.getProperties().getProperty("property")).isNull();
assertThat(module2.getProperties().getProperty("sonar.profile")).isEqualTo("Foo");

ProjectDefinition module11 = null;
ProjectDefinition module12 = null;
@@ -316,10 +319,25 @@ public class ProjectReactorBuilderTest {
module12 = prj;
}
}
assertThat(module11.getProperties().getProperty("module1.module11.property")).isNull();
assertThat(module11.getProperties().getProperty("module11.property")).isNull();
assertThat(module11.getProperties().getProperty("property")).isEqualTo("My module11 property");
assertThat(module11.getProperties().getProperty("sonar.profile")).isEqualTo("Foo");
assertThat(module12.getProperties().getProperty("module11.property")).isNull();
assertThat(module12.getProperties().getProperty("property")).isNull();
assertThat(module12.getProperties().getProperty("sonar.profile")).isEqualTo("Foo");
}

@Test
public void shouldRemoveModulePropertiesFromTaskProperties() {
Map<String, String> props = loadProps("big-multi-module-definitions-all-in-root");

TaskProperties taskProperties = new TaskProperties(props, null);
assertThat(taskProperties.property("module1.module11.property")).isEqualTo("My module11 property");

new ProjectReactorBuilder(taskProperties).execute();

assertThat(taskProperties.property("module1.module11.property")).isNull();
}

@Test
@@ -498,15 +516,20 @@ public class ProjectReactorBuilderTest {
}

private ProjectDefinition loadProjectDefinition(String projectFolder) throws IOException {
Map<String, String> props = loadProps(projectFolder);
TaskProperties bootstrapProps = new TaskProperties(props, null);
ProjectReactor projectReactor = new ProjectReactorBuilder(bootstrapProps).execute();
return projectReactor.getRoot();
}

private Map<String, String> loadProps(String projectFolder) {
Map<String, String> props = Maps.<String, String>newHashMap();
Properties runnerProps = ProjectReactorBuilder.toProperties(TestUtils.getResource(this.getClass(), projectFolder + "/sonar-project.properties"));
for (final String name : runnerProps.stringPropertyNames()) {
props.put(name, runnerProps.getProperty(name));
}
props.put("sonar.projectBaseDir", TestUtils.getResource(this.getClass(), projectFolder).getAbsolutePath());
TaskProperties bootstrapProps = new TaskProperties(props, null);
ProjectReactor projectReactor = new ProjectReactorBuilder(bootstrapProps).execute();
return projectReactor.getRoot();
return props;
}

public Map<String, String> toMap(Properties props) {

+ 1
- 0
sonar-batch/src/test/resources/org/sonar/batch/scan/ProjectReactorBuilderTest/big-multi-module-definitions-all-in-root/sonar-project.properties Целия файл

@@ -6,6 +6,7 @@ sonar.projectDescription=Description of Foo Project
sonar.sources=sources
sonar.tests=tests
sonar.binaries=target/classes
sonar.profile=Foo

sonar.modules=module1,module2


Loading…
Отказ
Запис