diff --git a/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java b/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java
index b455235b784..105753ccfa1 100644
--- a/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java
+++ b/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/api/AbstractSurefireParser.java
@@ -66,6 +66,10 @@ private File[] getReports(File dir) {
// maybe there's only a test suite result file
unitTestResultFiles = findXMLFilesStartingWith(dir, "TESTS-");
}
+ if (unitTestResultFiles.length == 0) {
+ // Support for SBT unit test (see http://jira.codehaus.org/browse/SONARJAVA-43)
+ unitTestResultFiles = findXMLFilesEndWith(dir, ".xml");
+ }
return unitTestResultFiles;
}
@@ -77,6 +81,14 @@ public boolean accept(File dir, String name) {
});
}
+ private File[] findXMLFilesEndWith(File dir, final String fileNameEnd) {
+ return dir.listFiles(new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.endsWith(fileNameEnd);
+ }
+ });
+ }
+
private void parseFiles(SensorContext context, File[] reports) {
UnitTestIndex index = new UnitTestIndex();
parseFiles(reports, index);
diff --git a/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java b/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java
index f6f7d2d785d..7c7a1021914 100644
--- a/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java
+++ b/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/api/AbstractSurefireParserTest.java
@@ -61,6 +61,19 @@ public void shouldAggregateReports() throws URISyntaxException {
verify(context, times(6)).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.FILE)), argThat(new IsMeasure(CoreMetrics.TEST_DATA)));
}
+ // SONARJAVA-43 - Support for SBT unit test output xmls with surefire plugin's reuse report functionality
+ @Test
+ public void shouldReuseSBTReports() throws URISyntaxException {
+ AbstractSurefireParser parser = newParser();
+ SensorContext context = mockContext();
+
+ parser.collect(new Project("foo"), context, getDir("sbtReports"));
+
+ verify(context, times(3)).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.FILE)), eq(CoreMetrics.TESTS), anyDouble());
+ verify(context, times(3)).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.FILE)), eq(CoreMetrics.TEST_ERRORS), anyDouble());
+ verify(context, times(3)).saveMeasure(argThat(new IsResource(Scopes.FILE, Qualifiers.FILE)), argThat(new IsMeasure(CoreMetrics.TEST_DATA)));
+ }
+
// SONAR-2841: if there's only a test suite report, then it should be read.
@Test
public void shouldUseTestSuiteReportIfAlone() throws URISyntaxException {
diff --git a/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/CategoryControllerTest.xml b/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/CategoryControllerTest.xml
new file mode 100644
index 00000000000..12dde5bb52c
--- /dev/null
+++ b/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/CategoryControllerTest.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/ReferentielControllerTest.xml b/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/ReferentielControllerTest.xml
new file mode 100644
index 00000000000..6f74dcc6e93
--- /dev/null
+++ b/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/ReferentielControllerTest.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/SessionControllerTest.xml b/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/SessionControllerTest.xml
new file mode 100644
index 00000000000..a55dee22686
--- /dev/null
+++ b/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/api/AbstractSurefireParserTest/sbtReports/SessionControllerTest.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file