From ab6d196d40e7879b96c3e944a379dc9b05fa934e Mon Sep 17 00:00:00 2001 From: Godin Date: Wed, 20 Oct 2010 10:59:39 +0000 Subject: [PATCH] SONAR-1784: Add SurefireUtils --- .../plugins/surefire/SurefireSensor.java | 44 ++-------------- .../surefire/api/AbstractSurefireParser.java | 6 +-- .../plugins/surefire/api/SurefireUtils.java | 52 +++++++++++++++++++ .../plugins/surefire/SurefireSensorTest.java | 36 +++++-------- .../surefire/api/SurefireUtilsTest.java | 26 ++++++++++ .../pom.xml | 21 -------- .../target/surefire/hack.txt | 1 - .../build/junit}/hack.txt | 0 .../pom.xml | 0 .../shouldGetReportsFromProperty/pom.xml | 0 .../target/surefire}/hack.txt | 0 11 files changed, 98 insertions(+), 88 deletions(-) create mode 100644 plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/SurefireUtils.java create mode 100644 plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/SurefireUtilsTest.java delete mode 100644 plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml delete mode 100644 plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt rename plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/{SurefireSensorTest/shouldGetReportsFromOverriddenPath/output => api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/build/junit}/hack.txt (100%) rename plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/{SurefireSensorTest/shouldGetReportsFromOverriddenPath => api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration}/pom.xml (100%) rename plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/{SurefireSensorTest => api/SurefireUtilsTest}/shouldGetReportsFromProperty/pom.xml (100%) rename plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/{SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit => api/SurefireUtilsTest/shouldGetReportsFromProperty/target/surefire}/hack.txt (100%) diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefireSensor.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefireSensor.java index 81cdd4279ce..70dfe4e38b3 100644 --- a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefireSensor.java +++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefireSensor.java @@ -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); } diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java index bc2e18d7d46..a144431af8c 100644 --- a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java +++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java @@ -110,15 +110,15 @@ public abstract class AbstractSurefireParser { } } testCaseDetails.append(""); - 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 index 00000000000..8e8787bd19b --- /dev/null +++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/SurefireUtils.java @@ -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() { + } + +} diff --git a/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/SurefireSensorTest.java b/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/SurefireSensorTest.java index 1e70ea71ed1..e21df1d9648 100644 --- a/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/SurefireSensorTest.java +++ b/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/SurefireSensorTest.java @@ -19,6 +19,19 @@ */ 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 index 00000000000..a53c531544b --- /dev/null +++ b/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/SurefireUtilsTest.java @@ -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/shouldGetReportsFromPluginConfiguration/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml deleted file mode 100644 index 4e3df754a65..00000000000 --- a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ - - 4.0.0 - fake.group - fake.artifactId - jar - 1.0-SNAPSHOT - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.4 - - build/junit - - - - - \ 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 index b1fdc56ae6f..00000000000 --- a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt +++ /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/output/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt similarity index 100% rename from plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/output/hack.txt rename to plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt 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/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/pom.xml similarity index 100% rename from plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml rename to plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromPluginConfiguration/pom.xml 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/api/SurefireUtilsTest/shouldGetReportsFromProperty/pom.xml similarity index 100% rename from plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml rename to plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/pom.xml 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/api/SurefireUtilsTest/shouldGetReportsFromProperty/target/surefire/hack.txt similarity index 100% rename from plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt rename to plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/SurefireUtilsTest/shouldGetReportsFromProperty/target/surefire/hack.txt -- 2.39.5