aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-css-plugin/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-css-plugin/src/test')
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java53
-rw-r--r--sonar-css-plugin/src/test/java/org/sonar/css/plugin/server/CssAnalyzerBridgeServerTest.java8
-rw-r--r--sonar-css-plugin/src/test/resources/mock-start-server/startServer.js11
-rw-r--r--sonar-css-plugin/src/test/resources/mock-start-server/testLogs.js19
4 files changed, 80 insertions, 11 deletions
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java
index 0dd35d8..0b37c92 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/CssRuleSensorTest.java
@@ -35,13 +35,14 @@ import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
import org.sonar.api.batch.fs.InputFile;
-import org.sonar.api.batch.fs.InputFile.Type;
import org.sonar.api.batch.fs.internal.DefaultInputFile;
import org.sonar.api.batch.fs.internal.TestInputFileBuilder;
import org.sonar.api.batch.rule.CheckFactory;
import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor;
import org.sonar.api.batch.sensor.internal.SensorContextTester;
+import org.sonar.api.internal.SonarRuntimeImpl;
import org.sonar.api.notifications.AnalysisWarnings;
+import org.sonar.api.utils.Version;
import org.sonar.api.utils.log.LogTester;
import org.sonar.api.utils.log.LoggerLevel;
import org.sonar.css.plugin.server.CssAnalyzerBridgeServer;
@@ -260,10 +261,56 @@ public class CssRuleSensorTest {
assertThat(logTester.logs(LoggerLevel.ERROR)).contains("Unknown stylelint rule or rule not enabled: 'unknown-rule-key'");
}
+ @Test
+ public void should_not_send_file_content_if_encoding_is_utf8_and_context_is_not_sonarlint() throws IOException {
+ String filePath = "copy-file-content-into-issue-message.css";
+ DefaultInputFile inputFile = new TestInputFileBuilder("moduleKey", filePath)
+ .setLanguage(CssLanguage.KEY)
+ .setCharset(StandardCharsets.UTF_8)
+ .setContents("css content")
+ .build();
+ context.fileSystem().add(inputFile);
+ sensor.execute(context);
+
+ assertThat(context.allIssues()).hasSize(1);
+ assertThat(context.allIssues()).extracting("primaryLocation.message")
+ .containsOnly("undefined");
+ }
+
+ @Test
+ public void should_send_file_content_if_encoding_is_not_utf8() throws IOException {
+ String filePath = "copy-file-content-into-issue-message.css";
+ DefaultInputFile inputFile = new TestInputFileBuilder("moduleKey", filePath)
+ .setLanguage(CssLanguage.KEY)
+ .setCharset(StandardCharsets.ISO_8859_1)
+ .setContents("css content")
+ .build();
+ context.fileSystem().add(inputFile);
+ sensor.execute(context);
+
+ assertThat(context.allIssues()).hasSize(1);
+ assertThat(context.allIssues()).extracting("primaryLocation.message")
+ .containsOnly("css content");
+ }
+
+ @Test
+ public void should_send_file_content_if_context_is_sonarlint() throws IOException {
+ String filePath = "copy-file-content-into-issue-message.css";
+ DefaultInputFile inputFile = new TestInputFileBuilder("moduleKey", filePath)
+ .setLanguage(CssLanguage.KEY)
+ .setCharset(StandardCharsets.UTF_8)
+ .setContents("css content")
+ .build();
+ context.fileSystem().add(inputFile);
+ context.setRuntime(SonarRuntimeImpl.forSonarLint(Version.create(7, 9)));
+ sensor.execute(context);
+ assertThat(context.allIssues()).hasSize(1);
+ assertThat(context.allIssues()).extracting("primaryLocation.message")
+ .containsOnly("css content");
+ }
+
private DefaultInputFile addInputFile(String relativePath) {
DefaultInputFile inputFile = new TestInputFileBuilder("moduleKey", relativePath)
- .setModuleBaseDir(context.fileSystem().baseDirPath())
- .setType(Type.MAIN)
.setLanguage(relativePath.split("\\.")[1])
.setCharset(StandardCharsets.UTF_8)
.setContents("some css content\n on 2 lines")
diff --git a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/server/CssAnalyzerBridgeServerTest.java b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/server/CssAnalyzerBridgeServerTest.java
index 302b6bb..45ae8ae 100644
--- a/sonar-css-plugin/src/test/java/org/sonar/css/plugin/server/CssAnalyzerBridgeServerTest.java
+++ b/sonar-css-plugin/src/test/java/org/sonar/css/plugin/server/CssAnalyzerBridgeServerTest.java
@@ -120,7 +120,7 @@ public class CssAnalyzerBridgeServerTest {
@Test
public void should_forward_process_streams() throws Exception {
- cssAnalyzerBridgeServer = createCssAnalyzerBridgeServer();
+ cssAnalyzerBridgeServer = createCssAnalyzerBridgeServer("testLogs.js");
cssAnalyzerBridgeServer.startServerLazily(context);
assertThat(logTester.logs(DEBUG)).contains("testing debug log");
@@ -133,14 +133,14 @@ public class CssAnalyzerBridgeServerTest {
cssAnalyzerBridgeServer = createCssAnalyzerBridgeServer();
cssAnalyzerBridgeServer.startServerLazily(context);
- Request request = new Request("/absolute/path/file.css", CONFIG_FILE);
+ Request request = new Request("/absolute/path/file.css", null, CONFIG_FILE);
Issue[] issues = cssAnalyzerBridgeServer.analyze(request);
assertThat(issues).hasSize(1);
assertThat(issues[0].line).isEqualTo(2);
assertThat(issues[0].rule).isEqualTo("block-no-empty");
assertThat(issues[0].text).isEqualTo("Unexpected empty block");
- request = new Request("/absolute/path/empty.css", CONFIG_FILE);
+ request = new Request("/absolute/path/empty.css", null, CONFIG_FILE);
issues = cssAnalyzerBridgeServer.analyze(request);
assertThat(issues).isEmpty();
}
@@ -217,7 +217,7 @@ public class CssAnalyzerBridgeServerTest {
DefaultInputFile inputFile = TestInputFileBuilder.create("foo", "invalid-json-response.css")
.build();
- Request request = new Request(inputFile.absolutePath(), CONFIG_FILE);
+ Request request = new Request(inputFile.absolutePath(), null, CONFIG_FILE);
assertThatThrownBy(() -> cssAnalyzerBridgeServer.analyze(request)).isInstanceOf(IllegalStateException.class);
assertThat(context.allIssues()).isEmpty();
}
diff --git a/sonar-css-plugin/src/test/resources/mock-start-server/startServer.js b/sonar-css-plugin/src/test/resources/mock-start-server/startServer.js
index c8b8d38..f7f40c5 100644
--- a/sonar-css-plugin/src/test/resources/mock-start-server/startServer.js
+++ b/sonar-css-plugin/src/test/resources/mock-start-server/startServer.js
@@ -3,10 +3,6 @@
const http = require('http');
const port = process.argv[2];
-console.log(`DEBUG testing debug log`)
-console.log(`WARN testing warn log`)
-console.log(`testing info log`)
-
const requestHandler = (request, response) => {
let data = [];
request.on('data', chunk => {
@@ -14,9 +10,11 @@ const requestHandler = (request, response) => {
});
request.on('end', () => {
let fileName = null;
+ let fileContent = null;
if (data.length > 0) {
const analysisRequest = JSON.parse(data.join());
fileName = analysisRequest.filePath.replace(/.*[\/\\]/g,"");
+ fileContent = analysisRequest.fileContent;
}
if (request.url === '/status') {
response.writeHead(200, { 'Content-Type': 'text/plain' });
@@ -52,6 +50,11 @@ const requestHandler = (request, response) => {
case "invalid-json-response.css":
response.end("[");
break;
+ case "copy-file-content-into-issue-message.css":
+ response.end(JSON.stringify([
+ {line: 1, rule: "block-no-empty", text: "" + fileContent}
+ ]));
+ break;
default:
throw "Unexpected fileName: " + fileName;
}
diff --git a/sonar-css-plugin/src/test/resources/mock-start-server/testLogs.js b/sonar-css-plugin/src/test/resources/mock-start-server/testLogs.js
new file mode 100644
index 0000000..8fb5caa
--- /dev/null
+++ b/sonar-css-plugin/src/test/resources/mock-start-server/testLogs.js
@@ -0,0 +1,19 @@
+#!/usr/bin/env node
+
+const http = require('http');
+const port = process.argv[2];
+
+console.log(`DEBUG testing debug log`)
+console.log(`WARN testing warn log`)
+console.log(`testing info log`)
+
+
+const server = http.createServer(() => {});
+
+server.listen(port, (err) => {
+ if (err) {
+ return console.log('something bad happened', err)
+ }
+
+ console.log(`server is listening on ${port}`)
+});