diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2015-10-29 16:37:29 +0100 |
---|---|---|
committer | Duarte Meneses <duarte.meneses@sonarsource.com> | 2015-11-03 10:14:38 +0100 |
commit | 3e5cbb0098adc6b59313fd501d395272edfe2e64 (patch) | |
tree | c4b832fd10b176b1766b30c931ff46714b30749c /sonar-batch | |
parent | d5d4548ee4f0c13360ca4f28ff751f927daef663 (diff) | |
download | sonarqube-3e5cbb0098adc6b59313fd501d395272edfe2e64.tar.gz sonarqube-3e5cbb0098adc6b59313fd501d395272edfe2e64.zip |
SONAR-6211 Skip project key validation in issues mode
Diffstat (limited to 'sonar-batch')
-rw-r--r-- | sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorValidator.java | 25 | ||||
-rw-r--r-- | sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorValidatorTest.java | 19 |
2 files changed, 39 insertions, 5 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorValidator.java b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorValidator.java index a856b44b894..e9fbe316420 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorValidator.java +++ b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorValidator.java @@ -19,10 +19,15 @@ */ package org.sonar.batch.scan; +import org.sonar.batch.analysis.DefaultAnalysisMode; + import com.google.common.base.Joiner; + import java.util.ArrayList; import java.util.List; + import javax.annotation.Nullable; + import org.apache.commons.lang.StringUtils; import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; @@ -38,20 +43,25 @@ public class ProjectReactorValidator { private static final String SONAR_PHASE = "sonar.phase"; private final Settings settings; + private final DefaultAnalysisMode mode; - public ProjectReactorValidator(Settings settings) { + public ProjectReactorValidator(Settings settings, DefaultAnalysisMode mode) { this.settings = settings; + this.mode = mode; } public void validate(ProjectReactor reactor) { String branch = settings.getString(CoreProperties.PROJECT_BRANCH_PROPERTY); - String rootProjectKey = ComponentKeys.createKey(reactor.getRoot().getKey(), branch); List<String> validationMessages = new ArrayList<>(); checkDeprecatedProperties(validationMessages); for (ProjectDefinition moduleDef : reactor.getProjects()) { - validateModule(moduleDef, validationMessages, branch, rootProjectKey); + if (mode.isIssues()) { + validateModuleIssuesMode(moduleDef, validationMessages); + } else { + validateModule(moduleDef, validationMessages); + } } validateBranch(validationMessages, branch); @@ -61,7 +71,14 @@ public class ProjectReactorValidator { } } - private static void validateModule(ProjectDefinition moduleDef, List<String> validationMessages, @Nullable String branch, String rootProjectKey) { + private static void validateModuleIssuesMode(ProjectDefinition moduleDef, List<String> validationMessages) { + if (!ComponentKeys.isValidModuleKeyIssuesMode(moduleDef.getKey())) { + validationMessages.add(String.format("\"%s\" is not a valid project or module key. " + + "Allowed characters in issues mode are alphanumeric, '-', '_', '.', '/' and ':', with at least one non-digit.", moduleDef.getKey())); + } + } + + private static void validateModule(ProjectDefinition moduleDef, List<String> validationMessages) { if (!ComponentKeys.isValidModuleKey(moduleDef.getKey())) { validationMessages.add(String.format("\"%s\" is not a valid project or module key. " + "Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.", moduleDef.getKey())); diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorValidatorTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorValidatorTest.java index 1cb70ff6dcb..761c608c8cd 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorValidatorTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorValidatorTest.java @@ -19,6 +19,8 @@ */ package org.sonar.batch.scan; +import static org.mockito.Mockito.when; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -27,6 +29,8 @@ import org.sonar.api.CoreProperties; import org.sonar.api.batch.bootstrap.ProjectDefinition; import org.sonar.api.batch.bootstrap.ProjectReactor; import org.sonar.api.config.Settings; +import org.sonar.batch.analysis.DefaultAnalysisMode; +import static org.mockito.Mockito.mock; public class ProjectReactorValidatorTest { @@ -35,11 +39,13 @@ public class ProjectReactorValidatorTest { private ProjectReactorValidator validator; private Settings settings; + private DefaultAnalysisMode mode; @Before public void prepare() { + mode = mock(DefaultAnalysisMode.class); settings = new Settings(); - validator = new ProjectReactorValidator(settings); + validator = new ProjectReactorValidator(settings, mode); } @Test @@ -54,6 +60,17 @@ public class ProjectReactorValidatorTest { validator.validate(createProjectReactor("3-3")); validator.validate(createProjectReactor("-:")); } + + @Test + public void allow_slash_issues_mode() { + when(mode.isIssues()).thenReturn(true); + validator.validate(createProjectReactor("project/key")); + + when(mode.isIssues()).thenReturn(false); + thrown.expect(IllegalStateException.class); + thrown.expectMessage("is not a valid project or module key"); + validator.validate(createProjectReactor("project/key")); + } @Test public void not_fail_with_alphanumeric_key() { |