From b44d326f80ee44dc972aaa371c9d5722cfefcef2 Mon Sep 17 00:00:00 2001 From: Fabrice Bellingard Date: Thu, 20 Sep 2012 18:37:20 +0200 Subject: [PATCH] SONAR-3726 Cobertura Sensor should not execute if non Java project --- .../plugins/cobertura/CoberturaSensor.java | 2 +- .../cobertura/CoberturaSensorTest.java | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java index 11ec1de43a3..31ce963af74 100644 --- a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java +++ b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java @@ -35,7 +35,7 @@ import java.io.File; public class CoberturaSensor implements Sensor, CoverageExtension { public boolean shouldExecuteOnProject(Project project) { - return !project.getFileSystem().mainFiles(Java.KEY).isEmpty(); + return Java.KEY.equals(project.getLanguageKey()) && project.getAnalysisType().isDynamic(true); } public void analyse(Project project, SensorContext context) { diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java index 83db39159c6..adb06be473f 100644 --- a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java +++ b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java @@ -25,6 +25,7 @@ import org.sonar.api.CoreProperties; import org.sonar.api.batch.SensorContext; import org.sonar.api.measures.CoreMetrics; import org.sonar.api.measures.Measure; +import org.sonar.api.resources.Java; import org.sonar.api.resources.JavaFile; import org.sonar.api.resources.JavaPackage; import org.sonar.api.resources.Project; @@ -39,6 +40,8 @@ import java.io.File; import java.net.URISyntaxException; import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyDouble; import static org.mockito.Matchers.anyString; @@ -60,6 +63,30 @@ public class CoberturaSensorTest { sensor = new CoberturaSensor(); } + @Test + public void shouldNotAnalyseIfNoJavaProject() { + Project project = mock(Project.class); + when(project.getLanguageKey()).thenReturn("php"); + when(project.getAnalysisType()).thenReturn(Project.AnalysisType.DYNAMIC); + assertFalse(sensor.shouldExecuteOnProject(project)); + } + + @Test + public void shouldNotAnalyseIfStaticAnalysis() { + Project project = mock(Project.class); + when(project.getLanguageKey()).thenReturn(Java.KEY); + when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC); + assertFalse(sensor.shouldExecuteOnProject(project)); + } + + @Test + public void shouldAnalyseIfReuseDynamicReports() { + Project project = mock(Project.class); + when(project.getLanguageKey()).thenReturn(Java.KEY); + when(project.getAnalysisType()).thenReturn(Project.AnalysisType.REUSE_REPORTS); + assertThat(sensor.shouldExecuteOnProject(project), is(true)); + } + @Test public void shouldNotFailIfReportNotSpecifiedOrNotFound() { ProjectFileSystem pfs = mock(ProjectFileSystem.class); -- 2.39.5