@@ -41,8 +41,7 @@ public class BatchPlugin implements Plugin { | |||
DumpSettingsInitializer.class, | |||
RaiseMessageException.class, | |||
TempFolderExtension.class, | |||
WaitingSensor.class, | |||
SaveDataTwiceSensor.class | |||
WaitingSensor.class | |||
)); | |||
} | |||
} |
@@ -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 |
@@ -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); | |||
} | |||
} |
@@ -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, |
@@ -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(); | |||
} | |||
} |
@@ -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); | |||
} | |||
} |
@@ -92,6 +92,31 @@ public class HighlightingMediumTest { | |||
assertThat(result.highlightingTypeFor(file, 2, 8)).isEmpty(); | |||
} | |||
@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 { | |||
@@ -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") |