diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2016-07-07 15:28:47 +0200 |
---|---|---|
committer | Duarte Meneses <duarte.meneses@sonarsource.com> | 2016-07-08 11:13:27 +0200 |
commit | ce748e217f599da5efb043bb847738b4f6aa9f23 (patch) | |
tree | 107b4c5287977574cc1c2af58974f046e00c1fbf | |
parent | 169b22e13d1bd50cf582eeb00d3231d3b8392d28 (diff) | |
download | sonarqube-ce748e217f599da5efb043bb847738b4f6aa9f23.tar.gz sonarqube-ce748e217f599da5efb043bb847738b4f6aa9f23.zip |
SONAR-7783 Ensure Sensors don't save same data twice
-rw-r--r-- | it/it-plugins/batch-plugin/src/main/java/com/sonarsource/BatchPlugin.java | 3 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/Category3Suite.java | 2 | ||||
-rw-r--r-- | it/it-tests/src/test/java/it/analysis/SaveDataTwiceTest.java | 66 | ||||
-rw-r--r-- | plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java | 2 | ||||
-rw-r--r-- | plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/SaveDataTwiceSensor.java (renamed from it/it-plugins/batch-plugin/src/main/java/com/sonarsource/SaveDataTwiceSensor.java) | 3 | ||||
-rw-r--r-- | plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java | 4 | ||||
-rw-r--r-- | sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/highlighting/HighlightingMediumTest.java | 27 |
7 files changed, 33 insertions, 74 deletions
diff --git a/it/it-plugins/batch-plugin/src/main/java/com/sonarsource/BatchPlugin.java b/it/it-plugins/batch-plugin/src/main/java/com/sonarsource/BatchPlugin.java index aebd9e9b10b..5bc5ee622af 100644 --- a/it/it-plugins/batch-plugin/src/main/java/com/sonarsource/BatchPlugin.java +++ b/it/it-plugins/batch-plugin/src/main/java/com/sonarsource/BatchPlugin.java @@ -41,8 +41,7 @@ public class BatchPlugin implements Plugin { DumpSettingsInitializer.class, RaiseMessageException.class, TempFolderExtension.class, - WaitingSensor.class, - SaveDataTwiceSensor.class + WaitingSensor.class )); } } diff --git a/it/it-tests/src/test/java/it/Category3Suite.java b/it/it-tests/src/test/java/it/Category3Suite.java index c8037bb5d77..9a4d76d0ed3 100644 --- a/it/it-tests/src/test/java/it/Category3Suite.java +++ b/it/it-tests/src/test/java/it/Category3Suite.java @@ -71,7 +71,7 @@ public class Category3Suite { // Used by IssuesModeTest .addPlugin(pluginArtifact("access-secured-props-plugin")) - // used by TempFolderTest, DecimalScaleMetricTest and SaveDataTwiceTest + // used by TempFolderTest and DecimalScaleMetricTest .addPlugin(pluginArtifact("batch-plugin")) // used by ExtensionLifecycleTest diff --git a/it/it-tests/src/test/java/it/analysis/SaveDataTwiceTest.java b/it/it-tests/src/test/java/it/analysis/SaveDataTwiceTest.java deleted file mode 100644 index 1284df1c4c4..00000000000 --- a/it/it-tests/src/test/java/it/analysis/SaveDataTwiceTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2016 SonarSource SA - * mailto:contact AT sonarsource DOT com - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ -package it.analysis; - -import java.io.IOException; - -import org.junit.ClassRule; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.rules.TemporaryFolder; - -import com.sonar.orchestrator.Orchestrator; -import com.sonar.orchestrator.build.BuildResult; -import com.sonar.orchestrator.build.SonarScanner; - -import static org.assertj.core.api.Assertions.*; - -import it.Category3Suite; -import util.ItUtils; - -public class SaveDataTwiceTest { - @ClassRule - public static Orchestrator orchestrator = Category3Suite.ORCHESTRATOR; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Rule - public TemporaryFolder temp = new TemporaryFolder(); - - // SONAR-7783 - @Test - public void should_create_in_temp_folder() throws IOException { - BuildResult scan = scan("sonar.it.savedatatwice", "true"); - assertThat(scan.isSuccess()).isFalse(); - assertThat(scan.getLogs()).contains("Trying to save highlighting twice for the same file is not supported"); - } - - private BuildResult scan(String... props) { - SonarScanner runner = configureScanner(props); - return orchestrator.executeBuildQuietly(runner); - } - - private SonarScanner configureScanner(String... props) { - return SonarScanner.create(ItUtils.projectDir("shared/xoo-sample")) - .setProperties(props); - } -} diff --git a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java index 38127ef52a3..870992596e7 100644 --- a/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/XooPlugin.java @@ -47,6 +47,7 @@ import org.sonar.xoo.rule.OneIssuePerLineSensor; import org.sonar.xoo.rule.OneIssuePerModuleSensor; import org.sonar.xoo.rule.OneVulnerabilityIssuePerModuleSensor; import org.sonar.xoo.rule.RandomAccessSensor; +import org.sonar.xoo.rule.SaveDataTwiceSensor; import org.sonar.xoo.rule.Xoo2BasicProfile; import org.sonar.xoo.rule.XooBasicProfile; import org.sonar.xoo.rule.XooEmptyProfile; @@ -97,6 +98,7 @@ public class XooPlugin implements Plugin { ChecksSensor.class, RandomAccessSensor.class, DeprecatedResourceApiSensor.class, + SaveDataTwiceSensor.class, OneBlockerIssuePerFileSensor.class, OneIssuePerLineSensor.class, diff --git a/it/it-plugins/batch-plugin/src/main/java/com/sonarsource/SaveDataTwiceSensor.java b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/SaveDataTwiceSensor.java index b75961e8862..4233bb72463 100644 --- a/it/it-plugins/batch-plugin/src/main/java/com/sonarsource/SaveDataTwiceSensor.java +++ b/plugins/sonar-xoo-plugin/src/main/java/org/sonar/xoo/rule/SaveDataTwiceSensor.java @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package com.sonarsource; +package org.sonar.xoo.rule; import java.util.Iterator; @@ -58,5 +58,4 @@ public class SaveDataTwiceSensor implements Sensor { .highlight(file.selectLine(file.lines()), TypeOfText.COMMENT) .save(); } - } diff --git a/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java b/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java index 6257dea6f92..b9255f056d8 100644 --- a/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java +++ b/plugins/sonar-xoo-plugin/src/test/java/org/sonar/xoo/XooPluginTest.java @@ -35,10 +35,10 @@ public class XooPluginTest { public void provide_extensions_for_5_5() { Plugin.Context context = new Plugin.Context(new SonarRuntime(Version.parse("5.5"), SonarProduct.SONARQUBE, SonarQubeSide.SCANNER)); new XooPlugin().define(context); - assertThat(context.getExtensions()).hasSize(40).contains(CpdTokenizerSensor.class); + assertThat(context.getExtensions()).hasSize(41).contains(CpdTokenizerSensor.class); context = new Plugin.Context(new SonarRuntime(Version.parse("5.4"), SonarProduct.SONARLINT, null)); new XooPlugin().define(context); - assertThat(context.getExtensions()).hasSize(39).doesNotContain(CpdTokenizerSensor.class); + assertThat(context.getExtensions()).hasSize(40).doesNotContain(CpdTokenizerSensor.class); } } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/highlighting/HighlightingMediumTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/highlighting/HighlightingMediumTest.java index aa07798bfaa..e44b7085951 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/highlighting/HighlightingMediumTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/mediumtest/highlighting/HighlightingMediumTest.java @@ -93,6 +93,31 @@ public class HighlightingMediumTest { } @Test + public void saveTwice() throws IOException { + File baseDir = temp.newFolder(); + File srcDir = new File(baseDir, "src"); + srcDir.mkdir(); + + File xooFile = new File(srcDir, "sample.xoo"); + FileUtils.write(xooFile, "Sample xoo\ncontent plop"); + + exception.expect(UnsupportedOperationException.class); + exception.expectMessage("Trying to save highlighting twice for the same file is not supported"); + tester.newTask() + .properties(ImmutableMap.<String, String>builder() + .put("sonar.projectBaseDir", baseDir.getAbsolutePath()) + .put("sonar.projectKey", "com.foo.project") + .put("sonar.projectName", "Foo Project") + .put("sonar.projectVersion", "1.0-SNAPSHOT") + .put("sonar.projectDescription", "Description of Foo Project") + .put("sonar.sources", "src") + .put("sonar.it.savedatatwice", "true") + .build()) + .start(); + + } + + @Test public void computeInvalidOffsets() throws IOException { File baseDir = temp.newFolder(); @@ -118,7 +143,7 @@ public class HighlightingMediumTest { } }); - TaskResult result = tester.newTask() + tester.newTask() .properties(ImmutableMap.<String, String>builder() .put("sonar.projectBaseDir", baseDir.getAbsolutePath()) .put("sonar.projectKey", "com.foo.project") |