]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6108 Keep batch report if debug mode is enabled
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Thu, 29 Oct 2015 08:54:36 +0000 (09:54 +0100)
committerDuarte Meneses <duarte.meneses@sonarsource.com>
Tue, 3 Nov 2015 09:14:38 +0000 (10:14 +0100)
it/it-tests/src/test/java/it/analysis/BatchTest.java
sonar-batch/src/main/java/org/sonar/batch/report/ReportPublisher.java
sonar-batch/src/test/java/org/sonar/batch/report/ReportPublisherTest.java

index f6a2e5bb19998561693b793bfd60a830319d25ff..e558ca8d94265c6bff8cfdea2542414096b61b1b 100644 (file)
@@ -325,6 +325,17 @@ public class BatchTest {
     assertThat(result.getLogs()).doesNotContain("Download sonar-xoo-plugin-");
   }
 
+  @Test
+  public void batch_should_keep_report_verbose() {
+    orchestrator.getServer().provisionProject("sample", "xoo-sample");
+    orchestrator.getServer().associateProjectToQualityProfile("sample", "xoo", "one-issue-per-line");
+
+    scanQuietly("shared/xoo-sample", "sonar.verbose", "true");
+    File reportDir = new File(new File(ItUtils.projectDir("shared/xoo-sample"), ".sonar"), "batch-report");
+    assertThat(reportDir).isDirectory();
+    assertThat(reportDir.list()).isNotEmpty();
+  }
+
   /**
    * SONAR-4239
    */
index cf5030fac07655e9fc0964df5ee12b779e1d3571..ef1790ce8adf6b6086957ba5f4e052f38eca91a0 100644 (file)
@@ -22,6 +22,7 @@ package org.sonar.batch.report;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gson.Gson;
+
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -29,8 +30,10 @@ import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Date;
+
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
+
 import org.apache.commons.io.FileUtils;
 import org.picocontainer.Startable;
 import org.slf4j.Logger;
@@ -47,7 +50,6 @@ import org.sonar.batch.bootstrap.ServerClient;
 import org.sonar.batch.protocol.output.BatchReportWriter;
 import org.sonar.batch.scan.ImmutableProjectReactor;
 import org.sonar.batch.util.BatchUtils;
-
 import static java.lang.String.format;
 
 @BatchSide
@@ -55,6 +57,7 @@ public class ReportPublisher implements Startable {
 
   private static final Logger LOG = LoggerFactory.getLogger(ReportPublisher.class);
   public static final String KEEP_REPORT_PROP_KEY = "sonar.batch.keepReport";
+  public static final String VERBOSE_KEY = "sonar.verbose";
   public static final String DUMP_REPORT_PROP_KEY = "sonar.batch.dumpReportDir";
 
   private final ServerClient serverClient;
@@ -91,7 +94,7 @@ public class ReportPublisher implements Startable {
 
   @Override
   public void stop() {
-    if (!settings.getBoolean(KEEP_REPORT_PROP_KEY)) {
+    if (!settings.getBoolean(KEEP_REPORT_PROP_KEY) && !settings.getBoolean(VERBOSE_KEY)) {
       FileUtils.deleteQuietly(reportDir);
     } else {
       LOG.info("Batch report generated in " + reportDir);
index c12e616e863e47aabd8f47a45a5edb9925e89845..93582aa6d7d056df2a1400445a3b7e333822e1aa 100644 (file)
  */
 package org.sonar.batch.report;
 
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -30,7 +39,6 @@ import org.sonar.api.utils.TempFolder;
 import org.sonar.batch.analysis.DefaultAnalysisMode;
 import org.sonar.batch.bootstrap.ServerClient;
 import org.sonar.batch.scan.ImmutableProjectReactor;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -42,16 +50,24 @@ public class ReportPublisherTest {
 
   private ImmutableProjectReactor reactor;
 
+  private Settings settings;
+
+  private ProjectDefinition root;
+
+  @Rule
+  public TemporaryFolder temp = new TemporaryFolder();
+
   @Before
   public void setUp() {
+    settings = new Settings();
     mode = mock(DefaultAnalysisMode.class);
     reactor = mock(ImmutableProjectReactor.class);
-    when(reactor.getRoot()).thenReturn(ProjectDefinition.create().setKey("struts"));
+    root = ProjectDefinition.create().setKey("struts").setWorkDir(temp.getRoot());
+    when(reactor.getRoot()).thenReturn(root);
   }
 
   @Test
   public void should_log_successful_analysis() {
-    Settings settings = new Settings();
     settings.setProperty(CoreProperties.SERVER_BASE_URL, "http://myserver/");
     ReportPublisher job = new ReportPublisher(settings, mock(ServerClient.class), mock(Server.class), mock(AnalysisContextReportPublisher.class), reactor, mode,
       mock(TempFolder.class), new ReportPublisherStep[0]);
@@ -66,7 +82,6 @@ public class ReportPublisherTest {
 
   @Test
   public void should_log_successful_analysis_with_ce_task() {
-    Settings settings = new Settings();
     settings.setProperty(CoreProperties.SERVER_BASE_URL, "http://myserver/");
     ReportPublisher job = new ReportPublisher(settings, mock(ServerClient.class), mock(Server.class), mock(AnalysisContextReportPublisher.class), reactor, mode,
       mock(TempFolder.class), new ReportPublisherStep[0]);
@@ -82,7 +97,6 @@ public class ReportPublisherTest {
 
   @Test
   public void should_log_successful_issues_analysis() {
-    Settings settings = new Settings();
     when(mode.isIssues()).thenReturn(true);
     ReportPublisher job = new ReportPublisher(settings, mock(ServerClient.class), mock(Server.class), mock(AnalysisContextReportPublisher.class), reactor, mode,
       mock(TempFolder.class), new ReportPublisherStep[0]);
@@ -94,4 +108,29 @@ public class ReportPublisherTest {
     verifyNoMoreInteractions(logger);
   }
 
+  @Test
+  public void should_not_delete_report() throws IOException {
+    settings.setProperty("sonar.verbose", true);
+    Path reportDir = temp.getRoot().toPath().resolve("batch-report");
+    Files.createDirectory(reportDir);
+    ReportPublisher job = new ReportPublisher(settings, mock(ServerClient.class), mock(Server.class), mock(AnalysisContextReportPublisher.class), reactor, mode,
+      mock(TempFolder.class), new ReportPublisherStep[0]);
+
+    job.start();
+    job.stop();
+    assertThat(reportDir).isDirectory();
+  }
+
+  @Test
+  public void should_delete_report() throws IOException {
+    Path reportDir = temp.getRoot().toPath().resolve("batch-report");
+    Files.createDirectory(reportDir);
+    ReportPublisher job = new ReportPublisher(settings, mock(ServerClient.class), mock(Server.class), mock(AnalysisContextReportPublisher.class), reactor, mode,
+      mock(TempFolder.class), new ReportPublisherStep[0]);
+
+    job.start();
+    job.stop();
+    assertThat(reportDir).doesNotExist();
+  }
+
 }