summaryrefslogtreecommitdiffstats
path: root/sonar-batch
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2015-10-29 16:37:29 +0100
committerDuarte Meneses <duarte.meneses@sonarsource.com>2015-11-03 10:14:38 +0100
commit3e5cbb0098adc6b59313fd501d395272edfe2e64 (patch)
treec4b832fd10b176b1766b30c931ff46714b30749c /sonar-batch
parentd5d4548ee4f0c13360ca4f28ff751f927daef663 (diff)
downloadsonarqube-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.java25
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorValidatorTest.java19
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() {