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;
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;
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
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;
@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);
*/
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;
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;
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]);
@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]);
@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]);
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();
+ }
+
}