aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-batch/src
diff options
context:
space:
mode:
authorJulien HENRY <julien.henry@sonarsource.com>2015-10-06 16:10:52 +0200
committerJulien HENRY <julien.henry@sonarsource.com>2015-10-06 16:17:07 +0200
commit7aaa46f91080a1aab1e0acaeea7eb36b2c1c3972 (patch)
tree19980a422ae5ea319847e868b7a390ed0bef988e /sonar-batch/src
parent41c4f766127708bbb02e4bd9b50103d27c18423d (diff)
downloadsonarqube-7aaa46f91080a1aab1e0acaeea7eb36b2c1c3972.tar.gz
sonarqube-7aaa46f91080a1aab1e0acaeea7eb36b2c1c3972.zip
SONAR-6621 Drop support for property sonar.qualitygate to override Quality Gate
Diffstat (limited to 'sonar-batch/src')
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/DroppedPropertyChecker.java18
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalSettings.java2
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorBuilder.java22
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java19
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/bootstrap/DroppedPropertyCheckerTest.java13
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorBuilderTest.java15
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java30
7 files changed, 54 insertions, 65 deletions
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/DroppedPropertyChecker.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/DroppedPropertyChecker.java
index b12903f670e..22c38b8580e 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/DroppedPropertyChecker.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/DroppedPropertyChecker.java
@@ -20,27 +20,27 @@
package org.sonar.batch.bootstrap;
import java.util.Map;
-import org.sonar.api.config.Settings;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
import static java.util.Objects.requireNonNull;
public class DroppedPropertyChecker {
- private final Settings settings;
- private final Logger logger;
+
+ private static final Logger LOG = Loggers.get(DroppedPropertyChecker.class);
+
+ private final Map<String, String> settings;
private final Map<String, String> properties;
- public DroppedPropertyChecker(Settings settings, Map<String, String> properties) {
- this.settings = requireNonNull(settings);
- this.logger = Loggers.get(settings.getClass());
- this.properties = requireNonNull(properties);
+ public DroppedPropertyChecker(Map<String, String> properties, Map<String, String> droppedPropertiesAndMsg) {
+ this.settings = requireNonNull(properties);
+ this.properties = requireNonNull(droppedPropertiesAndMsg);
}
public void checkDroppedProperties() {
for (Map.Entry<String, String> entry : properties.entrySet()) {
- if (settings.hasKey(entry.getKey())) {
- logger.warn("Property '{}' is not supported any more. {}", entry.getKey(), entry.getValue());
+ if (settings.containsKey(entry.getKey())) {
+ LOG.warn("Property '{}' is not supported any more. {}", entry.getKey(), entry.getValue());
}
}
}
diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalSettings.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalSettings.java
index eaab0380b03..921e0f8f902 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalSettings.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/GlobalSettings.java
@@ -56,7 +56,7 @@ public class GlobalSettings extends Settings {
this.bootstrapProps = bootstrapProps;
this.globalReferentials = globalReferentials;
init();
- new DroppedPropertyChecker(this, DROPPED_PROPERTIES).checkDroppedProperties();
+ new DroppedPropertyChecker(this.getProperties(), DROPPED_PROPERTIES).checkDroppedProperties();
}
private void init() {
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorBuilder.java b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorBuilder.java
index e3fe21f32f9..7a2b7dba935 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorBuilder.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectReactorBuilder.java
@@ -20,6 +20,7 @@
package org.sonar.batch.scan;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import java.io.File;
import java.io.FileFilter;
@@ -49,6 +50,7 @@ import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
import org.sonar.api.utils.log.Profiler;
import org.sonar.batch.analysis.AnalysisProperties;
+import org.sonar.batch.bootstrap.DroppedPropertyChecker;
import org.sonar.batch.util.BatchUtils;
/**
@@ -58,6 +60,13 @@ public class ProjectReactorBuilder {
private static final String INVALID_VALUE_OF_X_FOR_Y = "Invalid value of {0} for {1}";
+ /**
+ * A map of dropped properties as key and specific message to display for that property
+ * (what will happen, what should the user do, ...) as a value
+ */
+ private static final Map<String, String> DROPPED_PROPERTIES = ImmutableMap.of(
+ "sonar.qualitygate", "It will be ignored.");
+
private static final Logger LOG = Loggers.get(ProjectReactorBuilder.class);
/**
@@ -96,7 +105,7 @@ public class ProjectReactorBuilder {
/**
* Array of all mandatory properties required for a child project before its properties get merged with its parent ones.
*/
- protected static final String[] MANDATORY_PROPERTIES_FOR_CHILD = {MODULE_KEY_PROPERTY, CoreProperties.PROJECT_NAME_PROPERTY};
+ private static final String[] MANDATORY_PROPERTIES_FOR_CHILD = {MODULE_KEY_PROPERTY, CoreProperties.PROJECT_NAME_PROPERTY};
/**
* Properties that must not be passed from the parent project to its children.
@@ -106,25 +115,26 @@ public class ProjectReactorBuilder {
private static final String NON_ASSOCIATED_PROJECT_KEY = "project";
- private final AnalysisProperties taskProps;
+ private final AnalysisProperties analysisProps;
private final AnalysisMode analysisMode;
private File rootProjectWorkDir;
public ProjectReactorBuilder(AnalysisProperties props, AnalysisMode analysisMode) {
- this.taskProps = props;
+ this.analysisProps = props;
this.analysisMode = analysisMode;
}
public ProjectReactor execute() {
Profiler profiler = Profiler.create(LOG).startInfo("Process project properties");
+ new DroppedPropertyChecker(analysisProps.properties(), DROPPED_PROPERTIES).checkDroppedProperties();
Map<String, Map<String, String>> propertiesByModuleIdPath = new HashMap<>();
- extractPropertiesByModule(propertiesByModuleIdPath, "", "", taskProps.properties());
+ extractPropertiesByModule(propertiesByModuleIdPath, "", "", analysisProps.properties());
ProjectDefinition rootProject = defineRootProject(propertiesByModuleIdPath.get(""), null);
rootProjectWorkDir = rootProject.getWorkDir();
defineChildren(rootProject, propertiesByModuleIdPath, "");
cleanAndCheckProjectDefinitions(rootProject);
// Since task properties are now empty we should add root module properties
- taskProps.properties().putAll(propertiesByModuleIdPath.get(""));
+ analysisProps.properties().putAll(propertiesByModuleIdPath.get(""));
profiler.stopDebug();
return new ProjectReactor(rootProject);
}
@@ -403,7 +413,7 @@ public class ProjectReactorBuilder {
@VisibleForTesting
protected static void mergeParentProperties(Map<String, String> childProps, Map<String, String> parentProps) {
for (Map.Entry<String, String> entry : parentProps.entrySet()) {
- String key = (String) entry.getKey();
+ String key = entry.getKey();
if ((!childProps.containsKey(key) || childProps.get(key).equals(entry.getValue()))
&& !NON_HERITED_PROPERTIES_FOR_CHILD.contains(key)) {
childProps.put(entry.getKey(), entry.getValue());
diff --git a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java
index c022541bd96..0ee85d72e7e 100644
--- a/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java
+++ b/sonar-batch/src/main/java/org/sonar/batch/scan/ProjectSettings.java
@@ -19,31 +19,17 @@
*/
package org.sonar.batch.scan;
-import org.sonar.batch.repository.ProjectRepositories;
-
-import org.sonar.batch.analysis.DefaultAnalysisMode;
-import com.google.common.collect.ImmutableMap;
-
-import java.util.Map;
-
import org.sonar.api.CoreProperties;
import org.sonar.api.batch.bootstrap.ProjectReactor;
import org.sonar.api.config.PropertyDefinitions;
import org.sonar.api.config.Settings;
import org.sonar.api.utils.MessageException;
-import org.sonar.batch.bootstrap.DroppedPropertyChecker;
+import org.sonar.batch.analysis.DefaultAnalysisMode;
import org.sonar.batch.bootstrap.GlobalSettings;
+import org.sonar.batch.repository.ProjectRepositories;
public class ProjectSettings extends Settings {
- /**
- * A map of dropped properties as key and specific message to display for that property
- * (what will happen, what should the user do, ...) as a value
- */
- private static final Map<String, String> DROPPED_PROPERTIES = ImmutableMap.of(
- "sonar.qualitygate", "It will be ignored."
- );
-
private final GlobalSettings globalSettings;
private final ProjectRepositories projectRepositories;
private final DefaultAnalysisMode mode;
@@ -56,7 +42,6 @@ public class ProjectSettings extends Settings {
this.globalSettings = globalSettings;
this.projectRepositories = projectRepositories;
init(reactor);
- new DroppedPropertyChecker(this, DROPPED_PROPERTIES).checkDroppedProperties();
}
private void init(ProjectReactor reactor) {
diff --git a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/DroppedPropertyCheckerTest.java b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/DroppedPropertyCheckerTest.java
index 6b83260d5c9..07ad8a2bc20 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/DroppedPropertyCheckerTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/DroppedPropertyCheckerTest.java
@@ -22,7 +22,6 @@ package org.sonar.batch.bootstrap;
import com.google.common.collect.ImmutableMap;
import org.junit.Rule;
import org.junit.Test;
-import org.sonar.api.config.Settings;
import org.sonar.api.utils.log.LogTester;
import org.sonar.api.utils.log.LoggerLevel;
@@ -38,27 +37,21 @@ public class DroppedPropertyCheckerTest {
@Test
public void no_log_if_no_dropped_property() {
- Settings settings = new Settings();
- settings.setProperty(DROPPED_PROPERTY_1, SOME_VALUE);
-
- new DroppedPropertyChecker(settings, ImmutableMap.<String, String>of()).checkDroppedProperties();
+ new DroppedPropertyChecker(ImmutableMap.of(DROPPED_PROPERTY_1, SOME_VALUE), ImmutableMap.<String, String>of()).checkDroppedProperties();
assertThat(logTester.logs()).isEmpty();
}
@Test
public void no_log_if_settings_does_not_contain_any_dropped_property() {
- new DroppedPropertyChecker(new Settings(), ImmutableMap.of(DROPPED_PROPERTY_1, DROPPED_PROPERTY_MSG_1)).checkDroppedProperties();
+ new DroppedPropertyChecker(ImmutableMap.<String, String>of(), ImmutableMap.of(DROPPED_PROPERTY_1, DROPPED_PROPERTY_MSG_1)).checkDroppedProperties();
assertThat(logTester.logs()).isEmpty();
}
@Test
public void warn_log_if_settings_contains_any_dropped_property() {
- Settings settings = new Settings();
- settings.setProperty(DROPPED_PROPERTY_1, SOME_VALUE);
-
- new DroppedPropertyChecker(settings, ImmutableMap.of(DROPPED_PROPERTY_1, DROPPED_PROPERTY_MSG_1)).checkDroppedProperties();
+ new DroppedPropertyChecker(ImmutableMap.of(DROPPED_PROPERTY_1, SOME_VALUE), ImmutableMap.of(DROPPED_PROPERTY_1, DROPPED_PROPERTY_MSG_1)).checkDroppedProperties();
assertThat(logTester.logs(LoggerLevel.ERROR)).isEmpty();
assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly("Property '" + DROPPED_PROPERTY_1 + "' is not supported any more. " + DROPPED_PROPERTY_MSG_1);
diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorBuilderTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorBuilderTest.java
index e5206b732c3..d199bce50c9 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorBuilderTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectReactorBuilderTest.java
@@ -35,6 +35,8 @@ import org.junit.rules.ExpectedException;
import org.sonar.api.batch.AnalysisMode;
import org.sonar.api.batch.bootstrap.ProjectDefinition;
import org.sonar.api.batch.bootstrap.ProjectReactor;
+import org.sonar.api.utils.log.LogTester;
+import org.sonar.api.utils.log.LoggerLevel;
import org.sonar.batch.analysis.AnalysisProperties;
import org.sonar.test.TestUtils;
@@ -47,6 +49,9 @@ public class ProjectReactorBuilderTest {
@Rule
public ExpectedException thrown = ExpectedException.none();
+ @Rule
+ public LogTester logTester = new LogTester();
+
private AnalysisMode mode;
@Before
@@ -688,6 +693,16 @@ public class ProjectReactorBuilderTest {
.isEqualTo(new File(TestUtils.getResource(this.getClass(), "multi-module-definitions-same-prefix"), ".sonar/com.foo.project_com.foo.project.module1.feature"));
}
+ @Test
+ public void should_log_a_warning_when_a_dropped_property_is_present() {
+ Map<String, String> props = loadProps("simple-project");
+ props.put("sonar.qualitygate", "somevalue");
+ AnalysisProperties bootstrapProps = new AnalysisProperties(props, null);
+ new ProjectReactorBuilder(bootstrapProps, mode).execute();
+
+ assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly("Property 'sonar.qualitygate' is not supported any more. It will be ignored.");
+ }
+
private Map<String, String> loadPropsFromFile(String filePath) throws IOException {
Properties props = new Properties();
try (FileInputStream fileInputStream = new FileInputStream(TestUtils.getResource(this.getClass(), filePath))) {
diff --git a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java
index 0a2583325a9..2e6612aae69 100644
--- a/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java
+++ b/sonar-batch/src/test/java/org/sonar/batch/scan/ProjectSettingsTest.java
@@ -19,18 +19,10 @@
*/
package org.sonar.batch.scan;
-import org.sonar.batch.repository.FileData;
-
import com.google.common.collect.HashBasedTable;
-import com.google.common.collect.Table;
import com.google.common.collect.ImmutableTable;
-import org.sonar.batch.repository.ProjectRepositories;
-import org.sonar.batch.analysis.DefaultAnalysisMode;
-import org.sonar.batch.bootstrap.GlobalMode;
-import com.google.common.collect.ImmutableMap;
-
+import com.google.common.collect.Table;
import java.util.Collections;
-
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -41,10 +33,14 @@ import org.sonar.api.batch.bootstrap.ProjectReactor;
import org.sonar.api.config.PropertyDefinitions;
import org.sonar.api.utils.MessageException;
import org.sonar.api.utils.log.LogTester;
-import org.sonar.api.utils.log.LoggerLevel;
+import org.sonar.batch.analysis.DefaultAnalysisMode;
+import org.sonar.batch.bootstrap.GlobalMode;
import org.sonar.batch.bootstrap.GlobalProperties;
import org.sonar.batch.bootstrap.GlobalSettings;
import org.sonar.batch.protocol.input.GlobalRepositories;
+import org.sonar.batch.repository.FileData;
+import org.sonar.batch.repository.ProjectRepositories;
+
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -138,19 +134,9 @@ public class ProjectSettingsTest {
assertThat(batchSettings.getString("sonar.foo.license.secured")).isEqualTo("bar2");
thrown.expect(MessageException.class);
thrown
- .expectMessage("Access to the secured property 'sonar.foo.secured' is not possible in issues mode. The SonarQube plugin which requires this property must be deactivated in issues mode.");
+ .expectMessage(
+ "Access to the secured property 'sonar.foo.secured' is not possible in issues mode. The SonarQube plugin which requires this property must be deactivated in issues mode.");
batchSettings.getString("sonar.foo.secured");
}
- @Test
- public void should_log_a_warning_when_a_dropper_property_is_present() {
- GlobalSettings settings = new GlobalSettings(new GlobalProperties(ImmutableMap.of("sonar.qualitygate", "somevalue")), new PropertyDefinitions(), new GlobalRepositories(),
- globalMode);
- projectRef = new ProjectRepositories(emptySettings, emptyFileData, null);
- new ProjectSettings(new ProjectReactor(project), settings, new PropertyDefinitions(), projectRef, mode);
-
- assertThat(logTester.logs(LoggerLevel.WARN)).containsOnly("Property 'sonar.qualitygate' is not supported any more. It will be ignored.");
-
- }
-
}