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