소스 검색

SONARPLUGINS-2202 Prefix child key by parent key

tags/2.5-rc1
Fabrice Bellingard 11 년 전
부모
커밋
6dbe831ea8
2개의 변경된 파일29개의 추가작업 그리고 12개의 파일을 삭제
  1. 16
    8
      src/main/java/org/sonar/runner/model/SonarProjectBuilder.java
  2. 13
    4
      src/test/java/org/sonar/runner/model/SonarProjectBuilderTest.java

+ 16
- 8
src/main/java/org/sonar/runner/model/SonarProjectBuilder.java 파일 보기

@@ -166,23 +166,24 @@ public final class SonarProjectBuilder {
}
}

private ProjectDefinition loadChildProjectFromProperties(ProjectDefinition rootProject, Properties childProps, String moduleId) {
private ProjectDefinition loadChildProjectFromProperties(ProjectDefinition parentProject, Properties childProps, String moduleId) {
checkMandatoryProperties(moduleId, childProps, MANDATORY_PROPERTIES_FOR_CHILD);
mergeParentProperties(childProps, rootProject.getProperties());
mergeParentProperties(childProps, parentProject.getProperties());

File baseDir = null;
if (childProps.containsKey(PROPERTY_PROJECT_BASEDIR)) {
baseDir = getFileFromPath(childProps.getProperty(PROPERTY_PROJECT_BASEDIR), rootProject.getBaseDir());
baseDir = getFileFromPath(childProps.getProperty(PROPERTY_PROJECT_BASEDIR), parentProject.getBaseDir());
} else {
baseDir = new File(rootProject.getBaseDir(), moduleId);
baseDir = new File(parentProject.getBaseDir(), moduleId);
}
setProjectBaseDirOnProperties(childProps, moduleId, baseDir);
prefixProjectKeyWithParentKey(childProps, parentProject.getKey());

return defineProject(childProps);
}

private ProjectDefinition loadChildProjectFromPropertyFile(ProjectDefinition rootProject, Properties moduleProps, String moduleId) {
File propertyFile = getFileFromPath(moduleProps.getProperty(PROPERTY_PROJECT_CONFIG_FILE), rootProject.getBaseDir());
private ProjectDefinition loadChildProjectFromPropertyFile(ProjectDefinition parentProject, Properties moduleProps, String moduleId) {
File propertyFile = getFileFromPath(moduleProps.getProperty(PROPERTY_PROJECT_CONFIG_FILE), parentProject.getBaseDir());
if (!propertyFile.isFile()) {
throw new RunnerException("The properties file of the module '" + moduleId + "' does not exist: " + propertyFile.getAbsolutePath());
}
@@ -198,7 +199,7 @@ public final class SonarProjectBuilder {
}

checkMandatoryProperties(moduleId, childProps, MANDATORY_PROPERTIES_FOR_CHILD);
mergeParentProperties(childProps, rootProject.getProperties());
mergeParentProperties(childProps, parentProject.getProperties());

File baseDir = null;
if (childProps.containsKey(PROPERTY_PROJECT_BASEDIR)) {
@@ -207,11 +208,18 @@ public final class SonarProjectBuilder {
baseDir = propertyFile.getParentFile();
}
setProjectBaseDirOnProperties(childProps, moduleId, baseDir);
prefixProjectKeyWithParentKey(childProps, parentProject.getKey());

return defineProject(childProps);
}

private void setProjectBaseDirOnProperties(Properties childProps, String moduleId, File baseDir) {
@VisibleForTesting
protected static void prefixProjectKeyWithParentKey(Properties childProps, String parentKey) {
String childKey = childProps.getProperty(PROPERTY_PROJECT_KEY);
childProps.put(PROPERTY_PROJECT_KEY, parentKey + ":" + childKey);
}

private static void setProjectBaseDirOnProperties(Properties childProps, String moduleId, File baseDir) {
if (!baseDir.isDirectory()) {
throw new RunnerException("The base directory of the module '" + moduleId + "' does not exist: " + baseDir.getAbsolutePath());
}

+ 13
- 4
src/test/java/org/sonar/runner/model/SonarProjectBuilderTest.java 파일 보기

@@ -100,7 +100,7 @@ public class SonarProjectBuilderTest {

// Module 1
ProjectDefinition module1 = modules.get(0);
assertThat(module1.getKey()).isEqualTo("com.foo.project.module1");
assertThat(module1.getKey()).isEqualTo("com.foo.project:com.foo.project.module1");
assertThat(module1.getName()).isEqualTo("Foo Module 1");
assertThat(module1.getVersion()).isEqualTo("1.0-SNAPSHOT");
// Description should not be inherited from parent if not set
@@ -114,7 +114,7 @@ public class SonarProjectBuilderTest {

// Module 2
ProjectDefinition module2 = modules.get(1);
assertThat(module2.getKey()).isEqualTo("com.foo.project.module2");
assertThat(module2.getKey()).isEqualTo("com.foo.project:com.foo.project.module2");
assertThat(module2.getName()).isEqualTo("Foo Module 2");
assertThat(module2.getVersion()).isEqualTo("1.0-SNAPSHOT");
assertThat(module2.getDescription()).isEqualTo("Description of Module 2");
@@ -131,7 +131,7 @@ public class SonarProjectBuilderTest {
ProjectDefinition rootProject = loadProjectDefinition("multi-module-with-basedir");
List<ProjectDefinition> modules = rootProject.getSubProjects();
assertThat(modules.size()).isEqualTo(1);
assertThat(modules.get(0).getKey()).isEqualTo("com.foo.project.module1");
assertThat(modules.get(0).getKey()).isEqualTo("com.foo.project:com.foo.project.module1");
}

@Test
@@ -140,7 +140,7 @@ public class SonarProjectBuilderTest {
List<ProjectDefinition> modules = rootProject.getSubProjects();
assertThat(modules.size()).isEqualTo(1);
ProjectDefinition module = modules.get(0);
assertThat(module.getKey()).isEqualTo("com.foo.project.module1");
assertThat(module.getKey()).isEqualTo("com.foo.project:com.foo.project.module1");
// verify the base directory that has been changed in this config file
assertThat(module.getBaseDir().getCanonicalFile()).isEqualTo(TestUtils.getResource(this.getClass(), "multi-module-with-configfile/any-folder"));
}
@@ -329,4 +329,13 @@ public class SonarProjectBuilderTest {
assertThat(workDir).isEqualTo(new File("src").getAbsoluteFile());
}

@Test
public void shouldReturnPrefixedKey() {
Properties props = new Properties();
props.put("sonar.projectKey", "my-module-key");

SonarProjectBuilder.prefixProjectKeyWithParentKey(props, "my-parent-key");
assertThat(props.getProperty("sonar.projectKey")).isEqualTo("my-parent-key:my-module-key");
}

}

Loading…
취소
저장