]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-1808: Add CoberturaUtils
authorGodin <mandrikov@gmail.com>
Wed, 20 Oct 2010 11:10:38 +0000 (11:10 +0000)
committerGodin <mandrikov@gmail.com>
Wed, 20 Oct 2010 11:10:38 +0000 (11:10 +0000)
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/CoberturaSensor.java
plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/CoberturaUtils.java [new file with mode: 0644]
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/CoberturaSensorTest.java
plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/api/CoberturaUtilsTest.java [new file with mode: 0644]

index 3bcf2497ee70802001579427c64041590cfd76be..1cb6061d8ab34b26cbe1da7f06b031c2b7b20847 100644 (file)
 package org.sonar.plugins.cobertura;
 
 import org.slf4j.LoggerFactory;
-import org.sonar.api.CoreProperties;
 import org.sonar.api.batch.AbstractCoverageExtension;
 import org.sonar.api.batch.Sensor;
 import org.sonar.api.batch.SensorContext;
 import org.sonar.api.batch.maven.DependsUponMavenPlugin;
-import org.sonar.api.batch.maven.MavenPlugin;
 import org.sonar.api.batch.maven.MavenPluginHandler;
 import org.sonar.api.resources.JavaFile;
 import org.sonar.api.resources.Project;
 import org.sonar.api.resources.Resource;
 import org.sonar.plugins.cobertura.api.AbstractCoberturaParser;
+import org.sonar.plugins.cobertura.api.CoberturaUtils;
 
 import java.io.File;
 
@@ -48,7 +47,7 @@ public class CoberturaSensor extends AbstractCoverageExtension implements Sensor
   }
 
   public void analyse(Project project, SensorContext context) {
-    File report = getReport(project);
+    File report = CoberturaUtils.getReport(project);
     if (report != null) {
       parseReport(report, context);
     }
@@ -61,46 +60,6 @@ public class CoberturaSensor extends AbstractCoverageExtension implements Sensor
     return null;
   }
 
-  protected File getReport(Project project) {
-    File report = getReportFromProperty(project);
-    if (report == null) {
-      report = getReportFromPluginConfiguration(project);
-    }
-    if (report == null) {
-      report = getReportFromDefaultPath(project);
-    }
-
-    if (report == null || !report.exists() || !report.isFile()) {
-      LoggerFactory.getLogger(CoberturaSensor.class).warn("Cobertura report not found at {}", report);
-      report = null;
-    }
-    return report;
-  }
-
-  private File getReportFromProperty(Project project) {
-    String path = (String) project.getProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY);
-    if (path != null) {
-      return project.getFileSystem().resolvePath(path);
-    }
-    return null;
-  }
-
-  private File getReportFromPluginConfiguration(Project project) {
-    MavenPlugin mavenPlugin = MavenPlugin.getPlugin(project.getPom(), CoberturaMavenPluginHandler.GROUP_ID,
-        CoberturaMavenPluginHandler.ARTIFACT_ID);
-    if (mavenPlugin != null) {
-      String path = mavenPlugin.getParameter("outputDirectory");
-      if (path != null) {
-        return new File(project.getFileSystem().resolvePath(path), "coverage.xml");
-      }
-    }
-    return null;
-  }
-
-  private File getReportFromDefaultPath(Project project) {
-    return new File(project.getFileSystem().getReportOutputDir(), "cobertura/coverage.xml");
-  }
-
   protected void parseReport(File xmlFile, final SensorContext context) {
     LoggerFactory.getLogger(CoberturaSensor.class).info("parsing {}", xmlFile);
     new AbstractCoberturaParser() {
diff --git a/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/CoberturaUtils.java b/plugins/sonar-cobertura-plugin/src/main/java/org/sonar/plugins/cobertura/api/CoberturaUtils.java
new file mode 100644 (file)
index 0000000..e8d7cc1
--- /dev/null
@@ -0,0 +1,58 @@
+package org.sonar.plugins.cobertura.api;
+
+import org.sonar.api.CoreProperties;
+import org.sonar.api.batch.maven.MavenPlugin;
+import org.sonar.api.resources.Project;
+import org.sonar.api.utils.Logs;
+import org.sonar.plugins.cobertura.CoberturaMavenPluginHandler;
+
+import java.io.File;
+
+/**
+ * @since 2.4
+ */
+public final class CoberturaUtils {
+
+  public static File getReport(Project project) {
+    File report = getReportFromProperty(project);
+    if (report == null) {
+      report = getReportFromPluginConfiguration(project);
+    }
+    if (report == null) {
+      report = getReportFromDefaultPath(project);
+    }
+
+    if (report == null || !report.exists() || !report.isFile()) {
+      Logs.INFO.warn("Cobertura report not found at {}", report);
+      report = null;
+    }
+    return report;
+  }
+
+  private static File getReportFromProperty(Project project) {
+    String path = (String) project.getProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY);
+    if (path != null) {
+      return project.getFileSystem().resolvePath(path);
+    }
+    return null;
+  }
+
+  private static File getReportFromPluginConfiguration(Project project) {
+    MavenPlugin mavenPlugin = MavenPlugin.getPlugin(project.getPom(), CoberturaMavenPluginHandler.GROUP_ID, CoberturaMavenPluginHandler.ARTIFACT_ID);
+    if (mavenPlugin != null) {
+      String path = mavenPlugin.getParameter("outputDirectory");
+      if (path != null) {
+        return new File(project.getFileSystem().resolvePath(path), "coverage.xml");
+      }
+    }
+    return null;
+  }
+
+  private static File getReportFromDefaultPath(Project project) {
+    return new File(project.getFileSystem().getReportOutputDir(), "cobertura/coverage.xml");
+  }
+
+  private CoberturaUtils() {
+  }
+
+}
index 6935be5706da983bc2d035c609184521cf07e88a..4a3a5a21b7e4f2b63cef2500280a2dbe10bfbfc1 100644 (file)
  */
 package org.sonar.plugins.cobertura;
 
-import org.apache.maven.project.MavenProject;
-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.*;
-import org.sonar.api.test.IsMeasure;
-import org.sonar.api.test.IsResource;
-import org.sonar.api.test.MavenTestUtils;
-
-import java.io.File;
-import java.net.URISyntaxException;
-
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.Matchers.nullValue;
 import static org.hamcrest.core.IsNot.not;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyDouble;
 import static org.mockito.Matchers.argThat;
 import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.*;
-
-public class CoberturaSensorTest {
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
-  @Test
-  public void shouldGetReportPathFromProperty() throws URISyntaxException {
-    DefaultProjectFileSystem fileSystem = mock(DefaultProjectFileSystem.class);
-    when(fileSystem.resolvePath("foo")).thenReturn(getCoverageReport());
+import org.junit.Test;
+import org.sonar.api.batch.SensorContext;
+import org.sonar.api.measures.CoreMetrics;
+import org.sonar.api.measures.Measure;
+import org.sonar.api.resources.JavaFile;
+import org.sonar.api.resources.JavaPackage;
+import org.sonar.api.resources.Project;
+import org.sonar.api.resources.Resource;
+import org.sonar.api.test.IsMeasure;
+import org.sonar.api.test.IsResource;
 
-    Project project = mock(Project.class);
-    when(project.getFileSystem()).thenReturn(fileSystem);
-    when(project.getProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY)).thenReturn("foo");
+import java.io.File;
+import java.net.URISyntaxException;
 
-    File report = new CoberturaSensor(null).getReport(project);
-    verify(fileSystem).resolvePath("foo");
-    assertNotNull(report);
-  }
+public class CoberturaSensorTest {
 
   @Test
   public void doNotExecuteMavenPluginIfReuseReports() {
@@ -83,21 +71,6 @@ public class CoberturaSensorTest {
         is("cobertura-maven-plugin"));
   }
 
-  @Test
-  public void shouldGetReportPathFromPom() {
-    MavenProject pom = MavenTestUtils.loadPom("/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldGetReportPathFromPom/pom.xml");
-
-    DefaultProjectFileSystem fileSystem = mock(DefaultProjectFileSystem.class);
-
-    Project project = mock(Project.class);
-    when(project.getPom()).thenReturn(pom);
-    when(project.getFileSystem()).thenReturn(fileSystem);
-
-    new CoberturaSensor(null).getReport(project);
-
-    verify(fileSystem).resolvePath("overridden/dir");
-  }
-
   @Test
   public void doNotCollectProjectCoverage() throws URISyntaxException {
     SensorContext context = mock(SensorContext.class);
@@ -261,10 +234,10 @@ public class CoberturaSensorTest {
 
     verify(context)
         .saveMeasure(
-            eq(new JavaFile("org.sonar.samples.InnerClass")),
-            argThat(new IsMeasure(
-                CoreMetrics.COVERAGE_LINE_HITS_DATA,
-                "22=2;25=0;26=0;29=0;30=0;31=0;34=1;35=1;36=1;37=0;39=1;41=1;44=2;46=1;47=1;50=0;51=0;52=0;53=0;55=0;57=0;60=0;61=0;64=1;71=1;73=1;76=0;77=0;80=0;81=0;85=0;87=0;91=0;93=0;96=1")));
+        eq(new JavaFile("org.sonar.samples.InnerClass")),
+        argThat(new IsMeasure(
+        CoreMetrics.COVERAGE_LINE_HITS_DATA,
+        "22=2;25=0;26=0;29=0;30=0;31=0;34=1;35=1;36=1;37=0;39=1;41=1;44=2;46=1;47=1;50=0;51=0;52=0;53=0;55=0;57=0;60=0;61=0;64=1;71=1;73=1;76=0;77=0;80=0;81=0;85=0;87=0;91=0;93=0;96=1")));
   }
 
   @Test
@@ -275,7 +248,7 @@ public class CoberturaSensorTest {
     verify(context).saveMeasure(
         eq(new JavaFile("org.apache.commons.chain.impl.CatalogBase")),
         argThat(new IsMeasure(CoreMetrics.COVERAGE_LINE_HITS_DATA,
-            "111=18;121=0;122=0;125=0;126=0;127=0;128=0;131=0;133=0;48=117;56=234;66=0;67=0;68=0;84=999;86=999;98=318")));
+        "111=18;121=0;122=0;125=0;126=0;127=0;128=0;131=0;133=0;48=117;56=234;66=0;67=0;68=0;84=999;86=999;98=318")));
   }
 
   @Test
diff --git a/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/api/CoberturaUtilsTest.java b/plugins/sonar-cobertura-plugin/src/test/java/org/sonar/plugins/cobertura/api/CoberturaUtilsTest.java
new file mode 100644 (file)
index 0000000..4588e4f
--- /dev/null
@@ -0,0 +1,51 @@
+package org.sonar.plugins.cobertura.api;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.apache.maven.project.MavenProject;
+import org.junit.Test;
+import org.sonar.api.CoreProperties;
+import org.sonar.api.resources.DefaultProjectFileSystem;
+import org.sonar.api.resources.Project;
+import org.sonar.api.test.MavenTestUtils;
+
+import java.io.File;
+import java.net.URISyntaxException;
+
+public class CoberturaUtilsTest {
+  @Test
+  public void shouldGetReportPathFromProperty() throws URISyntaxException {
+    DefaultProjectFileSystem fileSystem = mock(DefaultProjectFileSystem.class);
+    when(fileSystem.resolvePath("foo")).thenReturn(getCoverageReport());
+
+    Project project = mock(Project.class);
+    when(project.getFileSystem()).thenReturn(fileSystem);
+    when(project.getProperty(CoreProperties.COBERTURA_REPORT_PATH_PROPERTY)).thenReturn("foo");
+
+    File report = CoberturaUtils.getReport(project);
+    verify(fileSystem).resolvePath("foo");
+    assertNotNull(report);
+  }
+
+  @Test
+  public void shouldGetReportPathFromPom() {
+    MavenProject pom = MavenTestUtils.loadPom("/org/sonar/plugins/cobertura/CoberturaSensorTest/shouldGetReportPathFromPom/pom.xml");
+
+    DefaultProjectFileSystem fileSystem = mock(DefaultProjectFileSystem.class);
+
+    Project project = mock(Project.class);
+    when(project.getPom()).thenReturn(pom);
+    when(project.getFileSystem()).thenReturn(fileSystem);
+
+    CoberturaUtils.getReport(project);
+
+    verify(fileSystem).resolvePath("overridden/dir");
+  }
+
+  private File getCoverageReport() throws URISyntaxException {
+    return new File(getClass().getResource("/org/sonar/plugins/cobertura/CoberturaSensorTest/commons-chain-coverage.xml").toURI());
+  }
+}