]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-7489 Empty branch should be considered as no branch 868/head
authorJulien HENRY <julien.henry@sonarsource.com>
Thu, 24 Mar 2016 13:28:51 +0000 (14:28 +0100)
committerJulien HENRY <julien.henry@sonarsource.com>
Thu, 24 Mar 2016 15:01:55 +0000 (16:01 +0100)
sonar-scanner-engine/src/main/java/org/sonar/batch/report/MetadataPublisher.java
sonar-scanner-engine/src/test/java/org/sonar/batch/mediumtest/branch/BranchMediumTest.java [new file with mode: 0644]

index 489d71fd7d5ac67fc196b588fdf9f5541cf38d5d..6a6f275a480013381034adabf9c445aa6e4cbc13 100644 (file)
@@ -19,7 +19,6 @@
  */
 package org.sonar.batch.report;
 
-import org.sonar.api.CoreProperties;
 import org.sonar.api.batch.bootstrap.ProjectDefinition;
 import org.sonar.api.config.Settings;
 import org.sonar.api.resources.Project;
@@ -56,7 +55,7 @@ public class MetadataPublisher implements ReportPublisherStep {
       .setProjectKey(root.getKey())
       .setCrossProjectDuplicationActivated(SonarCpdBlockIndex.isCrossProjectDuplicationEnabled(settings))
       .setRootComponentRef(rootProject.batchId());
-    String branch = root.properties().get(CoreProperties.PROJECT_BRANCH_PROPERTY);
+    String branch = root.getBranch();
     if (branch != null) {
       builder.setBranch(branch);
     }
diff --git a/sonar-scanner-engine/src/test/java/org/sonar/batch/mediumtest/branch/BranchMediumTest.java b/sonar-scanner-engine/src/test/java/org/sonar/batch/mediumtest/branch/BranchMediumTest.java
new file mode 100644 (file)
index 0000000..a0bd7cd
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * 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 org.sonar.batch.mediumtest.branch;
+
+import com.google.common.collect.ImmutableMap;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Map;
+import org.apache.commons.io.FileUtils;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.rules.TemporaryFolder;
+import org.sonar.batch.mediumtest.BatchMediumTester;
+import org.sonar.batch.mediumtest.TaskResult;
+import org.sonar.xoo.XooPlugin;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class BranchMediumTest {
+
+  @Rule
+  public TemporaryFolder temp = new TemporaryFolder();
+
+  @Rule
+  public ExpectedException thrown = ExpectedException.none();
+
+  public BatchMediumTester tester = BatchMediumTester.builder()
+    .registerPlugin("xoo", new XooPlugin())
+    .addDefaultQProfile("xoo", "Sonar Way")
+    .build();
+
+  private File baseDir;
+
+  private Map<String, String> commonProps;
+
+  @Before
+  public void prepare() throws IOException {
+    tester.start();
+
+    baseDir = temp.getRoot();
+
+    commonProps = ImmutableMap.<String, String>builder()
+      .put("sonar.task", "scan")
+      .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")
+      .build();
+  }
+
+  @After
+  public void stop() {
+    tester.stop();
+  }
+
+  @Test
+  public void scanProjectWithBranch() throws IOException {
+    File srcDir = new File(baseDir, "src");
+    srcDir.mkdir();
+
+    File xooFile = new File(srcDir, "sample.xoo");
+    FileUtils.write(xooFile, "Sample xoo\ncontent");
+
+    TaskResult result = tester.newTask()
+      .properties(ImmutableMap.<String, String>builder()
+        .putAll(commonProps)
+        .put("sonar.branch", "branch")
+        .build())
+      .start();
+
+    assertThat(result.inputFiles()).hasSize(1);
+    assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:branch:src/sample.xoo");
+
+    result = tester.newTask()
+      .properties(ImmutableMap.<String, String>builder()
+        .putAll(commonProps)
+        .put("sonar.branch", "")
+        .build())
+      .start();
+
+    assertThat(result.inputFiles()).hasSize(1);
+    assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:src/sample.xoo");
+  }
+
+  @Test
+  public void scanMultiModuleWithBranch() throws IOException {
+    Path srcDir = baseDir.toPath().resolve("moduleA").resolve("src");
+    Files.createDirectories(srcDir);
+
+    File xooFile = new File(srcDir.toFile(), "sample.xoo");
+    FileUtils.write(xooFile, "Sample xoo\ncontent");
+
+    TaskResult result = tester.newTask()
+      .properties(ImmutableMap.<String, String>builder()
+        .putAll(commonProps)
+        .put("sonar.branch", "branch")
+        .put("sonar.modules", "moduleA")
+        .build())
+      .start();
+
+    assertThat(result.inputFiles()).hasSize(1);
+    assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:moduleA:branch:src/sample.xoo");
+
+    result = tester.newTask()
+      .properties(ImmutableMap.<String, String>builder()
+        .putAll(commonProps)
+        .put("sonar.branch", "")
+        .put("sonar.modules", "moduleA")
+        .build())
+      .start();
+
+    assertThat(result.inputFiles()).hasSize(1);
+    assertThat(result.inputFile("src/sample.xoo").key()).isEqualTo("com.foo.project:moduleA:src/sample.xoo");
+  }
+
+}