]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-1784: Add SurefireUtils
authorGodin <mandrikov@gmail.com>
Wed, 20 Oct 2010 10:59:39 +0000 (10:59 +0000)
committerGodin <mandrikov@gmail.com>
Wed, 20 Oct 2010 10:59:39 +0000 (10:59 +0000)
15 files changed:
plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefireSensor.java
plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java
plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/SurefireUtils.java [new file with mode: 0644]
plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/SurefireSensorTest.java
plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/SurefireUtilsTest.java [new file with mode: 0644]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/output/hack.txt [deleted file]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml [deleted file]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt [deleted file]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml [deleted file]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml [deleted file]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt [deleted file]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt [new file with mode: 0644]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/pom.xml [new file with mode: 0644]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/pom.xml [new file with mode: 0644]
plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/target/surefire/hack.txt [new file with mode: 0644]

index 81cdd4279ce8c4d1bb01ec07b1c9a5103d67744a..70dfe4e38b35c1d7718069b3b7a4548662a6adec 100644 (file)
@@ -21,18 +21,16 @@ package org.sonar.plugins.surefire;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.sonar.api.CoreProperties;
 import org.sonar.api.batch.AbstractCoverageExtension;
 import org.sonar.api.batch.DependsUpon;
 import org.sonar.api.batch.Sensor;
 import org.sonar.api.batch.SensorContext;
-import org.sonar.api.batch.maven.MavenPlugin;
-import org.sonar.api.batch.maven.MavenSurefireUtils;
 import org.sonar.api.resources.Java;
 import org.sonar.api.resources.JavaFile;
 import org.sonar.api.resources.Project;
 import org.sonar.api.resources.Resource;
 import org.sonar.plugins.surefire.api.AbstractSurefireParser;
+import org.sonar.plugins.surefire.api.SurefireUtils;
 
 import java.io.File;
 
@@ -50,50 +48,16 @@ public class SurefireSensor implements Sensor {
   }
 
   public void analyse(Project project, SensorContext context) {
-    File dir = getReportsDirectory(project);
+    File dir = SurefireUtils.getReportsDirectory(project);
     collect(project, context, dir);
   }
 
-  protected File getReportsDirectory(Project project) {
-    File dir = getReportsDirectoryFromProperty(project);
-    if (dir == null) {
-      dir = getReportsDirectoryFromPluginConfiguration(project);
-    }
-    if (dir == null) {
-      dir = getReportsDirectoryFromDefaultConfiguration(project);
-    }
-    return dir;
-  }
-
-  private File getReportsDirectoryFromProperty(Project project) {
-    String path = (String) project.getProperty(CoreProperties.SUREFIRE_REPORTS_PATH_PROPERTY);
-    if (path != null) {
-      return project.getFileSystem().resolvePath(path);
-    }
-    return null;
-  }
-
-  private File getReportsDirectoryFromPluginConfiguration(Project project) {
-    MavenPlugin plugin = MavenPlugin.getPlugin(project.getPom(), MavenSurefireUtils.GROUP_ID, MavenSurefireUtils.ARTIFACT_ID);
-    if (plugin != null) {
-      String path = plugin.getParameter("reportsDirectory");
-      if (path != null) {
-        return project.getFileSystem().resolvePath(path);
-      }
-    }
-    return null;
-  }
-
-  private File getReportsDirectoryFromDefaultConfiguration(Project project) {
-    return new File(project.getFileSystem().getBuildDir(), "surefire-reports");
-  }
-
   protected void collect(Project project, SensorContext context, File reportsDir) {
     logger.info("parsing {}", reportsDir);
     new AbstractSurefireParser() {
       @Override
-      protected Resource<?> getUnitTestResource(TestSuiteReport fileReport) {
-        return new JavaFile(fileReport.getClassKey(), true);
+      protected Resource<?> getUnitTestResource(String classKey) {
+        return new JavaFile(classKey, true);
       }
     }.collect(project, context, reportsDir);
   }
index bc2e18d7d466c4d35b056d18e80ace7024241f29..a144431af8cbe7c4e44a0b07a14232e822e77604 100644 (file)
@@ -110,15 +110,15 @@ public abstract class AbstractSurefireParser {
       }
     }
     testCaseDetails.append("</tests-details>");
-    context.saveMeasure(getUnitTestResource(fileReport), new Measure(CoreMetrics.TEST_DATA, testCaseDetails.toString()));
+    context.saveMeasure(getUnitTestResource(fileReport.getClassKey()), new Measure(CoreMetrics.TEST_DATA, testCaseDetails.toString()));
   }
 
   private void saveClassMeasure(SensorContext context, TestSuiteReport fileReport, Metric metric, double value) {
     if ( !Double.isNaN(value)) {
-      context.saveMeasure(getUnitTestResource(fileReport), metric, value);
+      context.saveMeasure(getUnitTestResource(fileReport.getClassKey()), metric, value);
     }
   }
 
-  protected abstract Resource<?> getUnitTestResource(TestSuiteReport fileReport);
+  protected abstract Resource<?> getUnitTestResource(String classKey);
 
 }
diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/SurefireUtils.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/SurefireUtils.java
new file mode 100644 (file)
index 0000000..8e8787b
--- /dev/null
@@ -0,0 +1,52 @@
+package org.sonar.plugins.surefire.api;
+
+import org.sonar.api.CoreProperties;
+import org.sonar.api.batch.maven.MavenPlugin;
+import org.sonar.api.batch.maven.MavenSurefireUtils;
+import org.sonar.api.resources.Project;
+
+import java.io.File;
+
+/**
+ * @since 2.4
+ */
+public final class SurefireUtils {
+
+  public static File getReportsDirectory(Project project) {
+    File dir = getReportsDirectoryFromProperty(project);
+    if (dir == null) {
+      dir = getReportsDirectoryFromPluginConfiguration(project);
+    }
+    if (dir == null) {
+      dir = getReportsDirectoryFromDefaultConfiguration(project);
+    }
+    return dir;
+  }
+
+  private static File getReportsDirectoryFromProperty(Project project) {
+    String path = (String) project.getProperty(CoreProperties.SUREFIRE_REPORTS_PATH_PROPERTY);
+    if (path != null) {
+      return project.getFileSystem().resolvePath(path);
+    }
+    return null;
+  }
+
+  private static File getReportsDirectoryFromPluginConfiguration(Project project) {
+    MavenPlugin plugin = MavenPlugin.getPlugin(project.getPom(), MavenSurefireUtils.GROUP_ID, MavenSurefireUtils.ARTIFACT_ID);
+    if (plugin != null) {
+      String path = plugin.getParameter("reportsDirectory");
+      if (path != null) {
+        return project.getFileSystem().resolvePath(path);
+      }
+    }
+    return null;
+  }
+
+  private static File getReportsDirectoryFromDefaultConfiguration(Project project) {
+    return new File(project.getFileSystem().getBuildDir(), "surefire-reports");
+  }
+
+  private SurefireUtils() {
+  }
+
+}
index 1e70ea71ed1900d2bdf4c9a4daea09dc0267efad..e21df1d96484407d7da21ec2a440637b0b1d1120 100644 (file)
  */
 package org.sonar.plugins.surefire;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.anyDouble;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 import org.apache.commons.lang.ObjectUtils;
 import org.custommonkey.xmlunit.DetailedDiff;
 import org.custommonkey.xmlunit.Diff;
@@ -42,15 +55,6 @@ import java.io.FileReader;
 import java.io.StringReader;
 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.anyDouble;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.*;
-
 public class SurefireSensorTest {
 
   @Test
@@ -69,20 +73,6 @@ public class SurefireSensorTest {
     assertThat(new SurefireSensor().shouldExecuteOnProject(project), is(true));
   }
 
-  @Test
-  public void shouldGetReportsFromProperty() {
-    Project project = MavenTestUtils.loadProjectFromPom(getClass(), "shouldGetReportsFromProperty/pom.xml");
-    assertThat(new SurefireSensor().getReportsDirectory(project).exists(), is(true));
-    assertThat(new SurefireSensor().getReportsDirectory(project).isDirectory(), is(true));
-  }
-
-  @Test
-  public void shouldGetReportsFromPluginConfiguration() {
-    Project project = MavenTestUtils.loadProjectFromPom(getClass(), "shouldGetReportsFromPluginConfiguration/pom.xml");
-    assertThat(new SurefireSensor().getReportsDirectory(project).exists(), is(true));
-    assertThat(new SurefireSensor().getReportsDirectory(project).isDirectory(), is(true));
-  }
-
   @Test
   public void shouldNotFailIfReportsNotFound() {
     Project project = MavenTestUtils.loadProjectFromPom(getClass(), "shouldNotFailIfReportsNotFound/pom.xml");
diff --git a/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/SurefireUtilsTest.java b/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/SurefireUtilsTest.java
new file mode 100644 (file)
index 0000000..a53c531
--- /dev/null
@@ -0,0 +1,26 @@
+package org.sonar.plugins.surefire.api;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+import org.sonar.api.resources.Project;
+import org.sonar.api.test.MavenTestUtils;
+
+public class SurefireUtilsTest {
+
+  @Test
+  public void shouldGetReportsFromProperty() {
+    Project project = MavenTestUtils.loadProjectFromPom(getClass(), "shouldGetReportsFromProperty/pom.xml");
+    assertThat(SurefireUtils.getReportsDirectory(project).exists(), is(true));
+    assertThat(SurefireUtils.getReportsDirectory(project).isDirectory(), is(true));
+  }
+
+  @Test
+  public void shouldGetReportsFromPluginConfiguration() {
+    Project project = MavenTestUtils.loadProjectFromPom(getClass(), "shouldGetReportsFromPluginConfiguration/pom.xml");
+    assertThat(SurefireUtils.getReportsDirectory(project).exists(), is(true));
+    assertThat(SurefireUtils.getReportsDirectory(project).isDirectory(), is(true));
+  }
+
+}
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/output/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/output/hack.txt
deleted file mode 100644 (file)
index b1fdc56..0000000
+++ /dev/null
@@ -1 +0,0 @@
-hack for maven in order the directory target/surefire to be included in unit tests classpath
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml
deleted file mode 100644 (file)
index 4e3df75..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>fake.group</groupId>
-  <artifactId>fake.artifactId</artifactId>
-  <packaging>jar</packaging>
-  <version>1.0-SNAPSHOT</version>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <reportsDirectory>build/junit</reportsDirectory>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt
deleted file mode 100644 (file)
index b1fdc56..0000000
+++ /dev/null
@@ -1 +0,0 @@
-hack for maven in order the directory target/surefire to be included in unit tests classpath
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml
deleted file mode 100644 (file)
index 4e3df75..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>fake.group</groupId>
-  <artifactId>fake.artifactId</artifactId>
-  <packaging>jar</packaging>
-  <version>1.0-SNAPSHOT</version>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.4</version>
-        <configuration>
-          <reportsDirectory>build/junit</reportsDirectory>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml
deleted file mode 100644 (file)
index 948c4a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>fake.group</groupId>
-  <artifactId>fake.artifactId</artifactId>
-  <packaging>jar</packaging>
-  <version>1.0-SNAPSHOT</version>
-
-  <properties>
-    <sonar.surefire.reportsPath>target/surefire</sonar.surefire.reportsPath>
-  </properties>
-</project>
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt
deleted file mode 100644 (file)
index b1fdc56..0000000
+++ /dev/null
@@ -1 +0,0 @@
-hack for maven in order the directory target/surefire to be included in unit tests classpath
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt
new file mode 100644 (file)
index 0000000..b1fdc56
--- /dev/null
@@ -0,0 +1 @@
+hack for maven in order the directory target/surefire to be included in unit tests classpath
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/pom.xml
new file mode 100644 (file)
index 0000000..4e3df75
--- /dev/null
@@ -0,0 +1,21 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>fake.group</groupId>
+  <artifactId>fake.artifactId</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <reportsDirectory>build/junit</reportsDirectory>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/pom.xml
new file mode 100644 (file)
index 0000000..948c4a8
--- /dev/null
@@ -0,0 +1,12 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>fake.group</groupId>
+  <artifactId>fake.artifactId</artifactId>
+  <packaging>jar</packaging>
+  <version>1.0-SNAPSHOT</version>
+
+  <properties>
+    <sonar.surefire.reportsPath>target/surefire</sonar.surefire.reportsPath>
+  </properties>
+</project>
\ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/target/surefire/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/target/surefire/hack.txt
new file mode 100644 (file)
index 0000000..b1fdc56
--- /dev/null
@@ -0,0 +1 @@
+hack for maven in order the directory target/surefire to be included in unit tests classpath
\ No newline at end of file