<artifactId>sonar-testing-harness</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.easytesting</groupId>
+ <artifactId>fest-assert</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
@Override
public boolean shouldExecuteOnProject(Project project) {
- return project.getAnalysisType().isDynamic(true) &&
- !project.getFileSystem().mainFiles(Java.KEY).isEmpty();
+ return Java.KEY.equals(project.getLanguageKey())
+ && !project.getFileSystem().mainFiles(Java.KEY).isEmpty()
+ && project.getAnalysisType().isDynamic(true);
}
@Override
public class CoberturaSensor implements Sensor, CoverageExtension {
public boolean shouldExecuteOnProject(Project project) {
- return Java.KEY.equals(project.getLanguageKey()) && project.getAnalysisType().isDynamic(true);
+ return Java.KEY.equals(project.getLanguageKey())
+ && !project.getFileSystem().mainFiles(Java.KEY).isEmpty()
+ && project.getAnalysisType().isDynamic(true);
}
public void analyse(Project project, SensorContext context) {
*/
package org.sonar.plugins.cobertura;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.Matchers.nullValue;
-import static org.hamcrest.core.IsNot.not;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
+import com.google.common.collect.Lists;
import org.apache.commons.configuration.Configuration;
import org.apache.maven.project.MavenProject;
import org.junit.Before;
import org.junit.Test;
import org.sonar.api.CoreProperties;
+import org.sonar.api.resources.InputFile;
+import org.sonar.api.resources.InputFileUtils;
import org.sonar.api.resources.Project;
import org.sonar.api.resources.ProjectFileSystem;
import org.sonar.api.test.MavenTestUtils;
import java.io.File;
+import java.util.ArrayList;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.Matchers.nullValue;
+import static org.hamcrest.core.IsNot.not;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
public class CoberturaMavenInitializerTest {
initializer = new CoberturaMavenInitializer(new CoberturaMavenPluginHandler(null));
}
+ @Test
+ public void shouldNotAnalyseIfNoJavaProject() {
+ Project project = mock(Project.class);
+ when(project.getLanguageKey()).thenReturn("php");
+ assertThat(initializer.shouldExecuteOnProject(project)).isFalse();
+ }
+
+ @Test
+ public void shouldNotAnalyseIfJavaProjectButNoSource() {
+ Project project = mock(Project.class);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(new ArrayList<InputFile>());
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
+ assertThat(initializer.shouldExecuteOnProject(project)).isFalse();
+ }
+
+ @Test
+ public void shouldNotAnalyseIfJavaProjectWithSourceButStatic() {
+ Project project = mock(Project.class);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(Lists.newArrayList(InputFileUtils.create(null, "")));
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
+ when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC);
+ assertThat(initializer.shouldExecuteOnProject(project)).isFalse();
+ }
+
+ @Test
+ public void shouldAnalyse() {
+ Project project = mock(Project.class);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(Lists.newArrayList(InputFileUtils.create(null, "")));
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
+ when(project.getAnalysisType()).thenReturn(Project.AnalysisType.DYNAMIC);
+ assertThat(initializer.shouldExecuteOnProject(project)).isTrue();
+ }
+
+ @Test
+ public void shouldAnalyseIfReuseDynamicReports() {
+ Project project = mock(Project.class);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(Lists.newArrayList(InputFileUtils.create(null, "")));
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
+ when(project.getAnalysisType()).thenReturn(Project.AnalysisType.REUSE_REPORTS);
+ assertThat(initializer.shouldExecuteOnProject(project)).isTrue();
+ }
+
@Test
public void doNotExecuteMavenPluginIfReuseReports() {
when(project.getAnalysisType()).thenReturn(Project.AnalysisType.REUSE_REPORTS);
*/
package org.sonar.plugins.cobertura;
+import com.google.common.collect.Lists;
import org.junit.Before;
import org.junit.Test;
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.InputFile;
+import org.sonar.api.resources.InputFileUtils;
import org.sonar.api.resources.JavaFile;
import org.sonar.api.resources.JavaPackage;
import org.sonar.api.resources.Project;
import java.io.File;
import java.net.URISyntaxException;
+import java.util.ArrayList;
+import static org.fest.assertions.Assertions.assertThat;
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;
public void shouldNotAnalyseIfNoJavaProject() {
Project project = mock(Project.class);
when(project.getLanguageKey()).thenReturn("php");
- when(project.getAnalysisType()).thenReturn(Project.AnalysisType.DYNAMIC);
- assertFalse(sensor.shouldExecuteOnProject(project));
+ assertThat(sensor.shouldExecuteOnProject(project)).isFalse();
+ }
+
+ @Test
+ public void shouldNotAnalyseIfJavaProjectButNoSource() {
+ Project project = mock(Project.class);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(new ArrayList<InputFile>());
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
+ assertThat(sensor.shouldExecuteOnProject(project)).isFalse();
}
@Test
- public void shouldNotAnalyseIfStaticAnalysis() {
+ public void shouldNotAnalyseIfJavaProjectWithSourceButStatic() {
Project project = mock(Project.class);
- when(project.getLanguageKey()).thenReturn(Java.KEY);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(Lists.newArrayList(InputFileUtils.create(null, "")));
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC);
- assertFalse(sensor.shouldExecuteOnProject(project));
+ assertThat(sensor.shouldExecuteOnProject(project)).isFalse();
+ }
+
+ @Test
+ public void shouldAnalyse() {
+ Project project = mock(Project.class);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(Lists.newArrayList(InputFileUtils.create(null, "")));
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
+ when(project.getAnalysisType()).thenReturn(Project.AnalysisType.DYNAMIC);
+ assertThat(sensor.shouldExecuteOnProject(project)).isTrue();
}
@Test
public void shouldAnalyseIfReuseDynamicReports() {
Project project = mock(Project.class);
- when(project.getLanguageKey()).thenReturn(Java.KEY);
+ ProjectFileSystem fs = mock(ProjectFileSystem.class);
+ when(fs.mainFiles("java")).thenReturn(Lists.newArrayList(InputFileUtils.create(null, "")));
+ when(project.getFileSystem()).thenReturn(fs);
+ when(project.getLanguageKey()).thenReturn("java");
when(project.getAnalysisType()).thenReturn(Project.AnalysisType.REUSE_REPORTS);
- assertThat(sensor.shouldExecuteOnProject(project), is(true));
+ assertThat(sensor.shouldExecuteOnProject(project)).isTrue();
}
@Test