public final class Runner {
public static final String PROPERTY_PROJECT_DIR = "sonar.runner.projectDir";
- public static final String PROPERTY_RUNNER_VERSION = "sonar.runner.version";
+ public static final String PROPERTY_ENVIRONMENT_INFORMATION_KEY = "sonar.environment.information.key";
+ public static final String PROPERTY_ENVIRONMENT_INFORMATION_VERSION = "sonar.environment.information.version";
/**
* @deprecated Replaced by sonar.verbose since 1.2
private Runner(Properties props) {
this.properties = props;
+ // 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, SonarRunnerVersion.getVersion());
+ // and init the directories
initDirs();
}
}
public void execute() {
- String sonarRunnerVersion = SonarRunnerVersion.getVersion();
- properties.put(PROPERTY_RUNNER_VERSION, sonarRunnerVersion);
- Bootstrapper bootstrapper = new Bootstrapper("SonarRunner/" + sonarRunnerVersion, getSonarServerURL(), getWorkDir());
+ Bootstrapper bootstrapper = new Bootstrapper("SonarRunner/" + SonarRunnerVersion.getVersion(), getSonarServerURL(), getWorkDir());
checkSonarVersion(bootstrapper);
delegateExecution(createClassLoader(bootstrapper));
}
Thread.currentThread().setContextClassLoader(oldContextClassLoader);
}
}
+
+ /**
+ * Allows to overwrite the environment information when Sonar Runner is embedded in a specific tool (for instance, with the Sonar Ant Task).
+ *
+ * @param key the key of the tool that embeds Sonar Runner
+ * @param version the version of this tool
+ */
+ public void setEnvironmentInformation(String key, String version) {
+ this.properties.put(PROPERTY_ENVIRONMENT_INFORMATION_KEY, key);
+ this.properties.put(PROPERTY_ENVIRONMENT_INFORMATION_VERSION, version);
+ }
}
private void executeBatch(ProjectDefinition project, Configuration initialConfiguration) {
ProjectReactor reactor = new ProjectReactor(project);
- String runnerVersion = propertiesFromRunner.getProperty(Runner.PROPERTY_RUNNER_VERSION);
- Batch batch = Batch.create(reactor, initialConfiguration, new EnvironmentInformation("Runner", runnerVersion));
+ String envKey = propertiesFromRunner.getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_KEY);
+ String envVersion = propertiesFromRunner.getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_VERSION);
+ Batch batch = Batch.create(reactor, initialConfiguration, new EnvironmentInformation(envKey, envVersion));
batch.execute();
}
@Rule
public ExpectedException thrown = ExpectedException.none();
+ @Test
+ public void shouldHaveDefaultEnvironmentInformationValues() {
+ Runner runner = Runner.create(new Properties());
+ assertThat(runner.getProperties().getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_KEY)).isEqualTo("Runner");
+ assertThat(runner.getProperties().getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_VERSION)).contains(".");
+ assertThat(runner.getProperties().getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_VERSION)).doesNotContain("$");
+ }
+
+ @Test
+ public void shouldOverwriteDefaultEnvironmentInformationValues() {
+ Runner runner = Runner.create(new Properties());
+ runner.setEnvironmentInformation("Ant", "1.2.3");
+ assertThat(runner.getProperties().getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_KEY)).isEqualTo("Ant");
+ assertThat(runner.getProperties().getProperty(Runner.PROPERTY_ENVIRONMENT_INFORMATION_VERSION)).isEqualTo("1.2.3");
+ }
+
@Test
public void shouldCheckVersion() {
assertThat(Runner.isUnsupportedVersion("1.0")).isTrue();