]> source.dussan.org Git - sonar-scanner-cli.git/commitdiff
Allows to overwrite environment information on the Runner
authorFabrice Bellingard <fabrice.bellingard@sonarsource.com>
Fri, 7 Sep 2012 08:21:17 +0000 (10:21 +0200)
committerFabrice Bellingard <fabrice.bellingard@sonarsource.com>
Fri, 7 Sep 2012 08:21:17 +0000 (10:21 +0200)
src/main/java/org/sonar/runner/Runner.java
src/main/java/org/sonar/runner/model/Launcher.java
src/test/java/org/sonar/runner/RunnerTest.java

index a24ae84337e53cf3ce71d667270153b482b80394..dc751150b9a728783ab519f67cb82808ebbae111 100644 (file)
@@ -37,7 +37,8 @@ import java.util.Properties;
 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
@@ -67,6 +68,10 @@ public final class Runner {
 
   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();
   }
 
@@ -75,9 +80,7 @@ public final class Runner {
   }
 
   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));
   }
@@ -185,4 +188,15 @@ public final class Runner {
       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);
+  }
 }
index 24202a3575dc4cbd021f0cdfc149eda38f8b5fd8..cfa14b33c4f5d86fd74a8bd8b3222300d1de1b43 100644 (file)
@@ -68,8 +68,9 @@ public class Launcher {
 
   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();
   }
 
index abcd46d727cce4dae38a02a240eab5d9918d8a30..c5b1b7b0a8b6e4ecac7b75d83044acf30988fa8e 100644 (file)
@@ -37,6 +37,22 @@ public class RunnerTest {
   @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();