aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/sonar-surefire-plugin
diff options
context:
space:
mode:
authorsimonbrandhof <simon.brandhof@gmail.com>2010-09-06 14:08:06 +0000
committersimonbrandhof <simon.brandhof@gmail.com>2010-09-06 14:08:06 +0000
commitaeadc1f9129274949daaa57738c7c4550bdfbc7b (patch)
tree08dadf5ef7474fc41d1d48f74648f1ba8b55f34d /plugins/sonar-surefire-plugin
downloadsonarqube-aeadc1f9129274949daaa57738c7c4550bdfbc7b.tar.gz
sonarqube-aeadc1f9129274949daaa57738c7c4550bdfbc7b.zip
SONAR-236 remove deprecated code from checkstyle plugin + display default value of rule parameters in Q profile console
Diffstat (limited to 'plugins/sonar-surefire-plugin')
-rw-r--r--plugins/sonar-surefire-plugin/pom.xml73
-rw-r--r--plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefirePlugin.java55
-rw-r--r--plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefireSensor.java204
-rw-r--r--plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestCaseDetails.java75
-rw-r--r--plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteParser.java149
-rw-r--r--plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteReport.java120
-rw-r--r--plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/SurefireSensorTest.java326
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotInsertZeroTestsOnClasses/TEST-noTests.xml70
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotSaveInnerClasses/TEST-org.apache.commons.collections.TestAllPackages.xml71
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler$Input.xml70
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler.xml70
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.SonarMojoTest.xml83
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest.xml76
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CloverCollectorTest.xml77
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JDependsCollectorTest.xml86
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JavaNCSSCollectorTest.xml88
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.MetricsCollectorRegistryTest.xml74
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/measuresShouldNotIncludeSkippedTests/TEST-FooTest.xml133
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/no-files/hack1
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/noSuccessRatioIfNoTests/TEST-FooTest.xml98
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/roundingTests/TEST-Rounding.xml4
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/output/hack.txt1
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml21
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt1
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml21
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml12
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt1
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleMultipleSuitesInSameFile/TESTS-MutlipleSuites.xml24
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest-expected-result.xml71
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest2-expected-result.xml5
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest3-expected-result.xml6
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/TEST-org.sonar.core.ExtensionsFinderTestSuite.xml170
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldManageClassesWithDefaultPackage/TEST-NoPackagesTest.xml94
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldNotFailIfReportsNotFound/pom.xml12
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/TEST-org.sonar.core.ExtensionsFinderTest.xml170
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/expected-test-details.xml78
-rw-r--r--plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/successRatioIsZeroWhenAllTestsFail/TEST-FooTest.xml160
37 files changed, 2850 insertions, 0 deletions
diff --git a/plugins/sonar-surefire-plugin/pom.xml b/plugins/sonar-surefire-plugin/pom.xml
new file mode 100644
index 00000000000..be234f3e069
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <parent>
+ <groupId>org.codehaus.sonar</groupId>
+ <artifactId>sonar</artifactId>
+ <version>2.3-SNAPSHOT</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <groupId>org.codehaus.sonar.plugins</groupId>
+ <artifactId>sonar-surefire-plugin</artifactId>
+ <packaging>sonar-plugin</packaging>
+ <name>Sonar :: Plugins :: Surefire</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.sonar</groupId>
+ <artifactId>sonar-plugin-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.sonar</groupId>
+ <artifactId>sonar-testing-harness</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <testResources>
+ <testResource>
+ <directory>${basedir}/src/main/resources</directory>
+ </testResource>
+ <testResource>
+ <directory>${basedir}/src/test/resources</directory>
+ </testResource>
+ </testResources>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.sonar</groupId>
+ <artifactId>sonar-packaging-maven-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <pluginKey>surefire</pluginKey>
+ <pluginName>Surefire</pluginName>
+ <pluginClass>org.sonar.plugins.surefire.SurefirePlugin</pluginClass>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefirePlugin.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefirePlugin.java
new file mode 100644
index 00000000000..6286e46e205
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefirePlugin.java
@@ -0,0 +1,55 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2009 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.plugins.surefire;
+
+import org.sonar.api.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Properties({
+ @Property(
+ key = CoreProperties.SUREFIRE_REPORTS_PATH_PROPERTY,
+ name = "Report path",
+ description = "Path (absolute or relative) to XML report files.",
+ project = true,
+ global = false)
+})
+public class SurefirePlugin implements Plugin {
+
+ public String getKey() {
+ return CoreProperties.SUREFIRE_PLUGIN;
+ }
+
+ public String getName() {
+ return "Surefire";
+ }
+
+ public String getDescription() {
+ return "<a href=' http://maven.apache.org/plugins/maven-surefire-plugin/'>Surefire</a> is a test framework for Maven.";
+ }
+
+ public List<Class<? extends Extension>> getExtensions() {
+ List<Class<? extends Extension>> extensions = new ArrayList<Class<? extends Extension>>();
+ extensions.add(SurefireSensor.class);
+ return extensions;
+ }
+
+}
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
new file mode 100644
index 00000000000..47b692c8f97
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/SurefireSensor.java
@@ -0,0 +1,204 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2009 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.plugins.surefire;
+
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
+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.measures.CoreMetrics;
+import org.sonar.api.measures.Measure;
+import org.sonar.api.measures.Metric;
+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.api.utils.ParsingUtils;
+import org.sonar.api.utils.StaxParser;
+import org.sonar.api.utils.XmlParserException;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import javax.xml.transform.TransformerException;
+
+public class SurefireSensor implements Sensor {
+
+ private static Logger logger = LoggerFactory.getLogger(SurefireSensor.class);
+
+ @DependsUpon
+ public Class<?> dependsUponCoverageSensors() {
+ return AbstractCoverageExtension.class;
+ }
+
+ public boolean shouldExecuteOnProject(Project project) {
+ return project.getAnalysisType().isDynamic(true) && Java.KEY.equals(project.getLanguageKey());
+ }
+
+ public void analyse(Project project, SensorContext context) {
+ File dir = 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");
+ }
+
+ private File[] getReports(File dir) {
+ if (dir == null || !dir.isDirectory() || !dir.exists()) {
+ return new File[0];
+ }
+ return dir.listFiles(new FilenameFilter() {
+ public boolean accept(File dir, String name) {
+ return name.startsWith("TEST") && name.endsWith(".xml");
+ }
+ });
+ }
+
+
+ protected void collect(Project project, SensorContext context, File reportsDir) {
+ logger.info("parsing {}", reportsDir);
+ File[] xmlFiles = getReports(reportsDir);
+
+ if (xmlFiles.length == 0) {
+ insertZeroWhenNoReports(project, context);
+ } else {
+ parseFiles(context, xmlFiles);
+ }
+ }
+
+ private void insertZeroWhenNoReports(Project pom, SensorContext context) {
+ if (!StringUtils.equalsIgnoreCase("pom", pom.getPackaging())) {
+ context.saveMeasure(CoreMetrics.TESTS, 0.0);
+ }
+ }
+
+ private void parseFiles(SensorContext context, File[] reports) {
+ Set<TestSuiteReport> analyzedReports = new HashSet<TestSuiteReport>();
+ try {
+ for (File report : reports) {
+ TestSuiteParser parserHandler = new TestSuiteParser();
+ StaxParser parser = new StaxParser(parserHandler, false);
+ parser.parse(report);
+
+ for (TestSuiteReport fileReport : parserHandler.getParsedReports()) {
+ if (!fileReport.isValid() || analyzedReports.contains(fileReport)) {
+ continue;
+ }
+ if (fileReport.getTests() > 0) {
+ double testsCount = fileReport.getTests() - fileReport.getSkipped();
+ saveClassMeasure(context, fileReport, CoreMetrics.SKIPPED_TESTS, fileReport.getSkipped());
+ saveClassMeasure(context, fileReport, CoreMetrics.TESTS, testsCount);
+ saveClassMeasure(context, fileReport, CoreMetrics.TEST_ERRORS, fileReport.getErrors());
+ saveClassMeasure(context, fileReport, CoreMetrics.TEST_FAILURES, fileReport.getFailures());
+ saveClassMeasure(context, fileReport, CoreMetrics.TEST_EXECUTION_TIME, fileReport.getTimeMS());
+ double passedTests = testsCount - fileReport.getErrors() - fileReport.getFailures();
+ if (testsCount > 0) {
+ double percentage = passedTests * 100d / testsCount;
+ saveClassMeasure(context, fileReport, CoreMetrics.TEST_SUCCESS_DENSITY, ParsingUtils.scaleValue(percentage));
+ }
+ saveTestsDetails(context, fileReport);
+ analyzedReports.add(fileReport);
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ throw new XmlParserException("Can not parse surefire reports", e);
+ }
+ }
+
+ private void saveTestsDetails(SensorContext context, TestSuiteReport fileReport) throws TransformerException {
+ StringBuilder testCaseDetails = new StringBuilder(256);
+ testCaseDetails.append("<tests-details>");
+ List<TestCaseDetails> details = fileReport.getDetails();
+ for (TestCaseDetails detail : details) {
+ testCaseDetails.append("<testcase status=\"").append(detail.getStatus())
+ .append("\" time=\"").append(detail.getTimeMS())
+ .append("\" name=\"").append(detail.getName()).append("\"");
+ boolean isError = detail.getStatus().equals(TestCaseDetails.STATUS_ERROR);
+ if (isError || detail.getStatus().equals(TestCaseDetails.STATUS_FAILURE)) {
+ testCaseDetails.append(">")
+ .append(isError ? "<error message=\"" : "<failure message=\"")
+ .append(StringEscapeUtils.escapeXml(detail.getErrorMessage())).append("\">")
+ .append("<![CDATA[").append(StringEscapeUtils.escapeXml(detail.getStackTrace())).append("]]>")
+ .append(isError ? "</error>" : "</failure>").append("</testcase>");
+ } else {
+ testCaseDetails.append("/>");
+ }
+ }
+ testCaseDetails.append("</tests-details>");
+ context.saveMeasure(getUnitTestResource(fileReport), 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);
+ }
+ }
+
+ private Resource<?> getUnitTestResource(TestSuiteReport fileReport) {
+ return new JavaFile(fileReport.getClassKey(), true);
+ }
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName();
+ }
+}
diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestCaseDetails.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestCaseDetails.java
new file mode 100644
index 00000000000..f409c9e5d34
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestCaseDetails.java
@@ -0,0 +1,75 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2009 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.plugins.surefire;
+
+public class TestCaseDetails {
+
+ public final static String STATUS_OK = "ok";
+ public final static String STATUS_ERROR = "error";
+ public final static String STATUS_FAILURE = "failure";
+ public final static String STATUS_SKIPPED = "skipped";
+
+ private String name;
+ private String status;
+ private String stackTrace;
+ private String errorMessage;
+ private int timeMS = 0;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getStackTrace() {
+ return stackTrace;
+ }
+
+ public void setStackTrace(String stackTrace) {
+ this.stackTrace = stackTrace;
+ }
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ public void setErrorMessage(String errorMessage) {
+ this.errorMessage = errorMessage;
+ }
+
+ public int getTimeMS() {
+ return timeMS;
+ }
+
+ public void setTimeMS(int timeMS) {
+ this.timeMS = timeMS;
+ }
+
+}
diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteParser.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteParser.java
new file mode 100644
index 00000000000..79eceb91cbc
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteParser.java
@@ -0,0 +1,149 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2009 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.plugins.surefire;
+
+import java.text.ParseException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.commons.lang.StringUtils;
+import org.codehaus.staxmate.in.ElementFilter;
+import org.codehaus.staxmate.in.SMEvent;
+import org.codehaus.staxmate.in.SMHierarchicCursor;
+import org.codehaus.staxmate.in.SMInputCursor;
+import org.sonar.api.utils.ParsingUtils;
+import org.sonar.api.utils.StaxParser.XmlStreamHandler;
+
+public class TestSuiteParser implements XmlStreamHandler {
+
+ private Map<String, TestSuiteReport> reportsPerClass = new HashMap<String, TestSuiteReport>();
+
+ public void stream(SMHierarchicCursor rootCursor) throws XMLStreamException {
+ SMInputCursor testSuite = rootCursor.constructDescendantCursor(new ElementFilter("testsuite"));
+ SMEvent testSuiteEvent;
+ while ((testSuiteEvent = testSuite.getNext()) != null) {
+ if (testSuiteEvent.compareTo(SMEvent.START_ELEMENT) == 0) {
+ String testSuiteClassName = testSuite.getAttrValue("name");
+ if (StringUtils.contains(testSuiteClassName, "$")) {
+ // test suites for inner classes are ignored
+ return;
+ }
+ SMInputCursor testCase = testSuite.childCursor(new ElementFilter("testcase"));
+ SMEvent event;
+ while ((event = testCase.getNext()) != null) {
+ if (event.compareTo(SMEvent.START_ELEMENT) == 0) {
+ String testClassName = getClassname(testCase, testSuiteClassName);
+ TestSuiteReport report = reportsPerClass.get(testClassName);
+ if (report == null) {
+ report = new TestSuiteReport(testClassName);
+ reportsPerClass.put(testClassName, report);
+ }
+ cumulateTestCaseDetails(testCase, report);
+ }
+ }
+ }
+ }
+ }
+
+ public Collection<TestSuiteReport> getParsedReports() {
+ return reportsPerClass.values();
+ }
+
+ private String getClassname(SMInputCursor testCaseCursor, String defaultClassname) throws XMLStreamException {
+ String testClassName = testCaseCursor.getAttrValue("classname");
+ testClassName = StringUtils.substringBeforeLast(testClassName, "$");
+ return testClassName == null ? defaultClassname : testClassName;
+ }
+
+ private void cumulateTestCaseDetails(SMInputCursor testCaseCursor, TestSuiteReport report) throws XMLStreamException {
+ TestCaseDetails detail = getTestCaseDetails(testCaseCursor);
+ if (detail.getStatus().equals(TestCaseDetails.STATUS_SKIPPED)) {
+ report.setSkipped(report.getSkipped() + 1);
+ } else if (detail.getStatus().equals(TestCaseDetails.STATUS_FAILURE)) {
+ report.setFailures(report.getFailures() + 1);
+ } else if (detail.getStatus().equals(TestCaseDetails.STATUS_ERROR)) {
+ report.setErrors(report.getErrors() + 1);
+ }
+ report.setTests(report.getTests() + 1);
+ report.setTimeMS(report.getTimeMS() + detail.getTimeMS());
+ report.getDetails().add(detail);
+ }
+
+ private void setStackAndMessage(TestCaseDetails detail, SMInputCursor stackAndMessageCursor) throws XMLStreamException {
+ detail.setErrorMessage(stackAndMessageCursor.getAttrValue("message"));
+ String stack = stackAndMessageCursor.collectDescendantText();
+ detail.setStackTrace(stack);
+ }
+
+ private TestCaseDetails getTestCaseDetails(SMInputCursor testCaseCursor) throws XMLStreamException {
+ TestCaseDetails detail = new TestCaseDetails();
+ String name = getTestCaseName(testCaseCursor);
+ detail.setName(name);
+
+ String status = TestCaseDetails.STATUS_OK;
+ Double time = getTimeAttributeInMS(testCaseCursor);
+
+ SMInputCursor childNode = testCaseCursor.descendantElementCursor();
+ if (childNode.getNext() != null) {
+ String elementName = childNode.getLocalName();
+ if (elementName.equals("skipped")) {
+ status = TestCaseDetails.STATUS_SKIPPED;
+ // bug with surefire reporting wrong time for skipped tests
+ time = 0d;
+ } else if (elementName.equals("failure")) {
+ status = TestCaseDetails.STATUS_FAILURE;
+ setStackAndMessage(detail, childNode);
+ } else if (elementName.equals("error")) {
+ status = TestCaseDetails.STATUS_ERROR;
+ setStackAndMessage(detail, childNode);
+ }
+ }
+ // make sure we loop till the end of the elements cursor
+ while (childNode.getNext() != null) {
+ }
+ detail.setTimeMS(time.intValue());
+ detail.setStatus(status);
+ return detail;
+ }
+
+ private Double getTimeAttributeInMS(SMInputCursor testCaseCursor) throws XMLStreamException {
+ // hardcoded to Locale.ENGLISH see http://jira.codehaus.org/browse/SONAR-602
+ try {
+ Double time = ParsingUtils.parseNumber(testCaseCursor.getAttrValue("time"), Locale.ENGLISH);
+ return !Double.isNaN(time) ? ParsingUtils.scaleValue(time * 1000, 3) : 0;
+ } catch (ParseException e) {
+ throw new XMLStreamException(e);
+ }
+ }
+
+ private String getTestCaseName(SMInputCursor testCaseCursor) throws XMLStreamException {
+ String classname = testCaseCursor.getAttrValue("classname");
+ String name = testCaseCursor.getAttrValue("name");
+ if (StringUtils.contains(classname, "$")) {
+ return StringUtils.substringAfterLast(classname, "$") + "/" + name;
+ }
+ return name;
+ }
+
+}
diff --git a/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteReport.java b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteReport.java
new file mode 100644
index 00000000000..7f9b8cbea22
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/main/java/org/sonar/plugins/surefire/TestSuiteReport.java
@@ -0,0 +1,120 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2009 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.plugins.surefire;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestSuiteReport {
+
+ private String classKey;
+ private int errors = 0;
+ private int skipped = 0;
+ private int tests = 0;
+ private int timeMS = 0;
+ private int failures = 0;
+
+ private List<TestCaseDetails> details;
+
+
+ public TestSuiteReport(String classKey) {
+ super();
+ this.classKey = classKey;
+ this.details = new ArrayList<TestCaseDetails>();
+ }
+
+ public String getClassKey() {
+ return classKey;
+ }
+
+ public int getErrors() {
+ return errors;
+ }
+
+ public void setErrors(int errors) {
+ this.errors = errors;
+ }
+
+ public int getSkipped() {
+ return skipped;
+ }
+
+ public void setSkipped(int skipped) {
+ this.skipped = skipped;
+ }
+
+ public int getTests() {
+ return tests;
+ }
+
+ public void setTests(int tests) {
+ this.tests = tests;
+ }
+
+ public int getTimeMS() {
+ return timeMS;
+ }
+
+ public void setTimeMS(int timeMS) {
+ this.timeMS = timeMS;
+ }
+
+ public int getFailures() {
+ return failures;
+ }
+
+ public void setFailures(int failures) {
+ this.failures = failures;
+ }
+
+ public List<TestCaseDetails> getDetails() {
+ return details;
+ }
+
+ public void setDetails(List<TestCaseDetails> details) {
+ this.details = details;
+ }
+
+ public boolean isValid() {
+ return classKey!=null && !isInnerClass();
+ }
+
+ private boolean isInnerClass() {
+ return classKey!=null && classKey.contains("$");
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ TestSuiteReport that = (TestSuiteReport) o;
+ return classKey.equals(that.classKey);
+ }
+
+ @Override
+ public int hashCode() {
+ return classKey.hashCode();
+ }
+}
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
new file mode 100644
index 00000000000..1e70ea71ed1
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/java/org/sonar/plugins/surefire/SurefireSensorTest.java
@@ -0,0 +1,326 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2009 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
+ */
+package org.sonar.plugins.surefire;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.custommonkey.xmlunit.DetailedDiff;
+import org.custommonkey.xmlunit.Diff;
+import org.custommonkey.xmlunit.XMLUnit;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+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.measures.Metric;
+import org.sonar.api.resources.Java;
+import org.sonar.api.resources.JavaFile;
+import org.sonar.api.resources.Project;
+import org.sonar.api.test.IsMeasure;
+import org.sonar.api.test.IsResource;
+import org.sonar.api.test.MavenTestUtils;
+
+import java.io.File;
+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
+ public void shouldNotAnalyseIfStaticAnalysis() {
+ Project project = mock(Project.class);
+ when(project.getLanguageKey()).thenReturn(Java.KEY);
+ when(project.getAnalysisType()).thenReturn(Project.AnalysisType.STATIC);
+ assertFalse(new SurefireSensor().shouldExecuteOnProject(project));
+ }
+
+ @Test
+ public void shouldAnalyseIfReuseDynamicReports() {
+ Project project = mock(Project.class);
+ when(project.getLanguageKey()).thenReturn(Java.KEY);
+ when(project.getAnalysisType()).thenReturn(Project.AnalysisType.REUSE_REPORTS);
+ 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");
+ new SurefireSensor().collect(project, mock(SensorContext.class), new File("unknown"));
+ }
+
+ @Test
+ public void zeroTestsIfNoFiles() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/no-files/").toURI()));
+
+ verify(context).saveMeasure(CoreMetrics.TESTS, 0.0);
+ }
+
+ @Test
+ public void doNotInsertZeroTestsOnClasses() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/doNotInsertZeroTestsOnClasses/").toURI()));
+
+ verify(context, never()).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ (Metric) anyObject(), anyDouble());
+ }
+
+ @Test
+ public void doNotInsertMeasuresOnPomProjects() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newPomProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/no-files/").toURI()));
+
+ verify(context, never()).saveMeasure(eq(CoreMetrics.TESTS), anyDouble());
+ }
+
+ @Test
+ public void shouldHandleMultipleTestSuites() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newPomProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleMultipleSuitesInSameFile/").toURI()));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.JavaNCSSCollectorTest", true)), eq(CoreMetrics.TESTS), eq(11d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.SecondTest", true)), eq(CoreMetrics.TESTS), eq(4d));
+ }
+
+ @Test
+ public void shouldSaveClassMeasures() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/many-results/").toURI()));
+
+ verify(context, times(6)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ eq(CoreMetrics.TESTS), anyDouble());
+ verify(context, times(36)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ (Metric) anyObject(), anyDouble());
+ verify(context, times(6)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ argThat(new IsMeasure(CoreMetrics.TEST_DATA)));
+
+ verify(context)
+ .saveMeasure(new JavaFile("ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest", true), CoreMetrics.TEST_EXECUTION_TIME, 694d);
+ verify(context).saveMeasure(new JavaFile("ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest", true), CoreMetrics.TEST_ERRORS, 0d);
+ verify(context).saveMeasure(new JavaFile("ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest", true), CoreMetrics.TEST_FAILURES, 0d);
+ verify(context).saveMeasure(new JavaFile("ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest", true), CoreMetrics.TESTS, 6d);
+ verify(context).saveMeasure(new JavaFile("ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest", true), CoreMetrics.SKIPPED_TESTS, 0d);
+ verify(context).saveMeasure(eq(new JavaFile("ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest", true)),
+ argThat(new IsMeasure(CoreMetrics.TEST_DATA)));
+ }
+
+ @Test
+ public void shouldHandleTestSuiteDetails() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/").toURI()));
+
+ // 3 classes, 6 measures by class
+ verify(context, times(3)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ eq(CoreMetrics.SKIPPED_TESTS), anyDouble());
+ verify(context, times(3)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ eq(CoreMetrics.TESTS), anyDouble());
+ verify(context, times(18)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ (Metric) anyObject(), anyDouble());
+ verify(context, times(3)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ argThat(new IsMeasure(CoreMetrics.TEST_DATA)));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest", true)), eq(CoreMetrics.TESTS), eq(4d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest", true)), eq(CoreMetrics.TEST_EXECUTION_TIME),
+ eq(111d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest", true)), eq(CoreMetrics.TEST_FAILURES), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest", true)), eq(CoreMetrics.TEST_ERRORS), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest", true)), eq(CoreMetrics.SKIPPED_TESTS), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest", true)),
+ argThat(getTestDetailsMatcher("shouldHandleTestSuiteDetails/ExtensionsFinderTest-expected-result.xml")));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest2", true)), eq(CoreMetrics.TESTS), eq(2d));
+ verify(context)
+ .saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest2", true)), eq(CoreMetrics.TEST_EXECUTION_TIME), eq(2d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest2", true)), eq(CoreMetrics.TEST_FAILURES), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest2", true)), eq(CoreMetrics.TEST_ERRORS), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest2", true)), eq(CoreMetrics.SKIPPED_TESTS), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest2", true)),
+ argThat(getTestDetailsMatcher("shouldHandleTestSuiteDetails/ExtensionsFinderTest2-expected-result.xml")));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest3", true)), eq(CoreMetrics.TESTS), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest3", true)), eq(CoreMetrics.TEST_EXECUTION_TIME),
+ eq(16d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest3", true)), eq(CoreMetrics.TEST_FAILURES), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest3", true)), eq(CoreMetrics.TEST_ERRORS), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest3", true)), eq(CoreMetrics.SKIPPED_TESTS), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest3", true)),
+ argThat(getTestDetailsMatcher("shouldHandleTestSuiteDetails/ExtensionsFinderTest3-expected-result.xml")));
+ }
+
+ @Test
+ public void shouldSaveErrorsAndFailuresInXML() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/").toURI()));
+
+ // 1 classes, 6 measures by class
+ verify(context, times(1)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ eq(CoreMetrics.SKIPPED_TESTS), anyDouble());
+
+ verify(context, times(1)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ eq(CoreMetrics.TESTS), anyDouble());
+ verify(context, times(6)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ (Metric) anyObject(), anyDouble());
+ verify(context, times(1)).saveMeasure(argThat(new IsResource(JavaFile.SCOPE_ENTITY, JavaFile.QUALIFIER_UNIT_TEST_CLASS)),
+ argThat(new IsMeasure(CoreMetrics.TEST_DATA)));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.core.ExtensionsFinderTest", true)),
+ argThat(getTestDetailsMatcher("shouldSaveErrorsAndFailuresInXML/expected-test-details.xml")));
+ }
+
+ @Test
+ public void shouldManageClassesWithDefaultPackage() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/shouldManageClassesWithDefaultPackage/").toURI()));
+
+ verify(context).saveMeasure(new JavaFile("NoPackagesTest", true), CoreMetrics.TESTS, 2d);
+ }
+
+ @Test
+ public void successRatioIsZeroWhenAllTestsFail() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/successRatioIsZeroWhenAllTestsFail/").toURI()));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TESTS), eq(2d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_FAILURES), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_ERRORS), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_SUCCESS_DENSITY), eq(0d));
+ }
+
+ @Test
+ public void measuresShouldNotIncludeSkippedTests() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/measuresShouldNotIncludeSkippedTests/").toURI()));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TESTS), eq(2d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_FAILURES), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_ERRORS), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.SKIPPED_TESTS), eq(1d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_SUCCESS_DENSITY), eq(50d));
+ }
+
+ @Test
+ public void noSuccessRatioIfNoTests() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/noSuccessRatioIfNoTests/").toURI()));
+
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TESTS), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_FAILURES), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.TEST_ERRORS), eq(0d));
+ verify(context).saveMeasure(eq(new JavaFile("org.sonar.Foo", true)), eq(CoreMetrics.SKIPPED_TESTS), eq(2d));
+ verify(context, never()).saveMeasure(eq(new JavaFile("org.sonar.Foo")), eq(CoreMetrics.TEST_SUCCESS_DENSITY), anyDouble());
+ }
+
+ @Test
+ public void doNotSaveInnerClasses() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/doNotSaveInnerClasses/").toURI()));
+ verify(context).saveMeasure(eq(new JavaFile("org.apache.commons.collections.bidimap.AbstractTestBidiMap")), eq(CoreMetrics.TESTS),
+ eq(7.0));
+ verify(context).saveMeasure(eq(new JavaFile("org.apache.commons.collections.bidimap.AbstractTestBidiMap")),
+ eq(CoreMetrics.TEST_ERRORS), eq(1.0));
+ verify(context).saveMeasure(eq(new JavaFile("org.apache.commons.collections.bidimap.AbstractTestBidiMap")),
+ eq(CoreMetrics.TEST_EXECUTION_TIME), eq(45.0));
+ }
+
+ @Test
+ public void ignoreSuiteAsInnerClass() throws URISyntaxException {
+ SensorContext context = mock(SensorContext.class);
+ new SurefireSensor().collect(newJarProject(), context, new File(getClass().getResource(
+ "/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/").toURI()));
+
+ // ignore TestHandler$Input.xml
+ verify(context).saveMeasure(eq(new JavaFile("org.apache.shindig.protocol.TestHandler")), eq(CoreMetrics.TESTS), eq(0.0));
+ verify(context).saveMeasure(eq(new JavaFile("org.apache.shindig.protocol.TestHandler")), eq(CoreMetrics.SKIPPED_TESTS), eq(1.0));
+ }
+
+ private BaseMatcher<Measure> getTestDetailsMatcher(final String xmlBaseFile) {
+ return new BaseMatcher<Measure>() {
+
+ private Diff diff;
+
+ public boolean matches(Object obj) {
+ try {
+ if ( !ObjectUtils.equals(CoreMetrics.TEST_DATA, ((Measure) obj).getMetric())) {
+ return false;
+ }
+
+ File expectedXML = new File(getClass().getResource("/org/sonar/plugins/surefire/SurefireSensorTest/" + xmlBaseFile).toURI());
+ XMLUnit.setIgnoreWhitespace(true);
+ XMLUnit.setIgnoreDiffBetweenTextAndCDATA(true);
+ XMLUnit.setNormalize(true);
+ XMLUnit.setNormalizeWhitespace(true);
+ diff = XMLUnit.compareXML(new FileReader(expectedXML), new StringReader(((Measure) obj).getData()));
+ return diff.similar();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public void describeTo(Description d) {
+ DetailedDiff dd = new DetailedDiff(diff);
+ d.appendText("XML differences in " + xmlBaseFile + ": " + dd.getAllDifferences());
+ }
+ };
+ }
+
+ private static Project newJarProject() {
+ return new Project("key").setPackaging("jar");
+ }
+
+ private static Project newPomProject() {
+ return new Project("key").setPackaging("pom");
+ }
+}
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotInsertZeroTestsOnClasses/TEST-noTests.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotInsertZeroTestsOnClasses/TEST-noTests.xml
new file mode 100644
index 00000000000..fb55bf567aa
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotInsertZeroTestsOnClasses/TEST-noTests.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="0" time="1,134.193" failures="0"
+ name="ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="1.5.0_06-64" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="&quot;Apple Computer, Inc.&quot;" name="java.vm.vendor"/>
+ <property value="http://apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="FR" name="user.country"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="user.dir"/>
+ <property value="1.5.0_06-112" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="ppc" name="os.arch"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.4.8" name="os.version"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="cmunger" name="user.name"/>
+ <property
+ value="/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-api/2.0/surefire-api-2.0.jar:/Users/cmunger/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar:/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-booter/2.0/surefire-booter-2.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar"
+ name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="fr" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_06" name="java.version"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="Apple Computer, Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://developer.apple.com/java/" name="java.vendor.url.bug"/>
+ <property value="big" name="sun.cpu.endian"/>
+ <property value="UnicodeBig" name="sun.io.unicode.encoding"/>
+ <property value="1040.1.5.0_06-112" name="mrj.version"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotSaveInnerClasses/TEST-org.apache.commons.collections.TestAllPackages.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotSaveInnerClasses/TEST-org.apache.commons.collections.TestAllPackages.xml
new file mode 100644
index 00000000000..e3f5933ba48
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/doNotSaveInnerClasses/TEST-org.apache.commons.collections.TestAllPackages.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite failures="0" time="157.199" errors="18" skipped="0" tests="13025"
+ name="org.apache.commons.collections.TestAllPackages">
+ <properties>
+ <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
+ <property name="sun.boot.library.path"
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Libraries"/>
+ <property name="java.vm.version" value="11.3-b02-83"/>
+ </properties>
+ <testcase time="0.012" classname="org.apache.commons.collections.bidimap.AbstractTestBidiMap"
+ name="testMapEntrySetIteratorEntrySetValueCrossCheck"/>
+ <testcase time="0.001" classname="org.apache.commons.collections.bidimap.AbstractTestBidiMap"
+ name="testMapEntrySetIteratorEntry"/>
+ <testcase time="0.001" classname="org.apache.commons.collections.bidimap.AbstractTestBidiMap$TestBidiMapEntrySet"
+ name="testCanonicalEmptyCollectionExists"/>
+ <testcase time="0" classname="org.apache.commons.collections.bidimap.AbstractTestBidiMap$TestBidiMapEntrySet"
+ name="testCanonicalFullCollectionExists"/>
+ <testcase time="0.03" classname="org.apache.commons.collections.bidimap.AbstractTestBidiMap$TestInverseBidiMap"
+ name="testMapPut"/>
+ <testcase time="0" classname="org.apache.commons.collections.bidimap.AbstractTestBidiMap$TestInverseBidiMap"
+ name="testMapPutNullKey"/>
+ <testcase time="0.001" classname="org.apache.commons.collections.bidimap.AbstractTestBidiMap$TestInverseBidiMap"
+ name="testMapPutNullValue">
+ <error
+ message="org.apache.commons.collections.FastArrayList; local class incompatible: stream classdesc serialVersionUID = 1566341225434603896, local class serialVersionUID = 7918928878747177577"
+ type="java.io.InvalidClassException">java.io.InvalidClassException:
+ org.apache.commons.collections.FastArrayList;
+ local class incompatible: stream classdesc serialVersionUID = 1566341225434603896, local class serialVersionUID =
+ 7918928878747177577
+ at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
+ at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
+ at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
+ at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
+ at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
+ at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
+ at org.apache.commons.collections.AbstractTestObject.readExternalFormFromStream(AbstractTestObject.java:326)
+ at org.apache.commons.collections.AbstractTestObject.readExternalFormFromDisk(AbstractTestObject.java:301)
+ at org.apache.commons.collections.list.AbstractTestList.testEmptyListCompatibility(AbstractTestList.java:1077)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at junit.framework.TestCase.runTest(TestCase.java:154)
+ at junit.framework.TestCase.runBare(TestCase.java:127)
+ at junit.framework.TestResult$1.protect(TestResult.java:106)
+ at junit.framework.TestResult.runProtected(TestResult.java:124)
+ at junit.framework.TestResult.run(TestResult.java:109)
+ at junit.framework.TestCase.run(TestCase.java:118)
+ at junit.framework.TestSuite.runTest(TestSuite.java:208)
+ at junit.framework.TestSuite.run(TestSuite.java:203)
+ at junit.framework.TestSuite.runTest(TestSuite.java:208)
+ at junit.framework.TestSuite.run(TestSuite.java:203)
+ at junit.framework.TestSuite.runTest(TestSuite.java:208)
+ at junit.framework.TestSuite.run(TestSuite.java:203)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:597)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
+ </error>
+ </testcase>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler$Input.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler$Input.xml
new file mode 100644
index 00000000000..9984c04df8d
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler$Input.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="1" tests="1" time="0" failures="0" name="org.apache.shindig.protocol.TestHandler$Input">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries" name="sun.boot.library.path"/>
+ <property value="1.5.0_19-137" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="target/test-classes/logging.properties" name="java.util.logging.config.file"/>
+ <property value="US" name="user.country"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/simon/projects/shindig/java/common" name="user.dir"/>
+ <property value="1.5.0_19-b02-304" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/simon/projects/shindig/java/common" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed" name="java.endorsed.dirs"/>
+ <property value="i386" name="os.arch"/>
+ <property value="/var/folders/uV/uVfBAWUpFX0gPfeUuu2yaU+++TI/-Tmp-/surefirebooter4356411895122546772.jar" name="surefire.real.class.path"/>
+ <property value="/var/folders/uV/uVfBAWUpFX0gPfeUuu2yaU+++TI/-Tmp-/" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="/Applications/jprofiler5/bin/macos:.:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java" name="java.library.path"/>
+ <property value="/Users/simon/projects/shindig/java/common/target/test-classes:/Users/simon/projects/shindig/java/common/target/generated-classes/cobertura:/Users/simon/.m2/repository/net/oauth/core/oauth/20090531/oauth-20090531.jar:/Users/simon/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/simon/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/simon/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/simon/.m2/repository/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar:/Users/simon/.m2/repository/net/sourceforge/cobertura/cobertura/1.9/cobertura-1.9.jar:/Users/simon/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar:/Users/simon/.m2/repository/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar:/Users/simon/.m2/repository/joda-time/joda-time/1.6/joda-time-1.6.jar:/Users/simon/.m2/repository/net/sf/ehcache/ehcache/1.6.1/ehcache-1.6.1.jar:/Users/simon/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-impl/2.1.2/juel-impl-2.1.2.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-api/2.1.2/juel-api-2.1.2.jar:/Users/simon/.m2/repository/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar:/Users/simon/.m2/repository/org/json/json/20070829/json-20070829.jar:/Users/simon/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/simon/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar:/Users/simon/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar:/Users/simon/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/simon/.m2/repository/org/easymock/easymockclassextension/2.4/easymockclassextension-2.4.jar:/Users/simon/.m2/repository/org/easymock/easymock/2.5.1/easymock-2.5.1.jar:/Users/simon/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/simon/.m2/repository/junit/junit/4.5/junit-4.5.jar:/Users/simon/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/simon/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar:/Users/simon/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar:/Users/simon/.m2/repository/com/google/collections/google-collections/1.0-rc2/google-collections-1.0-rc2.jar:/Users/simon/.m2/repository/com/google/code/guice/guice/2.0/guice-2.0.jar:/Users/simon/.m2/repository/commons-betwixt/commons-betwixt/0.8/commons-betwixt-0.8.jar:/Users/simon/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/simon/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/simon/.m2/repository/commons-digester/commons-digester/1.7/commons-digester-1.7.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.jar:" name="surefire.test.class.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.5.8" name="os.version"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/Users/simon" name="user.home"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="simon" name="user.name"/>
+ <property value="/Users/simon/projects/shindig/java/common/target/test-classes:/Users/simon/projects/shindig/java/common/target/generated-classes/cobertura:/Users/simon/.m2/repository/net/oauth/core/oauth/20090531/oauth-20090531.jar:/Users/simon/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/simon/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/simon/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/simon/.m2/repository/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar:/Users/simon/.m2/repository/net/sourceforge/cobertura/cobertura/1.9/cobertura-1.9.jar:/Users/simon/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar:/Users/simon/.m2/repository/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar:/Users/simon/.m2/repository/joda-time/joda-time/1.6/joda-time-1.6.jar:/Users/simon/.m2/repository/net/sf/ehcache/ehcache/1.6.1/ehcache-1.6.1.jar:/Users/simon/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-impl/2.1.2/juel-impl-2.1.2.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-api/2.1.2/juel-api-2.1.2.jar:/Users/simon/.m2/repository/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar:/Users/simon/.m2/repository/org/json/json/20070829/json-20070829.jar:/Users/simon/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/simon/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar:/Users/simon/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar:/Users/simon/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/simon/.m2/repository/org/easymock/easymockclassextension/2.4/easymockclassextension-2.4.jar:/Users/simon/.m2/repository/org/easymock/easymock/2.5.1/easymock-2.5.1.jar:/Users/simon/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/simon/.m2/repository/junit/junit/4.5/junit-4.5.jar:/Users/simon/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/simon/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar:/Users/simon/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar:/Users/simon/.m2/repository/com/google/collections/google-collections/1.0-rc2/google-collections-1.0-rc2.jar:/Users/simon/.m2/repository/com/google/code/guice/guice/2.0/guice-2.0.jar:/Users/simon/.m2/repository/commons-betwixt/commons-betwixt/0.8/commons-betwixt-0.8.jar:/Users/simon/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/simon/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/simon/.m2/repository/commons-digester/commons-digester/1.7/commons-digester-1.7.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.jar:" name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="en" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_19" name="java.version"/>
+ <property value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext" name="java.ext.dirs"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsfd.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar" name="sun.boot.class.path"/>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/simon/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="1050.1.5.0_19-304" name="mrj.version"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase classname="org.apache.shindig.protocol.TestHandler$Input" time="0.007" name="org.apache.shindig.protocol.TestHandler$Input">
+ <skipped/>
+ </testcase>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler.xml
new file mode 100644
index 00000000000..253127cfd29
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/ignoreSuiteAsInnerClass/TEST-org.apache.shindig.protocol.TestHandler.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="1" tests="1" time="0.001" failures="0" name="org.apache.shindig.protocol.TestHandler">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries" name="sun.boot.library.path"/>
+ <property value="1.5.0_19-137" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="target/test-classes/logging.properties" name="java.util.logging.config.file"/>
+ <property value="US" name="user.country"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/simon/projects/shindig/java/common" name="user.dir"/>
+ <property value="1.5.0_19-b02-304" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/simon/projects/shindig/java/common" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed" name="java.endorsed.dirs"/>
+ <property value="i386" name="os.arch"/>
+ <property value="/var/folders/uV/uVfBAWUpFX0gPfeUuu2yaU+++TI/-Tmp-/surefirebooter4356411895122546772.jar" name="surefire.real.class.path"/>
+ <property value="/var/folders/uV/uVfBAWUpFX0gPfeUuu2yaU+++TI/-Tmp-/" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="/Applications/jprofiler5/bin/macos:.:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java" name="java.library.path"/>
+ <property value="/Users/simon/projects/shindig/java/common/target/test-classes:/Users/simon/projects/shindig/java/common/target/generated-classes/cobertura:/Users/simon/.m2/repository/net/oauth/core/oauth/20090531/oauth-20090531.jar:/Users/simon/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/simon/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/simon/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/simon/.m2/repository/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar:/Users/simon/.m2/repository/net/sourceforge/cobertura/cobertura/1.9/cobertura-1.9.jar:/Users/simon/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar:/Users/simon/.m2/repository/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar:/Users/simon/.m2/repository/joda-time/joda-time/1.6/joda-time-1.6.jar:/Users/simon/.m2/repository/net/sf/ehcache/ehcache/1.6.1/ehcache-1.6.1.jar:/Users/simon/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-impl/2.1.2/juel-impl-2.1.2.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-api/2.1.2/juel-api-2.1.2.jar:/Users/simon/.m2/repository/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar:/Users/simon/.m2/repository/org/json/json/20070829/json-20070829.jar:/Users/simon/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/simon/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar:/Users/simon/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar:/Users/simon/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/simon/.m2/repository/org/easymock/easymockclassextension/2.4/easymockclassextension-2.4.jar:/Users/simon/.m2/repository/org/easymock/easymock/2.5.1/easymock-2.5.1.jar:/Users/simon/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/simon/.m2/repository/junit/junit/4.5/junit-4.5.jar:/Users/simon/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/simon/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar:/Users/simon/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar:/Users/simon/.m2/repository/com/google/collections/google-collections/1.0-rc2/google-collections-1.0-rc2.jar:/Users/simon/.m2/repository/com/google/code/guice/guice/2.0/guice-2.0.jar:/Users/simon/.m2/repository/commons-betwixt/commons-betwixt/0.8/commons-betwixt-0.8.jar:/Users/simon/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/simon/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/simon/.m2/repository/commons-digester/commons-digester/1.7/commons-digester-1.7.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.jar:" name="surefire.test.class.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.5.8" name="os.version"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/Users/simon" name="user.home"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="simon" name="user.name"/>
+ <property value="/Users/simon/projects/shindig/java/common/target/test-classes:/Users/simon/projects/shindig/java/common/target/generated-classes/cobertura:/Users/simon/.m2/repository/net/oauth/core/oauth/20090531/oauth-20090531.jar:/Users/simon/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/simon/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/simon/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/simon/.m2/repository/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar:/Users/simon/.m2/repository/net/sourceforge/cobertura/cobertura/1.9/cobertura-1.9.jar:/Users/simon/.m2/repository/org/apache/ant/ant/1.7.0/ant-1.7.0.jar:/Users/simon/.m2/repository/org/apache/ant/ant-launcher/1.7.0/ant-launcher-1.7.0.jar:/Users/simon/.m2/repository/joda-time/joda-time/1.6/joda-time-1.6.jar:/Users/simon/.m2/repository/net/sf/ehcache/ehcache/1.6.1/ehcache-1.6.1.jar:/Users/simon/.m2/repository/xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-impl/2.1.2/juel-impl-2.1.2.jar:/Users/simon/.m2/repository/de/odysseus/juel/juel-api/2.1.2/juel-api-2.1.2.jar:/Users/simon/.m2/repository/commons-fileupload/commons-fileupload/1.2/commons-fileupload-1.2.jar:/Users/simon/.m2/repository/org/json/json/20070829/json-20070829.jar:/Users/simon/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/simon/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar:/Users/simon/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar:/Users/simon/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/simon/.m2/repository/org/easymock/easymockclassextension/2.4/easymockclassextension-2.4.jar:/Users/simon/.m2/repository/org/easymock/easymock/2.5.1/easymock-2.5.1.jar:/Users/simon/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/simon/.m2/repository/junit/junit/4.5/junit-4.5.jar:/Users/simon/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/simon/.m2/repository/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar:/Users/simon/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar:/Users/simon/.m2/repository/com/google/collections/google-collections/1.0-rc2/google-collections-1.0-rc2.jar:/Users/simon/.m2/repository/com/google/code/guice/guice/2.0/guice-2.0.jar:/Users/simon/.m2/repository/commons-betwixt/commons-betwixt/0.8/commons-betwixt-0.8.jar:/Users/simon/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/simon/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/simon/.m2/repository/commons-digester/commons-digester/1.7/commons-digester-1.7.jar:/Users/simon/.m2/repository/commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.jar:" name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="en" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_19" name="java.version"/>
+ <property value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext" name="java.ext.dirs"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsfd.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar" name="sun.boot.class.path"/>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/simon/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="1050.1.5.0_19-304" name="mrj.version"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase classname="org.apache.shindig.protocol.TestHandler" time="0.003" name="org.apache.shindig.protocol.TestHandler">
+ <skipped/>
+ </testcase>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.SonarMojoTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.SonarMojoTest.xml
new file mode 100644
index 00000000000..c11af664afb
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.SonarMojoTest.xml
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="5" time="9.138" failures="0" name="ch.hortis.sonar.mvn.SonarMojoTest">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="1.5.0_06-64" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="&quot;Apple Computer, Inc.&quot;" name="java.vm.vendor"/>
+ <property value="http://apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="FR" name="user.country"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="user.dir"/>
+ <property value="1.5.0_06-112" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="ppc" name="os.arch"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.4.8" name="os.version"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="cmunger" name="user.name"/>
+ <property
+ value="/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-api/2.0/surefire-api-2.0.jar:/Users/cmunger/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar:/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-booter/2.0/surefire-booter-2.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar"
+ name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="fr" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_06" name="java.version"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="Apple Computer, Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://developer.apple.com/java/" name="java.vendor.url.bug"/>
+ <property value="big" name="sun.cpu.endian"/>
+ <property value="UnicodeBig" name="sun.io.unicode.encoding"/>
+ <property value="1040.1.5.0_06-112" name="mrj.version"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase time="0.035" name="testGetUnKnownCollector"/>
+ <testcase time="0" name="testGetJDependsCollector"/>
+ <testcase time="0" name="testGetJavaNCSSCollector"/>
+ <testcase time="0" name="testGetCloverCollector"/>
+ <testcase time="0.644" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.015" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.044" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.013" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.024" name="testGetEmptyJdbcPassword"/>
+ <testcase time="6.889" name="testPopulateWithoutAnyReport"/>
+ <testcase time="0.697" name="testPopulateWithJavaNcssReport"/>
+ <testcase time="0.665" name="testPopulateWithJDependsReport"/>
+ <testcase time="0.283" name="testPopulateWithCloverReport"/>
+ <testcase time="0.592" name="testPopulateWithCheckstyleReport"/>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest.xml
new file mode 100644
index 00000000000..71e443db9e4
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="2" time="1,134.193" failures="0"
+ name="ch.hortis.sonar.mvn.mc.CheckstyleCollectorTest">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="1.5.0_06-64" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="&quot;Apple Computer, Inc.&quot;" name="java.vm.vendor"/>
+ <property value="http://apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="FR" name="user.country"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="user.dir"/>
+ <property value="1.5.0_06-112" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="ppc" name="os.arch"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.4.8" name="os.version"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="cmunger" name="user.name"/>
+ <property
+ value="/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-api/2.0/surefire-api-2.0.jar:/Users/cmunger/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar:/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-booter/2.0/surefire-booter-2.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar"
+ name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="fr" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_06" name="java.version"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="Apple Computer, Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://developer.apple.com/java/" name="java.vendor.url.bug"/>
+ <property value="big" name="sun.cpu.endian"/>
+ <property value="UnicodeBig" name="sun.io.unicode.encoding"/>
+ <property value="1040.1.5.0_06-112" name="mrj.version"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase time="0.035" name="testGetUnKnownCollector"/>
+ <testcase time="0" name="testGetJDependsCollector"/>
+ <testcase time="0" name="testGetJavaNCSSCollector"/>
+ <testcase time="0" name="testGetCloverCollector"/>
+ <testcase time="0.644" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.015" name="testCollectWithPluginConfiguration"/>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CloverCollectorTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CloverCollectorTest.xml
new file mode 100644
index 00000000000..f803b695a45
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.CloverCollectorTest.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="2" time="0.061" failures="0" name="ch.hortis.sonar.mvn.mc.CloverCollectorTest">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="1.5.0_06-64" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="&quot;Apple Computer, Inc.&quot;" name="java.vm.vendor"/>
+ <property value="http://apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="FR" name="user.country"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="user.dir"/>
+ <property value="1.5.0_06-112" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="ppc" name="os.arch"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.4.8" name="os.version"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="cmunger" name="user.name"/>
+ <property
+ value="/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-api/2.0/surefire-api-2.0.jar:/Users/cmunger/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar:/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-booter/2.0/surefire-booter-2.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar"
+ name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="fr" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_06" name="java.version"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="Apple Computer, Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://developer.apple.com/java/" name="java.vendor.url.bug"/>
+ <property value="big" name="sun.cpu.endian"/>
+ <property value="UnicodeBig" name="sun.io.unicode.encoding"/>
+ <property value="1040.1.5.0_06-112" name="mrj.version"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase time="0.035" name="testGetUnKnownCollector"/>
+ <testcase time="0" name="testGetJDependsCollector"/>
+ <testcase time="0" name="testGetJavaNCSSCollector"/>
+ <testcase time="0" name="testGetCloverCollector"/>
+ <testcase time="0.644" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.015" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.044" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.013" name="testCollectWithPluginConfiguration"/>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JDependsCollectorTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JDependsCollectorTest.xml
new file mode 100644
index 00000000000..0fc45fcaaf6
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JDependsCollectorTest.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="2" time="0.031" failures="0"
+ name="ch.hortis.sonar.mvn.mc.JDependsCollectorTest">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="1.5.0_06-64" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="&quot;Apple Computer, Inc.&quot;" name="java.vm.vendor"/>
+ <property value="http://apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="FR" name="user.country"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="user.dir"/>
+ <property value="1.5.0_06-112" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="ppc" name="os.arch"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.4.8" name="os.version"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="cmunger" name="user.name"/>
+ <property
+ value="/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-api/2.0/surefire-api-2.0.jar:/Users/cmunger/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar:/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-booter/2.0/surefire-booter-2.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar"
+ name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="fr" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_06" name="java.version"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="Apple Computer, Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://developer.apple.com/java/" name="java.vendor.url.bug"/>
+ <property value="big" name="sun.cpu.endian"/>
+ <property value="UnicodeBig" name="sun.io.unicode.encoding"/>
+ <property value="1040.1.5.0_06-112" name="mrj.version"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase time="0.035" name="testGetUnKnownCollector"/>
+ <testcase time="0" name="testGetJDependsCollector"/>
+ <testcase time="0" name="testGetJavaNCSSCollector"/>
+ <testcase time="0" name="testGetCloverCollector"/>
+ <testcase time="0.644" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.015" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.044" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.013" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.024" name="testGetEmptyJdbcPassword"/>
+ <testcase time="6.889" name="testPopulateWithoutAnyReport"/>
+ <testcase time="0.697" name="testPopulateWithJavaNcssReport"/>
+ <testcase time="0.665" name="testPopulateWithJDependsReport"/>
+ <testcase time="0.283" name="testPopulateWithCloverReport"/>
+ <testcase time="0.592" name="testPopulateWithCheckstyleReport"/>
+ <testcase time="0.014" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.001" name="testCollectWithPluginConfiguration"/>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JavaNCSSCollectorTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JavaNCSSCollectorTest.xml
new file mode 100644
index 00000000000..693f3fa3bf8
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.JavaNCSSCollectorTest.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="2" time="0.08" failures="0"
+ name="ch.hortis.sonar.mvn.mc.JavaNCSSCollectorTest">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="1.5.0_06-64" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="&quot;Apple Computer, Inc.&quot;" name="java.vm.vendor"/>
+ <property value="http://apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="FR" name="user.country"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="user.dir"/>
+ <property value="1.5.0_06-112" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="ppc" name="os.arch"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.4.8" name="os.version"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="cmunger" name="user.name"/>
+ <property
+ value="/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-api/2.0/surefire-api-2.0.jar:/Users/cmunger/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar:/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-booter/2.0/surefire-booter-2.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar"
+ name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="fr" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_06" name="java.version"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="Apple Computer, Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://developer.apple.com/java/" name="java.vendor.url.bug"/>
+ <property value="big" name="sun.cpu.endian"/>
+ <property value="UnicodeBig" name="sun.io.unicode.encoding"/>
+ <property value="1040.1.5.0_06-112" name="mrj.version"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase time="0.035" name="testGetUnKnownCollector"/>
+ <testcase time="0" name="testGetJDependsCollector"/>
+ <testcase time="0" name="testGetJavaNCSSCollector"/>
+ <testcase time="0" name="testGetCloverCollector"/>
+ <testcase time="0.644" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.015" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.044" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.013" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.024" name="testGetEmptyJdbcPassword"/>
+ <testcase time="6.889" name="testPopulateWithoutAnyReport"/>
+ <testcase time="0.697" name="testPopulateWithJavaNcssReport"/>
+ <testcase time="0.665" name="testPopulateWithJDependsReport"/>
+ <testcase time="0.283" name="testPopulateWithCloverReport"/>
+ <testcase time="0.592" name="testPopulateWithCheckstyleReport"/>
+ <testcase time="0.014" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.001" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.074" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.003" name="testCollectWithPluginConfiguration"/>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.MetricsCollectorRegistryTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.MetricsCollectorRegistryTest.xml
new file mode 100644
index 00000000000..dc3b31ac1da
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/many-results/TEST-ch.hortis.sonar.mvn.mc.MetricsCollectorRegistryTest.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="4" time="0.078" failures="0"
+ name="ch.hortis.sonar.mvn.mc.MetricsCollectorRegistryTest">
+ <properties>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="1.5.0_06-64" name="java.vm.version"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="&quot;Apple Computer, Inc.&quot;" name="java.vm.vendor"/>
+ <property value="http://apple.com/" name="java.vendor.url"/>
+ <property value=":" name="path.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="FR" name="user.country"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="user.dir"/>
+ <property value="1.5.0_06-112" name="java.runtime.version"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property value="/Users/cmunger/Documents/workspace/sonar/sonar-maven-plugin" name="basedir"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="ppc" name="os.arch"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="10.4.8" name="os.version"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="" name="user.timezone"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ <property value="cmunger" name="user.name"/>
+ <property
+ value="/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-api/2.0/surefire-api-2.0.jar:/Users/cmunger/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar:/Users/cmunger/.m2/repository/org/apache/maven/surefire/surefire-booter/2.0/surefire-booter-2.0.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/14compatibility.jar"
+ name="java.class.path"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value="fr" name="user.language"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="1.5.0_06" name="java.version"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="Apple Computer, Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="/" name="file.separator"/>
+ <property value="http://developer.apple.com/java/" name="java.vendor.url.bug"/>
+ <property value="big" name="sun.cpu.endian"/>
+ <property value="UnicodeBig" name="sun.io.unicode.encoding"/>
+ <property value="1040.1.5.0_06-112" name="mrj.version"/>
+ <property value="" name="sun.cpu.isalist"/>
+ </properties>
+ <testcase time="0.035" name="testGetUnKnownCollector"/>
+ <testcase time="0" name="testGetJDependsCollector"/>
+ <testcase time="0" name="testGetJavaNCSSCollector"/>
+ <testcase time="0" name="testGetCloverCollector"/>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/measuresShouldNotIncludeSkippedTests/TEST-FooTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/measuresShouldNotIncludeSkippedTests/TEST-FooTest.xml
new file mode 100644
index 00000000000..7268a352cdc
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/measuresShouldNotIncludeSkippedTests/TEST-FooTest.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="1" tests="3" time="0.032" failures="1" name="org.sonar.Foo">
+ <properties>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="../Resources/Eclipse.icns" name="env.APP_ICON_175"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="6b0270" name="env.SECURITYSESSIONID"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="/var/folders/Ea/Ea1AbxXfF6u1WpNRWAq8q++++TI/-Tmp-/" name="env.TMPDIR"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="1.5.0_16-b06-284" name="java.runtime.version"/>
+ <property value="/tmp/launch-sNnktt/Render" name="env.Apple_PubSub_Socket_Render"/>
+ <property value="/tmp/launch-fxz1jZ/:0" name="env.DISPLAY"/>
+ <property value="cmunger" name="user.name"/>
+ <property value="cmunger" name="env.USER"/>
+ <property value="/bin/bash" name="env.SHELL"/>
+ <property value="0x1F5:0:0" name="env.__CF_USER_TEXT_ENCODING"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="/usr/bin:/bin:/usr/sbin:/sbin" name="env.PATH"/>
+ <property value="en" name="user.language"/>
+ <property value="./testDBStop52578" name="derby.system.home"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="/usr/share/apache-maven-2.0.9/bin/m2.conf" name="classworlds.conf"/>
+ <property value="1.5.0_16" name="java.version"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="" name="sun.cpu.isalist"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="/" name="file.separator"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="US" name="user.country"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="cmunger" name="env.LOGNAME"/>
+ <property value="10.5.6" name="os.version"/>
+ <property value=":" name="path.separator"/>
+ <property value="org.codehaus.classworlds.Launcher" name="env.JAVA_MAIN_CLASS_1410"/>
+ <property value="1.5.0_16-133" name="java.vm.version"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="1" name="env.JAVA_STARTED_ON_FIRST_THREAD_175"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="/usr/share/apache-maven-2.0.9" name="maven.home"/>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/usr/share/apache-maven-2.0.9/boot/classworlds-1.1.jar" name="java.class.path"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="/Users/cmunger" name="env.HOME"/>
+ <property
+ value="/Users/cmunger/dev/workspace/sonar/sonar-core/target/test-classes:/Users/cmunger/dev/workspace/sonar/sonar-core/target/classes:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/picocontainer/picocontainer/2.7/picocontainer-2.7.jar:/Users/cmunger/.m2/repository/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar:/Users/cmunger/.m2/repository/org/slf4j/jcl104-over-slf4j/1.4.3/jcl104-over-slf4j-1.4.3.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-classic/0.9.9/logback-classic-0.9.9.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-core/0.9.9/logback-core-0.9.9.jar:/Users/cmunger/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar:/Users/cmunger/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar:/Users/cmunger/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/cmunger/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar:/Users/cmunger/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/Users/cmunger/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar:/Users/cmunger/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar:/Users/cmunger/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-annotations/3.3.1.GA/hibernate-annotations-3.3.1.GA.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar:/Users/cmunger/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/Users/cmunger/.m2/repository/org/hibernate/ejb3-persistence/1.0.1.GA/ejb3-persistence-1.0.1.GA.jar:/Users/cmunger/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar:/Users/cmunger/.m2/repository/jboss/javassist/3.3.ga/javassist-3.3.ga.jar:/Users/cmunger/.m2/repository/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar:/Users/cmunger/.m2/repository/commons-configuration/commons-configuration/1.5/commons-configuration-1.5.jar:/Users/cmunger/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/cmunger/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/cmunger/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/cmunger/.m2/repository/commons-dbcp/commons-dbcp/1.2.1/commons-dbcp-1.2.1.jar:/Users/cmunger/.m2/repository/commons-pool/commons-pool/1.2/commons-pool-1.2.jar:/Users/cmunger/.m2/repository/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar:/Users/cmunger/.m2/repository/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/cmunger/.m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar:/Users/cmunger/.m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar:/Users/cmunger/.m2/repository/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar:/Users/cmunger/.m2/repository/xpp3/xpp3/1.1.3.3/xpp3-1.1.3.3.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/plugins/sonar-plugin-core/1.7-SNAPSHOT/sonar-plugin-core-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar:/Users/cmunger/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar:/Users/cmunger/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar:/Users/cmunger/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar:/Users/cmunger/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derby/10.4.1.3/derby-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbynet/10.4.1.3/derbynet-10.4.1.3.jar:/Users/cmunger/.m2/repository/junit/junit/4.4/junit-4.4.jar:/Users/cmunger/.m2/repository/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar:/Users/cmunger/.m2/repository/org/dbunit/dbunit/2.2/dbunit-2.2.jar:/Users/cmunger/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/cmunger/.m2/repository/poi/poi/2.5.1-final-20040804/poi-2.5.1-final-20040804.jar:/Users/cmunger/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbyclient/10.4.1.3/derbyclient-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymock/2.3/easymock-2.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymockclassextension/2.3/easymockclassextension-2.3.jar:/Users/cmunger/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/cmunger/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/cmunger/.m2/repository/org/mockito/mockito-all/1.5/mockito-all-1.5.jar:"
+ name="surefire.test.class.path"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="/tmp/launch-a2Hs8j/Listeners" name="env.SSH_AUTH_SOCK"/>
+ <property value="legacy" name="env.COMMAND_MODE"/>
+ <property value="i386" name="os.arch"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="user.dir"/>
+ <property value="1050.1.5.0_16-284" name="mrj.version"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="basedir"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ </properties>
+ <testcase classname="org.sonar.Foo" time="0.005" name="testOne">
+ <failure type="java.lang.AssertionError" message="expected:&lt;2&gt; but was:&lt;1&gt;">java.lang.AssertionError:
+ expected:&lt;2&gt; but was:&lt;1&gt;
+ at org.junit.Assert.fail(Assert.java:74)
+ at org.junit.Assert.failNotEquals(Assert.java:448)
+ at org.junit.Assert.assertEquals(Assert.java:102)
+ at org.junit.Assert.assertEquals(Assert.java:323)
+ at org.junit.Assert.assertEquals(Assert.java:319)
+ at org.sonar.core.ExtensionsFinderTest.shouldFindJdbcDrivers(ExtensionsFinderTest.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+ </failure>
+ </testcase>
+ <testcase classname="org.sonar.Foo" time="0.20" name="testTwo"/>
+ <testcase classname="org.sonar.Foo" time="0.10" name="skippedTest">
+ <skipped/>
+ </testcase>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/no-files/hack b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/no-files/hack
new file mode 100644
index 00000000000..cbaa7ba71ed
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/no-files/hack
@@ -0,0 +1 @@
+hack to find the directory from the CLASSPATH. See the unit test. \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/noSuccessRatioIfNoTests/TEST-FooTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/noSuccessRatioIfNoTests/TEST-FooTest.xml
new file mode 100644
index 00000000000..f4e91d51451
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/noSuccessRatioIfNoTests/TEST-FooTest.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="2" tests="2" time="0.032" failures="0" name="org.sonar.Foo">
+ <properties>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="../Resources/Eclipse.icns" name="env.APP_ICON_175"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="6b0270" name="env.SECURITYSESSIONID"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="/var/folders/Ea/Ea1AbxXfF6u1WpNRWAq8q++++TI/-Tmp-/" name="env.TMPDIR"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="1.5.0_16-b06-284" name="java.runtime.version"/>
+ <property value="/tmp/launch-sNnktt/Render" name="env.Apple_PubSub_Socket_Render"/>
+ <property value="/tmp/launch-fxz1jZ/:0" name="env.DISPLAY"/>
+ <property value="cmunger" name="user.name"/>
+ <property value="cmunger" name="env.USER"/>
+ <property value="/bin/bash" name="env.SHELL"/>
+ <property value="0x1F5:0:0" name="env.__CF_USER_TEXT_ENCODING"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="/usr/bin:/bin:/usr/sbin:/sbin" name="env.PATH"/>
+ <property value="en" name="user.language"/>
+ <property value="./testDBStop52578" name="derby.system.home"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="/usr/share/apache-maven-2.0.9/bin/m2.conf" name="classworlds.conf"/>
+ <property value="1.5.0_16" name="java.version"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="" name="sun.cpu.isalist"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="/" name="file.separator"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="US" name="user.country"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="cmunger" name="env.LOGNAME"/>
+ <property value="10.5.6" name="os.version"/>
+ <property value=":" name="path.separator"/>
+ <property value="org.codehaus.classworlds.Launcher" name="env.JAVA_MAIN_CLASS_1410"/>
+ <property value="1.5.0_16-133" name="java.vm.version"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="1" name="env.JAVA_STARTED_ON_FIRST_THREAD_175"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="/usr/share/apache-maven-2.0.9" name="maven.home"/>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/usr/share/apache-maven-2.0.9/boot/classworlds-1.1.jar" name="java.class.path"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="/Users/cmunger" name="env.HOME"/>
+ <property
+ value="/Users/cmunger/dev/workspace/sonar/sonar-core/target/test-classes:/Users/cmunger/dev/workspace/sonar/sonar-core/target/classes:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/picocontainer/picocontainer/2.7/picocontainer-2.7.jar:/Users/cmunger/.m2/repository/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar:/Users/cmunger/.m2/repository/org/slf4j/jcl104-over-slf4j/1.4.3/jcl104-over-slf4j-1.4.3.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-classic/0.9.9/logback-classic-0.9.9.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-core/0.9.9/logback-core-0.9.9.jar:/Users/cmunger/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar:/Users/cmunger/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar:/Users/cmunger/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/cmunger/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar:/Users/cmunger/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/Users/cmunger/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar:/Users/cmunger/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar:/Users/cmunger/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-annotations/3.3.1.GA/hibernate-annotations-3.3.1.GA.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar:/Users/cmunger/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/Users/cmunger/.m2/repository/org/hibernate/ejb3-persistence/1.0.1.GA/ejb3-persistence-1.0.1.GA.jar:/Users/cmunger/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar:/Users/cmunger/.m2/repository/jboss/javassist/3.3.ga/javassist-3.3.ga.jar:/Users/cmunger/.m2/repository/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar:/Users/cmunger/.m2/repository/commons-configuration/commons-configuration/1.5/commons-configuration-1.5.jar:/Users/cmunger/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/cmunger/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/cmunger/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/cmunger/.m2/repository/commons-dbcp/commons-dbcp/1.2.1/commons-dbcp-1.2.1.jar:/Users/cmunger/.m2/repository/commons-pool/commons-pool/1.2/commons-pool-1.2.jar:/Users/cmunger/.m2/repository/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar:/Users/cmunger/.m2/repository/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/cmunger/.m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar:/Users/cmunger/.m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar:/Users/cmunger/.m2/repository/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar:/Users/cmunger/.m2/repository/xpp3/xpp3/1.1.3.3/xpp3-1.1.3.3.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/plugins/sonar-plugin-core/1.7-SNAPSHOT/sonar-plugin-core-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar:/Users/cmunger/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar:/Users/cmunger/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar:/Users/cmunger/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar:/Users/cmunger/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derby/10.4.1.3/derby-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbynet/10.4.1.3/derbynet-10.4.1.3.jar:/Users/cmunger/.m2/repository/junit/junit/4.4/junit-4.4.jar:/Users/cmunger/.m2/repository/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar:/Users/cmunger/.m2/repository/org/dbunit/dbunit/2.2/dbunit-2.2.jar:/Users/cmunger/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/cmunger/.m2/repository/poi/poi/2.5.1-final-20040804/poi-2.5.1-final-20040804.jar:/Users/cmunger/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbyclient/10.4.1.3/derbyclient-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymock/2.3/easymock-2.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymockclassextension/2.3/easymockclassextension-2.3.jar:/Users/cmunger/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/cmunger/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/cmunger/.m2/repository/org/mockito/mockito-all/1.5/mockito-all-1.5.jar:"
+ name="surefire.test.class.path"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="/tmp/launch-a2Hs8j/Listeners" name="env.SSH_AUTH_SOCK"/>
+ <property value="legacy" name="env.COMMAND_MODE"/>
+ <property value="i386" name="os.arch"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="user.dir"/>
+ <property value="1050.1.5.0_16-284" name="mrj.version"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="basedir"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ </properties>
+ <testcase classname="org.sonar.Foo" time="0.005" name="skippedOne">
+ <skipped/>
+ </testcase>
+ <testcase classname="org.sonar.Foo" time="0.10" name="skippedTwo">
+ <skipped/>
+ </testcase>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/roundingTests/TEST-Rounding.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/roundingTests/TEST-Rounding.xml
new file mode 100644
index 00000000000..c46ab7a9deb
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/roundingTests/TEST-Rounding.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="1" skipped="0" tests="2250" time="0.032" failures="0" name="org.sonar.Foo">
+
+</testsuite> \ 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/SurefireSensorTest/shouldGetReportsFromOverriddenPath/output/hack.txt
new file mode 100644
index 00000000000..b1fdc56ae6f
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/output/hack.txt
@@ -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/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml
new file mode 100644
index 00000000000..4e3df754a65
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromOverriddenPath/pom.xml
@@ -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/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt
new file mode 100644
index 00000000000..b1fdc56ae6f
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/build/junit/hack.txt
@@ -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/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml
new file mode 100644
index 00000000000..4e3df754a65
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromPluginConfiguration/pom.xml
@@ -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/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml
new file mode 100644
index 00000000000..948c4a831e3
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/pom.xml
@@ -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/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt
new file mode 100644
index 00000000000..b1fdc56ae6f
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldGetReportsFromProperty/target/surefire/hack.txt
@@ -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/SurefireSensorTest/shouldHandleMultipleSuitesInSameFile/TESTS-MutlipleSuites.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleMultipleSuitesInSameFile/TESTS-MutlipleSuites.xml
new file mode 100644
index 00000000000..e5bd8c0cdf2
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleMultipleSuitesInSameFile/TESTS-MutlipleSuites.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuites>
+<testsuite errors="0" skipped="1" tests="11" time="0.08" failures="0"
+ name="org.sonar.JavaNCSSCollectorTest">
+ <testcase time="0.013" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.024" name="testGetEmptyJdbcPassword"/>
+ <testcase time="6.889" name="testPopulateWithoutAnyReport"/>
+ <testcase time="0.697" name="testPopulateWithJavaNcssReport"/>
+ <testcase time="0.665" name="testPopulateWithJDependsReport"/>
+ <testcase time="0.283" name="testPopulateWithCloverReport"/>
+ <testcase time="0.592" name="testPopulateWithCheckstyleReport"/>
+ <testcase time="0.014" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.001" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.074" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.003" name="testCollectWithPluginConfiguration"/>
+</testsuite>
+<testsuite errors="0" skipped="1" tests="4" time="0.08" failures="0"
+ name="org.sonar.SecondTest">
+ <testcase time="0.014" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.001" name="testCollectWithPluginConfiguration"/>
+ <testcase time="0.074" name="testCollectWithoutPluginConfiguration"/>
+ <testcase time="0.003" name="testCollectWithPluginConfiguration"/>
+</testsuite>
+</testsuites> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest-expected-result.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest-expected-result.xml
new file mode 100644
index 00000000000..b99f02c18ba
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest-expected-result.xml
@@ -0,0 +1,71 @@
+<tests-details>
+ <testcase status="failure" time="5" name="shouldFindJdbcDrivers">
+ <failure message="expected:&lt;2&gt; but was:&lt;1&gt;"><![CDATA[java.lang.AssertionError: expected:&lt;2&gt; but was:&lt;1&gt;
+ at org.junit.Assert.fail(Assert.java:74)
+ at org.junit.Assert.failNotEquals(Assert.java:448)
+ at org.junit.Assert.assertEquals(Assert.java:102)
+ at org.junit.Assert.assertEquals(Assert.java:323)
+ at org.junit.Assert.assertEquals(Assert.java:319)
+ at org.sonar.core.ExtensionsFinderTest.shouldFindJdbcDrivers(ExtensionsFinderTest.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+]]></failure>
+ </testcase>
+ <testcase status="ok" time="2" name="shouldFailIfNoJdbcDrivers"/>
+ <testcase status="error" time="100" name="shouldFindPlugins">
+ <error message="TEST"><![CDATA[java.lang.RuntimeException: TEST
+ at org.sonar.core.ExtensionsFinderTest.shouldFindPlugins(ExtensionsFinderTest.java:57)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+]]></error>
+ </testcase>
+ <testcase status="ok" time="4" name="shouldNotFailIfNoPlugins"/>
+</tests-details>
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest2-expected-result.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest2-expected-result.xml
new file mode 100644
index 00000000000..e424345714c
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest2-expected-result.xml
@@ -0,0 +1,5 @@
+<tests-details>
+ <testcase status="ok" time="1" name="shouldFindCheckstyleExtensions"/>
+ <testcase status="ok" time="1"
+ name="shouldNotFailIfNoCheckstyleExtensions"/>
+</tests-details>
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest3-expected-result.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest3-expected-result.xml
new file mode 100644
index 00000000000..d4f2edf0e3d
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/ExtensionsFinderTest3-expected-result.xml
@@ -0,0 +1,6 @@
+<tests-details>
+ <testcase status="ok" time="16"
+ name="shouldFindCheckstyleExtensionsFromOverridenPath"/>
+ <testcase status="skipped" time="0"
+ name="shouldFailIfOverridenRulesExtensionsPathDoesNotExist"/>
+</tests-details>
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/TEST-org.sonar.core.ExtensionsFinderTestSuite.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/TEST-org.sonar.core.ExtensionsFinderTestSuite.xml
new file mode 100644
index 00000000000..01787470d98
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldHandleTestSuiteDetails/TEST-org.sonar.core.ExtensionsFinderTestSuite.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="1" skipped="1" tests="8" time="0.032" failures="1" name="org.sonar.core.ExtensionsFinderTestSuite">
+ <properties>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="../Resources/Eclipse.icns" name="env.APP_ICON_175"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="6b0270" name="env.SECURITYSESSIONID"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="/var/folders/Ea/Ea1AbxXfF6u1WpNRWAq8q++++TI/-Tmp-/" name="env.TMPDIR"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="1.5.0_16-b06-284" name="java.runtime.version"/>
+ <property value="/tmp/launch-sNnktt/Render" name="env.Apple_PubSub_Socket_Render"/>
+ <property value="/tmp/launch-fxz1jZ/:0" name="env.DISPLAY"/>
+ <property value="cmunger" name="user.name"/>
+ <property value="cmunger" name="env.USER"/>
+ <property value="/bin/bash" name="env.SHELL"/>
+ <property value="0x1F5:0:0" name="env.__CF_USER_TEXT_ENCODING"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="/usr/bin:/bin:/usr/sbin:/sbin" name="env.PATH"/>
+ <property value="en" name="user.language"/>
+ <property value="./testDBStop52578" name="derby.system.home"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="/usr/share/apache-maven-2.0.9/bin/m2.conf" name="classworlds.conf"/>
+ <property value="1.5.0_16" name="java.version"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="" name="sun.cpu.isalist"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="/" name="file.separator"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="US" name="user.country"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="cmunger" name="env.LOGNAME"/>
+ <property value="10.5.6" name="os.version"/>
+ <property value=":" name="path.separator"/>
+ <property value="org.codehaus.classworlds.Launcher" name="env.JAVA_MAIN_CLASS_1410"/>
+ <property value="1.5.0_16-133" name="java.vm.version"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="1" name="env.JAVA_STARTED_ON_FIRST_THREAD_175"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="/usr/share/apache-maven-2.0.9" name="maven.home"/>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/usr/share/apache-maven-2.0.9/boot/classworlds-1.1.jar" name="java.class.path"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="/Users/cmunger" name="env.HOME"/>
+ <property
+ value="/Users/cmunger/dev/workspace/sonar/sonar-core/target/test-classes:/Users/cmunger/dev/workspace/sonar/sonar-core/target/classes:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/picocontainer/picocontainer/2.7/picocontainer-2.7.jar:/Users/cmunger/.m2/repository/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar:/Users/cmunger/.m2/repository/org/slf4j/jcl104-over-slf4j/1.4.3/jcl104-over-slf4j-1.4.3.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-classic/0.9.9/logback-classic-0.9.9.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-core/0.9.9/logback-core-0.9.9.jar:/Users/cmunger/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar:/Users/cmunger/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar:/Users/cmunger/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/cmunger/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar:/Users/cmunger/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/Users/cmunger/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar:/Users/cmunger/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar:/Users/cmunger/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-annotations/3.3.1.GA/hibernate-annotations-3.3.1.GA.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar:/Users/cmunger/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/Users/cmunger/.m2/repository/org/hibernate/ejb3-persistence/1.0.1.GA/ejb3-persistence-1.0.1.GA.jar:/Users/cmunger/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar:/Users/cmunger/.m2/repository/jboss/javassist/3.3.ga/javassist-3.3.ga.jar:/Users/cmunger/.m2/repository/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar:/Users/cmunger/.m2/repository/commons-configuration/commons-configuration/1.5/commons-configuration-1.5.jar:/Users/cmunger/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/cmunger/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/cmunger/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/cmunger/.m2/repository/commons-dbcp/commons-dbcp/1.2.1/commons-dbcp-1.2.1.jar:/Users/cmunger/.m2/repository/commons-pool/commons-pool/1.2/commons-pool-1.2.jar:/Users/cmunger/.m2/repository/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar:/Users/cmunger/.m2/repository/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/cmunger/.m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar:/Users/cmunger/.m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar:/Users/cmunger/.m2/repository/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar:/Users/cmunger/.m2/repository/xpp3/xpp3/1.1.3.3/xpp3-1.1.3.3.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/plugins/sonar-plugin-core/1.7-SNAPSHOT/sonar-plugin-core-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar:/Users/cmunger/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar:/Users/cmunger/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar:/Users/cmunger/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar:/Users/cmunger/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derby/10.4.1.3/derby-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbynet/10.4.1.3/derbynet-10.4.1.3.jar:/Users/cmunger/.m2/repository/junit/junit/4.4/junit-4.4.jar:/Users/cmunger/.m2/repository/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar:/Users/cmunger/.m2/repository/org/dbunit/dbunit/2.2/dbunit-2.2.jar:/Users/cmunger/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/cmunger/.m2/repository/poi/poi/2.5.1-final-20040804/poi-2.5.1-final-20040804.jar:/Users/cmunger/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbyclient/10.4.1.3/derbyclient-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymock/2.3/easymock-2.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymockclassextension/2.3/easymockclassextension-2.3.jar:/Users/cmunger/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/cmunger/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/cmunger/.m2/repository/org/mockito/mockito-all/1.5/mockito-all-1.5.jar:"
+ name="surefire.test.class.path"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="/tmp/launch-a2Hs8j/Listeners" name="env.SSH_AUTH_SOCK"/>
+ <property value="legacy" name="env.COMMAND_MODE"/>
+ <property value="i386" name="os.arch"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="user.dir"/>
+ <property value="1050.1.5.0_16-284" name="mrj.version"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="basedir"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ </properties>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.005" name="shouldFindJdbcDrivers">
+ <failure type="java.lang.AssertionError" message="expected:&lt;2&gt; but was:&lt;1&gt;">java.lang.AssertionError:
+ expected:&lt;2&gt; but was:&lt;1&gt;
+ at org.junit.Assert.fail(Assert.java:74)
+ at org.junit.Assert.failNotEquals(Assert.java:448)
+ at org.junit.Assert.assertEquals(Assert.java:102)
+ at org.junit.Assert.assertEquals(Assert.java:323)
+ at org.junit.Assert.assertEquals(Assert.java:319)
+ at org.sonar.core.ExtensionsFinderTest.shouldFindJdbcDrivers(ExtensionsFinderTest.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+ </failure>
+ </testcase>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.002" name="shouldFailIfNoJdbcDrivers"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.1" name="shouldFindPlugins">
+ <error type="java.lang.RuntimeException" message="TEST">java.lang.RuntimeException: TEST
+ at org.sonar.core.ExtensionsFinderTest.shouldFindPlugins(ExtensionsFinderTest.java:57)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+ </error>
+ </testcase>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.004" name="shouldNotFailIfNoPlugins"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest2" time="0.001" name="shouldFindCheckstyleExtensions"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest2" time="0.001" name="shouldNotFailIfNoCheckstyleExtensions"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest3" time="0.016"
+ name="shouldFindCheckstyleExtensionsFromOverridenPath"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest3" time="0.001"
+ name="shouldFailIfOverridenRulesExtensionsPathDoesNotExist">
+ <skipped/>
+ </testcase>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldManageClassesWithDefaultPackage/TEST-NoPackagesTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldManageClassesWithDefaultPackage/TEST-NoPackagesTest.xml
new file mode 100644
index 00000000000..d3bb90a58f8
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldManageClassesWithDefaultPackage/TEST-NoPackagesTest.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="0" skipped="0" tests="2" time="0.032" failures="0" name="NoPackagesTest">
+ <properties>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="../Resources/Eclipse.icns" name="env.APP_ICON_175"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="6b0270" name="env.SECURITYSESSIONID"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="/var/folders/Ea/Ea1AbxXfF6u1WpNRWAq8q++++TI/-Tmp-/" name="env.TMPDIR"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="1.5.0_16-b06-284" name="java.runtime.version"/>
+ <property value="/tmp/launch-sNnktt/Render" name="env.Apple_PubSub_Socket_Render"/>
+ <property value="/tmp/launch-fxz1jZ/:0" name="env.DISPLAY"/>
+ <property value="cmunger" name="user.name"/>
+ <property value="cmunger" name="env.USER"/>
+ <property value="/bin/bash" name="env.SHELL"/>
+ <property value="0x1F5:0:0" name="env.__CF_USER_TEXT_ENCODING"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="/usr/bin:/bin:/usr/sbin:/sbin" name="env.PATH"/>
+ <property value="en" name="user.language"/>
+ <property value="./testDBStop52578" name="derby.system.home"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="/usr/share/apache-maven-2.0.9/bin/m2.conf" name="classworlds.conf"/>
+ <property value="1.5.0_16" name="java.version"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="" name="sun.cpu.isalist"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="/" name="file.separator"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="US" name="user.country"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="cmunger" name="env.LOGNAME"/>
+ <property value="10.5.6" name="os.version"/>
+ <property value=":" name="path.separator"/>
+ <property value="org.codehaus.classworlds.Launcher" name="env.JAVA_MAIN_CLASS_1410"/>
+ <property value="1.5.0_16-133" name="java.vm.version"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="1" name="env.JAVA_STARTED_ON_FIRST_THREAD_175"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="/usr/share/apache-maven-2.0.9" name="maven.home"/>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/usr/share/apache-maven-2.0.9/boot/classworlds-1.1.jar" name="java.class.path"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="/Users/cmunger" name="env.HOME"/>
+ <property
+ value="/Users/cmunger/dev/workspace/sonar/sonar-core/target/test-classes:/Users/cmunger/dev/workspace/sonar/sonar-core/target/classes:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/picocontainer/picocontainer/2.7/picocontainer-2.7.jar:/Users/cmunger/.m2/repository/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar:/Users/cmunger/.m2/repository/org/slf4j/jcl104-over-slf4j/1.4.3/jcl104-over-slf4j-1.4.3.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-classic/0.9.9/logback-classic-0.9.9.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-core/0.9.9/logback-core-0.9.9.jar:/Users/cmunger/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar:/Users/cmunger/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar:/Users/cmunger/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/cmunger/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar:/Users/cmunger/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/Users/cmunger/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar:/Users/cmunger/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar:/Users/cmunger/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-annotations/3.3.1.GA/hibernate-annotations-3.3.1.GA.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar:/Users/cmunger/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/Users/cmunger/.m2/repository/org/hibernate/ejb3-persistence/1.0.1.GA/ejb3-persistence-1.0.1.GA.jar:/Users/cmunger/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar:/Users/cmunger/.m2/repository/jboss/javassist/3.3.ga/javassist-3.3.ga.jar:/Users/cmunger/.m2/repository/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar:/Users/cmunger/.m2/repository/commons-configuration/commons-configuration/1.5/commons-configuration-1.5.jar:/Users/cmunger/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/cmunger/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/cmunger/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/cmunger/.m2/repository/commons-dbcp/commons-dbcp/1.2.1/commons-dbcp-1.2.1.jar:/Users/cmunger/.m2/repository/commons-pool/commons-pool/1.2/commons-pool-1.2.jar:/Users/cmunger/.m2/repository/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar:/Users/cmunger/.m2/repository/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/cmunger/.m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar:/Users/cmunger/.m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar:/Users/cmunger/.m2/repository/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar:/Users/cmunger/.m2/repository/xpp3/xpp3/1.1.3.3/xpp3-1.1.3.3.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/plugins/sonar-plugin-core/1.7-SNAPSHOT/sonar-plugin-core-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar:/Users/cmunger/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar:/Users/cmunger/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar:/Users/cmunger/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar:/Users/cmunger/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derby/10.4.1.3/derby-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbynet/10.4.1.3/derbynet-10.4.1.3.jar:/Users/cmunger/.m2/repository/junit/junit/4.4/junit-4.4.jar:/Users/cmunger/.m2/repository/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar:/Users/cmunger/.m2/repository/org/dbunit/dbunit/2.2/dbunit-2.2.jar:/Users/cmunger/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/cmunger/.m2/repository/poi/poi/2.5.1-final-20040804/poi-2.5.1-final-20040804.jar:/Users/cmunger/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbyclient/10.4.1.3/derbyclient-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymock/2.3/easymock-2.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymockclassextension/2.3/easymockclassextension-2.3.jar:/Users/cmunger/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/cmunger/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/cmunger/.m2/repository/org/mockito/mockito-all/1.5/mockito-all-1.5.jar:"
+ name="surefire.test.class.path"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="/tmp/launch-a2Hs8j/Listeners" name="env.SSH_AUTH_SOCK"/>
+ <property value="legacy" name="env.COMMAND_MODE"/>
+ <property value="i386" name="os.arch"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="user.dir"/>
+ <property value="1050.1.5.0_16-284" name="mrj.version"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="basedir"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ </properties>
+ <testcase classname="NoPackagesTest" time="0.001" name="test1"/>
+ <testcase classname="NoPackagesTest" time="0.001" name="test2"/>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldNotFailIfReportsNotFound/pom.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldNotFailIfReportsNotFound/pom.xml
new file mode 100644
index 00000000000..76a22ad8289
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldNotFailIfReportsNotFound/pom.xml
@@ -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>unknown</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/shouldSaveErrorsAndFailuresInXML/TEST-org.sonar.core.ExtensionsFinderTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/TEST-org.sonar.core.ExtensionsFinderTest.xml
new file mode 100644
index 00000000000..5210e86889e
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/TEST-org.sonar.core.ExtensionsFinderTest.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="1" skipped="1" tests="8" time="0.032" failures="1" name="org.sonar.core.ExtensionsFinderTest">
+ <properties>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="../Resources/Eclipse.icns" name="env.APP_ICON_175"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="6b0270" name="env.SECURITYSESSIONID"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="/var/folders/Ea/Ea1AbxXfF6u1WpNRWAq8q++++TI/-Tmp-/" name="env.TMPDIR"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="1.5.0_16-b06-284" name="java.runtime.version"/>
+ <property value="/tmp/launch-sNnktt/Render" name="env.Apple_PubSub_Socket_Render"/>
+ <property value="/tmp/launch-fxz1jZ/:0" name="env.DISPLAY"/>
+ <property value="cmunger" name="user.name"/>
+ <property value="cmunger" name="env.USER"/>
+ <property value="/bin/bash" name="env.SHELL"/>
+ <property value="0x1F5:0:0" name="env.__CF_USER_TEXT_ENCODING"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="/usr/bin:/bin:/usr/sbin:/sbin" name="env.PATH"/>
+ <property value="en" name="user.language"/>
+ <property value="./testDBStop52578" name="derby.system.home"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="/usr/share/apache-maven-2.0.9/bin/m2.conf" name="classworlds.conf"/>
+ <property value="1.5.0_16" name="java.version"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="" name="sun.cpu.isalist"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="/" name="file.separator"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="US" name="user.country"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="cmunger" name="env.LOGNAME"/>
+ <property value="10.5.6" name="os.version"/>
+ <property value=":" name="path.separator"/>
+ <property value="org.codehaus.classworlds.Launcher" name="env.JAVA_MAIN_CLASS_1410"/>
+ <property value="1.5.0_16-133" name="java.vm.version"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="1" name="env.JAVA_STARTED_ON_FIRST_THREAD_175"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="/usr/share/apache-maven-2.0.9" name="maven.home"/>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/usr/share/apache-maven-2.0.9/boot/classworlds-1.1.jar" name="java.class.path"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="/Users/cmunger" name="env.HOME"/>
+ <property
+ value="/Users/cmunger/dev/workspace/sonar/sonar-core/target/test-classes:/Users/cmunger/dev/workspace/sonar/sonar-core/target/classes:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/picocontainer/picocontainer/2.7/picocontainer-2.7.jar:/Users/cmunger/.m2/repository/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar:/Users/cmunger/.m2/repository/org/slf4j/jcl104-over-slf4j/1.4.3/jcl104-over-slf4j-1.4.3.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-classic/0.9.9/logback-classic-0.9.9.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-core/0.9.9/logback-core-0.9.9.jar:/Users/cmunger/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar:/Users/cmunger/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar:/Users/cmunger/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/cmunger/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar:/Users/cmunger/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/Users/cmunger/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar:/Users/cmunger/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar:/Users/cmunger/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-annotations/3.3.1.GA/hibernate-annotations-3.3.1.GA.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar:/Users/cmunger/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/Users/cmunger/.m2/repository/org/hibernate/ejb3-persistence/1.0.1.GA/ejb3-persistence-1.0.1.GA.jar:/Users/cmunger/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar:/Users/cmunger/.m2/repository/jboss/javassist/3.3.ga/javassist-3.3.ga.jar:/Users/cmunger/.m2/repository/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar:/Users/cmunger/.m2/repository/commons-configuration/commons-configuration/1.5/commons-configuration-1.5.jar:/Users/cmunger/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/cmunger/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/cmunger/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/cmunger/.m2/repository/commons-dbcp/commons-dbcp/1.2.1/commons-dbcp-1.2.1.jar:/Users/cmunger/.m2/repository/commons-pool/commons-pool/1.2/commons-pool-1.2.jar:/Users/cmunger/.m2/repository/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar:/Users/cmunger/.m2/repository/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/cmunger/.m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar:/Users/cmunger/.m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar:/Users/cmunger/.m2/repository/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar:/Users/cmunger/.m2/repository/xpp3/xpp3/1.1.3.3/xpp3-1.1.3.3.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/plugins/sonar-plugin-core/1.7-SNAPSHOT/sonar-plugin-core-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar:/Users/cmunger/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar:/Users/cmunger/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar:/Users/cmunger/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar:/Users/cmunger/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derby/10.4.1.3/derby-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbynet/10.4.1.3/derbynet-10.4.1.3.jar:/Users/cmunger/.m2/repository/junit/junit/4.4/junit-4.4.jar:/Users/cmunger/.m2/repository/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar:/Users/cmunger/.m2/repository/org/dbunit/dbunit/2.2/dbunit-2.2.jar:/Users/cmunger/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/cmunger/.m2/repository/poi/poi/2.5.1-final-20040804/poi-2.5.1-final-20040804.jar:/Users/cmunger/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbyclient/10.4.1.3/derbyclient-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymock/2.3/easymock-2.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymockclassextension/2.3/easymockclassextension-2.3.jar:/Users/cmunger/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/cmunger/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/cmunger/.m2/repository/org/mockito/mockito-all/1.5/mockito-all-1.5.jar:"
+ name="surefire.test.class.path"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="/tmp/launch-a2Hs8j/Listeners" name="env.SSH_AUTH_SOCK"/>
+ <property value="legacy" name="env.COMMAND_MODE"/>
+ <property value="i386" name="os.arch"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="user.dir"/>
+ <property value="1050.1.5.0_16-284" name="mrj.version"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="basedir"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ </properties>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.005" name="shouldFindJdbcDrivers">
+ <failure type="java.lang.AssertionError" message="expected:&lt;2&gt; but was:&lt;1&gt;">java.lang.AssertionError:
+ expected:&lt;2&gt; but was:&lt;1&gt;
+ at org.junit.Assert.fail(Assert.java:74)
+ at org.junit.Assert.failNotEquals(Assert.java:448)
+ at org.junit.Assert.assertEquals(Assert.java:102)
+ at org.junit.Assert.assertEquals(Assert.java:323)
+ at org.junit.Assert.assertEquals(Assert.java:319)
+ at org.sonar.core.ExtensionsFinderTest.shouldFindJdbcDrivers(ExtensionsFinderTest.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+ </failure>
+ </testcase>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.002" name="shouldFailIfNoJdbcDrivers"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0" name="shouldFindPlugins">
+ <error type="java.lang.RuntimeException" message="TEST">java.lang.RuntimeException: TEST
+ at org.sonar.core.ExtensionsFinderTest.shouldFindPlugins(ExtensionsFinderTest.java:57)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+ </error>
+ </testcase>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0" name="shouldNotFailIfNoPlugins"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.001" name="shouldFindCheckstyleExtensions"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.001" name="shouldNotFailIfNoCheckstyleExtensions"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.016"
+ name="shouldFindCheckstyleExtensionsFromOverridenPath"/>
+ <testcase classname="org.sonar.core.ExtensionsFinderTest" time="0.001"
+ name="shouldFailIfOverridenRulesExtensionsPathDoesNotExist">
+ <skipped/>
+ </testcase>
+</testsuite> \ No newline at end of file
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/expected-test-details.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/expected-test-details.xml
new file mode 100644
index 00000000000..1eb84eff018
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/shouldSaveErrorsAndFailuresInXML/expected-test-details.xml
@@ -0,0 +1,78 @@
+<tests-details>
+ <testcase status="failure" time="5" name="shouldFindJdbcDrivers">
+ <failure message="expected:&lt;2&gt; but was:&lt;1&gt;"><![CDATA[java.lang.AssertionError: expected:&lt;2&gt; but was:&lt;1&gt;
+ at org.junit.Assert.fail(Assert.java:74)
+ at org.junit.Assert.failNotEquals(Assert.java:448)
+ at org.junit.Assert.assertEquals(Assert.java:102)
+ at org.junit.Assert.assertEquals(Assert.java:323)
+ at org.junit.Assert.assertEquals(Assert.java:319)
+ at org.sonar.core.ExtensionsFinderTest.shouldFindJdbcDrivers(ExtensionsFinderTest.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+]]></failure>
+ </testcase>
+ <testcase status="ok" time="2" name="shouldFailIfNoJdbcDrivers"/>
+ <testcase status="error" time="0" name="shouldFindPlugins">
+ <error message="TEST"><![CDATA[java.lang.RuntimeException: TEST
+ at org.sonar.core.ExtensionsFinderTest.shouldFindPlugins(ExtensionsFinderTest.java:57)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+]]></error>
+ </testcase>
+ <testcase status="ok" time="0" name="shouldNotFailIfNoPlugins"/>
+ <testcase status="ok" time="1" name="shouldFindCheckstyleExtensions"/>
+ <testcase status="ok" time="1"
+ name="shouldNotFailIfNoCheckstyleExtensions"/>
+ <testcase status="ok" time="16"
+ name="shouldFindCheckstyleExtensionsFromOverridenPath"/>
+ <testcase status="skipped" time="0"
+ name="shouldFailIfOverridenRulesExtensionsPathDoesNotExist"/>
+</tests-details>
diff --git a/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/successRatioIsZeroWhenAllTestsFail/TEST-FooTest.xml b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/successRatioIsZeroWhenAllTestsFail/TEST-FooTest.xml
new file mode 100644
index 00000000000..950b8474621
--- /dev/null
+++ b/plugins/sonar-surefire-plugin/src/test/resources/org/sonar/plugins/surefire/SurefireSensorTest/successRatioIsZeroWhenAllTestsFail/TEST-FooTest.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="1" skipped="0" tests="2" time="0.032" failures="1" name="org.sonar.Foo">
+ <properties>
+ <property value="Apple Inc." name="java.vendor"/>
+ <property value="/Users/cmunger/.m2/repository" name="localRepository"/>
+ <property value="../Resources/Eclipse.icns" name="env.APP_ICON_175"/>
+ <property value="SUN_STANDARD" name="sun.java.launcher"/>
+ <property value="HotSpot Client Compiler" name="sun.management.compiler"/>
+ <property value="6b0270" name="env.SECURITYSESSIONID"/>
+ <property value="Mac OS X" name="os.name"/>
+ <property
+ value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar"
+ name="sun.boot.class.path"/>
+ <property value="/var/folders/Ea/Ea1AbxXfF6u1WpNRWAq8q++++TI/-Tmp-/" name="env.TMPDIR"/>
+ <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
+ <property value="1.5.0_16-b06-284" name="java.runtime.version"/>
+ <property value="/tmp/launch-sNnktt/Render" name="env.Apple_PubSub_Socket_Render"/>
+ <property value="/tmp/launch-fxz1jZ/:0" name="env.DISPLAY"/>
+ <property value="cmunger" name="user.name"/>
+ <property value="cmunger" name="env.USER"/>
+ <property value="/bin/bash" name="env.SHELL"/>
+ <property value="0x1F5:0:0" name="env.__CF_USER_TEXT_ENCODING"/>
+ <property value="true" name="awt.nativeDoubleBuffering"/>
+ <property value="/usr/bin:/bin:/usr/sbin:/sbin" name="env.PATH"/>
+ <property value="en" name="user.language"/>
+ <property value="./testDBStop52578" name="derby.system.home"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Libraries"
+ name="sun.boot.library.path"/>
+ <property value="/usr/share/apache-maven-2.0.9/bin/m2.conf" name="classworlds.conf"/>
+ <property value="1.5.0_16" name="java.version"/>
+ <property value="Europe/Zurich" name="user.timezone"/>
+ <property value="32" name="sun.arch.data.model"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="http.nonProxyHosts"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/endorsed"
+ name="java.endorsed.dirs"/>
+ <property value="" name="sun.cpu.isalist"/>
+ <property value="MacRoman" name="sun.jnu.encoding"/>
+ <property value="sun.io" name="file.encoding.pkg"/>
+ <property value="/" name="file.separator"/>
+ <property value="Java Platform API Specification" name="java.specification.name"/>
+ <property value="49.0" name="java.class.version"/>
+ <property value="US" name="user.country"/>
+ <property value="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home" name="java.home"/>
+ <property value="mixed mode, sharing" name="java.vm.info"/>
+ <property value="cmunger" name="env.LOGNAME"/>
+ <property value="10.5.6" name="os.version"/>
+ <property value=":" name="path.separator"/>
+ <property value="org.codehaus.classworlds.Launcher" name="env.JAVA_MAIN_CLASS_1410"/>
+ <property value="1.5.0_16-133" name="java.vm.version"/>
+ <property value="apple.awt.CPrinterJob" name="java.awt.printerjob"/>
+ <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
+ <property value="apple.awt.CToolkit" name="awt.toolkit"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="socksNonProxyHosts"/>
+ <property value="1" name="env.JAVA_STARTED_ON_FIRST_THREAD_175"/>
+ <property value="local|*.local|169.254/16|*.169.254/16" name="ftp.nonProxyHosts"/>
+ <property value="/Users/cmunger" name="user.home"/>
+ <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
+ <property value=".:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java"
+ name="java.library.path"/>
+ <property value="http://www.apple.com/" name="java.vendor.url"/>
+ <property value="Apple Inc." name="java.vm.vendor"/>
+ <property value="false" name="gopherProxySet"/>
+ <property value="/usr/share/apache-maven-2.0.9" name="maven.home"/>
+ <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
+ <property value="/usr/share/apache-maven-2.0.9/boot/classworlds-1.1.jar" name="java.class.path"/>
+ <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
+ <property value="1.0" name="java.vm.specification.version"/>
+ <property value="little" name="sun.cpu.endian"/>
+ <property value="unknown" name="sun.os.patch.level"/>
+ <property value="/Users/cmunger" name="env.HOME"/>
+ <property
+ value="/Users/cmunger/dev/workspace/sonar/sonar-core/target/test-classes:/Users/cmunger/dev/workspace/sonar/sonar-core/target/classes:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/picocontainer/picocontainer/2.7/picocontainer-2.7.jar:/Users/cmunger/.m2/repository/org/slf4j/slf4j-api/1.5.0/slf4j-api-1.5.0.jar:/Users/cmunger/.m2/repository/org/slf4j/jcl104-over-slf4j/1.4.3/jcl104-over-slf4j-1.4.3.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-classic/0.9.9/logback-classic-0.9.9.jar:/Users/cmunger/.m2/repository/ch/qos/logback/logback-core/0.9.9/logback-core-0.9.9.jar:/Users/cmunger/.m2/repository/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar:/Users/cmunger/.m2/repository/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar:/Users/cmunger/.m2/repository/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar:/Users/cmunger/.m2/repository/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar:/Users/cmunger/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar:/Users/cmunger/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar:/Users/cmunger/.m2/repository/cglib/cglib/2.1_3/cglib-2.1_3.jar:/Users/cmunger/.m2/repository/asm/asm/1.5.3/asm-1.5.3.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-annotations/3.3.1.GA/hibernate-annotations-3.3.1.GA.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar:/Users/cmunger/.m2/repository/commons-logging/commons-logging/1.1/commons-logging-1.1.jar:/Users/cmunger/.m2/repository/org/hibernate/ejb3-persistence/1.0.1.GA/ejb3-persistence-1.0.1.GA.jar:/Users/cmunger/.m2/repository/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-entitymanager/3.3.1.ga/hibernate-entitymanager-3.3.1.ga.jar:/Users/cmunger/.m2/repository/org/hibernate/hibernate-validator/3.0.0.ga/hibernate-validator-3.0.0.ga.jar:/Users/cmunger/.m2/repository/jboss/javassist/3.3.ga/javassist-3.3.ga.jar:/Users/cmunger/.m2/repository/jboss/jboss-common-core/2.0.4.GA/jboss-common-core-2.0.4.GA.jar:/Users/cmunger/.m2/repository/commons-configuration/commons-configuration/1.5/commons-configuration-1.5.jar:/Users/cmunger/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/cmunger/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/Users/cmunger/.m2/repository/commons-beanutils/commons-beanutils-core/1.7.0/commons-beanutils-core-1.7.0.jar:/Users/cmunger/.m2/repository/commons-io/commons-io/1.4/commons-io-1.4.jar:/Users/cmunger/.m2/repository/commons-dbcp/commons-dbcp/1.2.1/commons-dbcp-1.2.1.jar:/Users/cmunger/.m2/repository/commons-pool/commons-pool/1.2/commons-pool-1.2.jar:/Users/cmunger/.m2/repository/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar:/Users/cmunger/.m2/repository/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-commons/1.7-SNAPSHOT/sonar-commons-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/Users/cmunger/.m2/repository/jfree/jfreechart/1.0.9/jfreechart-1.0.9.jar:/Users/cmunger/.m2/repository/jfree/jcommon/1.0.12/jcommon-1.0.12.jar:/Users/cmunger/.m2/repository/com/thoughtworks/xstream/xstream/1.3/xstream-1.3.jar:/Users/cmunger/.m2/repository/xpp3/xpp3/1.1.3.3/xpp3-1.1.3.3.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/plugins/sonar-plugin-core/1.7-SNAPSHOT/sonar-plugin-core-1.7-SNAPSHOT.jar:/Users/cmunger/.m2/repository/org/codehaus/sonar/sonar-plugin-api/1.7-SNAPSHOT/sonar-plugin-api-1.7-SNAPSHOT-tests.jar:/Users/cmunger/.m2/repository/mysql/mysql-connector-java/5.0.8/mysql-connector-java-5.0.8.jar:/Users/cmunger/.m2/repository/log4j/log4j/1.2.12/log4j-1.2.12.jar:/Users/cmunger/.m2/repository/logkit/logkit/1.0.1/logkit-1.0.1.jar:/Users/cmunger/.m2/repository/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar:/Users/cmunger/.m2/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derby/10.4.1.3/derby-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbynet/10.4.1.3/derbynet-10.4.1.3.jar:/Users/cmunger/.m2/repository/junit/junit/4.4/junit-4.4.jar:/Users/cmunger/.m2/repository/org/hamcrest/hamcrest-all/1.1/hamcrest-all-1.1.jar:/Users/cmunger/.m2/repository/org/dbunit/dbunit/2.2/dbunit-2.2.jar:/Users/cmunger/.m2/repository/junit-addons/junit-addons/1.4/junit-addons-1.4.jar:/Users/cmunger/.m2/repository/poi/poi/2.5.1-final-20040804/poi-2.5.1-final-20040804.jar:/Users/cmunger/.m2/repository/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar:/Users/cmunger/.m2/repository/org/apache/derby/derbyclient/10.4.1.3/derbyclient-10.4.1.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymock/2.3/easymock-2.3.jar:/Users/cmunger/.m2/repository/org/easymock/easymockclassextension/2.3/easymockclassextension-2.3.jar:/Users/cmunger/.m2/repository/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar:/Users/cmunger/.m2/repository/xmlunit/xmlunit/1.2/xmlunit-1.2.jar:/Users/cmunger/.m2/repository/org/mockito/mockito-all/1.5/mockito-all-1.5.jar:"
+ name="surefire.test.class.path"/>
+ <property value="/tmp" name="java.io.tmpdir"/>
+ <property value="http://bugreport.apple.com/" name="java.vendor.url.bug"/>
+ <property value="/tmp/launch-a2Hs8j/Listeners" name="env.SSH_AUTH_SOCK"/>
+ <property value="legacy" name="env.COMMAND_MODE"/>
+ <property value="i386" name="os.arch"/>
+ <property value="apple.awt.CGraphicsEnvironment" name="java.awt.graphicsenv"/>
+ <property
+ value="/Library/Java/Extensions:/System/Library/Java/Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext"
+ name="java.ext.dirs"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="user.dir"/>
+ <property value="1050.1.5.0_16-284" name="mrj.version"/>
+ <property value="
+" name="line.separator"/>
+ <property value="Java HotSpot(TM) Client VM" name="java.vm.name"/>
+ <property value="/Users/cmunger/dev/workspace/sonar/sonar-core" name="basedir"/>
+ <property value="MacRoman" name="file.encoding"/>
+ <property value="1.5" name="java.specification.version"/>
+ </properties>
+ <testcase classname="org.sonar.Foo" time="0.005" name="testOne">
+ <failure type="java.lang.AssertionError" message="expected:&lt;2&gt; but was:&lt;1&gt;">java.lang.AssertionError:
+ expected:&lt;2&gt; but was:&lt;1&gt;
+ at org.junit.Assert.fail(Assert.java:74)
+ at org.junit.Assert.failNotEquals(Assert.java:448)
+ at org.junit.Assert.assertEquals(Assert.java:102)
+ at org.junit.Assert.assertEquals(Assert.java:323)
+ at org.junit.Assert.assertEquals(Assert.java:319)
+ at org.sonar.core.ExtensionsFinderTest.shouldFindJdbcDrivers(ExtensionsFinderTest.java:45)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+ </failure>
+ </testcase>
+ <testcase classname="org.sonar.Foo" time="0" name="testTwo">
+ <error type="java.lang.RuntimeException" message="TEST">java.lang.RuntimeException: TEST
+ at org.sonar.core.ExtensionsFinderTest.shouldFindPlugins(ExtensionsFinderTest.java:57)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
+ at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
+ at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
+ at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
+ at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
+ at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
+ at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
+ at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
+ at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
+ at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
+ at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
+ at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
+ at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
+ at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+ at java.lang.reflect.Method.invoke(Method.java:585)
+ at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
+ at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
+ </error>
+ </testcase>
+</testsuite> \ No newline at end of file