aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/assembly/conf/sonar-runner.properties3
-rw-r--r--src/main/java/org/sonar/runner/Main.java2
-rw-r--r--src/main/java/org/sonar/runner/Runner.java20
-rw-r--r--src/test/java/org/sonar/runner/RunnerTest.java16
4 files changed, 37 insertions, 4 deletions
diff --git a/src/main/assembly/conf/sonar-runner.properties b/src/main/assembly/conf/sonar-runner.properties
index 4a5154d..0a0bb2e 100644
--- a/src/main/assembly/conf/sonar-runner.properties
+++ b/src/main/assembly/conf/sonar-runner.properties
@@ -22,4 +22,5 @@
#tests=src/test/java
#binaries=target/classes
-sonar.sourceEncoding=UTF-8
+#----- Default source code encoding
+#sonar.sourceEncoding=UTF-8
diff --git a/src/main/java/org/sonar/runner/Main.java b/src/main/java/org/sonar/runner/Main.java
index 09a4c01..ee3449b 100644
--- a/src/main/java/org/sonar/runner/Main.java
+++ b/src/main/java/org/sonar/runner/Main.java
@@ -25,6 +25,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.util.Locale;
import java.util.Properties;
/**
@@ -68,6 +69,7 @@ public final class Main {
Logs.info("Java version: " + System.getProperty("java.version", "<unknown>")
+ ", vendor: " + System.getProperty("java.vendor", "<unknown>"));
Logs.info("OS name: \"" + System.getProperty("os.name") + "\", version: \"" + System.getProperty("os.version") + "\", arch: \"" + System.getProperty("os.arch") + "\"");
+ Logs.info("Default locale: \"" + Locale.getDefault() + "\", source code encoding: \"" + runner.getSourceCodeEncoding() + "\"");
if (debugMode) {
Logs.info("Other system properties:");
Logs.info(" - sun.arch.data.model: \"" + System.getProperty("sun.arch.data.model") + "\"");
diff --git a/src/main/java/org/sonar/runner/Runner.java b/src/main/java/org/sonar/runner/Runner.java
index 6c4e6df..e17face 100644
--- a/src/main/java/org/sonar/runner/Runner.java
+++ b/src/main/java/org/sonar/runner/Runner.java
@@ -25,6 +25,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -102,6 +103,8 @@ public final class Runner {
*/
private static final String[] UNSUPPORTED_VERSIONS = {"1", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10"};
+ private static final String PROPERTY_SOURCE_ENCODING = "sonar.sourceEncoding";
+
private File projectDir;
private File workDir;
private String[] unmaskedPackages;
@@ -114,6 +117,10 @@ public final class Runner {
// set the default values for the Sonar Runner - they can be overriden with #setEnvironmentInformation
this.properties.put(PROPERTY_ENVIRONMENT_INFORMATION_KEY, "Runner");
this.properties.put(PROPERTY_ENVIRONMENT_INFORMATION_VERSION, Version.getVersion());
+ // sets the encoding if not forced
+ if (!properties.containsKey(PROPERTY_SOURCE_ENCODING)) {
+ properties.setProperty(PROPERTY_SOURCE_ENCODING, Charset.defaultCharset().name());
+ }
// and init the directories
initDirs();
}
@@ -187,6 +194,13 @@ public final class Runner {
}
/**
+ * @return the source code encoding that will be used by Sonar
+ */
+ public String getSourceCodeEncoding() {
+ return properties.getProperty(PROPERTY_SOURCE_ENCODING);
+ }
+
+ /**
* @return global properties, project properties and command-line properties
*/
protected Properties getProperties() {
@@ -204,9 +218,9 @@ public final class Runner {
private BootstrapClassLoader createClassLoader(Bootstrapper bootstrapper) {
URL url = getJarPath();
return bootstrapper.createClassLoader(
- new URL[]{url}, // Add JAR with Sonar Runner - it's a Jar which contains this class
- getClass().getClassLoader(),
- unmaskedPackages);
+ new URL[] {url}, // Add JAR with Sonar Runner - it's a Jar which contains this class
+ getClass().getClassLoader(),
+ unmaskedPackages);
}
/**
diff --git a/src/test/java/org/sonar/runner/RunnerTest.java b/src/test/java/org/sonar/runner/RunnerTest.java
index 6313aaa..47c3c5c 100644
--- a/src/test/java/org/sonar/runner/RunnerTest.java
+++ b/src/test/java/org/sonar/runner/RunnerTest.java
@@ -25,6 +25,7 @@ import org.junit.rules.ExpectedException;
import org.sonar.test.TestUtils;
import java.io.File;
+import java.nio.charset.Charset;
import java.util.Properties;
import static org.fest.assertions.Assertions.assertThat;
@@ -37,6 +38,21 @@ public class RunnerTest {
public ExpectedException thrown = ExpectedException.none();
@Test
+ public void shouldHaveDefaultEncodingIfNotForce() {
+ Runner runner = Runner.create(new Properties());
+ assertThat(runner.getSourceCodeEncoding()).isEqualTo(Charset.defaultCharset().name());
+ }
+
+ @Test
+ public void shouldKeepEncodingIfSpecified() {
+ Properties props = new Properties();
+ // Yeah, windows charset!
+ props.setProperty("sonar.sourceEncoding", "cp1252");
+ Runner runner = Runner.create(props);
+ assertThat(runner.getSourceCodeEncoding()).isEqualTo("cp1252");
+ }
+
+ @Test
public void shouldHaveDefaultEnvironmentInformationValues() {
Runner runner = Runner.create(new Properties());
assertThat(runner.getProperties().getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_KEY)).isEqualTo("Runner");