You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2013/01/08 15:55:18 UTC

[3/6] o Fixed testcase on windows. o Fixed 2.2.1 tests by splitting report parser to separate module

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-classWithNoTests.NoMethodsTestCase.xml
----------------------------------------------------------------------
diff --git a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-classWithNoTests.NoMethodsTestCase.xml b/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-classWithNoTests.NoMethodsTestCase.xml
deleted file mode 100644
index 31f7ea5..0000000
--- a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-classWithNoTests.NoMethodsTestCase.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="0" skipped="0" tests="0" time="0" failures="0" name="classWithNoTests.NoMethodsTestCase">
-  <properties>
-    <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre\bin" name="sun.boot.library.path"/>
-    <property value="1.5.0_12-b04" name="java.vm.version"/>
-    <property value="Sun Microsystems Inc." name="java.vm.vendor"/>
-    <property value="http://java.sun.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="US" name="user.country"/>
-    <property value="SUN_STANDARD" name="sun.java.launcher"/>
-    <property value="Service Pack 2" name="sun.os.patch.level"/>
-    <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
-    <property
-        value="C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\default-configuration-classWithNoTests"
-        name="user.dir"/>
-    <property value="1.5.0_12-b04" name="java.runtime.version"/>
-    <property value="sun.awt.Win32GraphicsEnvironment" name="java.awt.graphicsenv"/>
-    <property
-        value="C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\default-configuration-classWithNoTests"
-        name="basedir"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre\lib\endorsed" name="java.endorsed.dirs"/>
-    <property value="x86" name="os.arch"/>
-    <property value="C:\DOCUME~1\DAN~1.FAB\LOCALS~1\Temp\" name="java.io.tmpdir"/>
-    <property value="
-" name="line.separator"/>
-    <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
-    <property value="" name="user.variant"/>
-    <property value="Windows XP" name="os.name"/>
-    <property value="C:\devtools\maven-2.0.8\bin\m2.conf" name="classworlds.conf"/>
-    <property value="Cp1252" name="sun.jnu.encoding"/>
-    <property
-        value="C:\devtools\jdk1.5.0_12\bin;.;C:\WINDOWS\system32;C:\WINDOWS;c:\devtools\apache-ant-1.7.0\bin;C:\Python25;C:\Perl\bin;C:\devtools\php-5.2.3\;c:\devtools\ruby-1.8.6-25\bin;C:\devtools\jdk1.5.0_12\bin;C:\devtools\maven-2.0.8\bin;c:\dan\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\IDM Computer Solutions\UltraEdit-32;C:\Program Files\Subversion\bin;C:\Program Files\cvsnt;C:\Program Files\GNU\GnuPG\pub;c:\cygwin\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\PostgreSQL\8.2\bin;C:\Program Files\Perforce;"
-        name="java.library.path"/>
-    <property
-        value="C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\default-configuration-classWithNoTests\target\test-classes;C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\default-configuration-classWithNoTests\target\classes;c:\weirdlocalrepo\junit\junit\3.8.1\junit-3.8.1.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="5.1" name="os.version"/>
-    <property value="C:\Documents and Settings\dan.fabulich" name="user.home"/>
-    <property value="America/Los_Angeles" name="user.timezone"/>
-    <property value="sun.awt.windows.WPrinterJob" name="java.awt.printerjob"/>
-    <property value="1.5" name="java.specification.version"/>
-    <property value="Cp1252" name="file.encoding"/>
-    <property value="dan.fabulich" name="user.name"/>
-    <property value="C:\devtools\maven-2.0.8\boot\classworlds-1.1.jar" name="java.class.path"/>
-    <property value="1.0" name="java.vm.specification.version"/>
-    <property value="32" name="sun.arch.data.model"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre" name="java.home"/>
-    <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
-    <property value="en" name="user.language"/>
-    <property value="sun.awt.windows.WToolkit" name="awt.toolkit"/>
-    <property value="mixed mode" name="java.vm.info"/>
-    <property value="1.5.0_12" name="java.version"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre\lib\ext" name="java.ext.dirs"/>
-    <property
-        value="C:\devtools\jdk1.5.0_12\jre\lib\rt.jar;C:\devtools\jdk1.5.0_12\jre\lib\i18n.jar;C:\devtools\jdk1.5.0_12\jre\lib\sunrsasign.jar;C:\devtools\jdk1.5.0_12\jre\lib\jsse.jar;C:\devtools\jdk1.5.0_12\jre\lib\jce.jar;C:\devtools\jdk1.5.0_12\jre\lib\charsets.jar;C:\devtools\jdk1.5.0_12\jre\classes"
-        name="sun.boot.class.path"/>
-    <property value="Sun Microsystems Inc." name="java.vendor"/>
-    <property value="C:\devtools\maven-2.0.8" name="maven.home"/>
-    <property value="c:\weirdlocalrepo" name="localRepository"/>
-    <property value="\" name="file.separator"/>
-    <property value="http://java.sun.com/cgi-bin/bugreport.cgi" name="java.vendor.url.bug"/>
-    <property value="little" name="sun.cpu.endian"/>
-    <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
-    <property value="windows" name="sun.desktop"/>
-    <property value="pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86" name="sun.cpu.isalist"/>
-  </properties>
-</testsuite>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.CircleTest.xml
----------------------------------------------------------------------
diff --git a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.CircleTest.xml b/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.CircleTest.xml
deleted file mode 100644
index 1ce1d3d..0000000
--- a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.CircleTest.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<testsuite errors="1" tests="8" time="0.201" failures="1" name="com.shape.CircleTest">
-  <properties>
-    <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
-    <property value="c:\japps\jdk1.5.0_04\jre\bin" name="sun.boot.library.path"/>
-    <property value="1.5.0_04-b05" name="java.vm.version"/>
-    <property value="Sun Microsystems Inc." name="java.vm.vendor"/>
-    <property value="http://java.sun.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="US" name="user.country"/>
-    <property value="Service Pack 2" name="sun.os.patch.level"/>
-    <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
-    <property value="C:\JAppsCode\mergere-maven\plugins\sample-projects\junit-report-tester" name="user.dir"/>
-    <property value="1.5.0_04-b05" name="java.runtime.version"/>
-    <property value="sun.awt.Win32GraphicsEnvironment" name="java.awt.graphicsenv"/>
-    <property value="C:\JAppsCode\mergere-maven\plugins\sample-projects\junit-report-tester" name="basedir"/>
-    <property value="c:\japps\jdk1.5.0_04\jre\lib\endorsed" name="java.endorsed.dirs"/>
-    <property value="x86" name="os.arch"/>
-    <property value="C:\DOCUME~1\Jontri\LOCALS~1\Temp\" name="java.io.tmpdir"/>
-    <property value="
-" name="line.separator"/>
-    <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
-    <property value="" name="user.variant"/>
-    <property value="Windows XP" name="os.name"/>
-    <property value="C:\JApps\maven-2.0-beta-1\bin\m2.conf" name="classworlds.conf"/>
-    <property value="Cp1252" name="sun.jnu.encoding"/>
-    <property
-        value="c:\japps\jdk1.5.0_04\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\JApps\maven-2.0-beta-1\bin;C:\JApps\maven-1.0.2\bin;c:\BatchFile;C:\Program Files\cvsnt;C:\JApps\svn-1.1.4\bin;C:\JApps\ant-1.6.2\bin;"
-        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="5.1" name="os.version"/>
-    <property value="C:\Documents and Settings\Jontri" name="user.home"/>
-    <property value="Asia/Shanghai" name="user.timezone"/>
-    <property value="sun.awt.windows.WPrinterJob" name="java.awt.printerjob"/>
-    <property value="Cp1252" name="file.encoding"/>
-    <property value="1.5" name="java.specification.version"/>
-    <property value="Jontri" name="user.name"/>
-    <property value="C:\JApps\maven-2.0-beta-1\core\boot\classworlds-1.1-alpha-2.jar" name="java.class.path"/>
-    <property value="1.0" name="java.vm.specification.version"/>
-    <property value="32" name="sun.arch.data.model"/>
-    <property value="c:\japps\jdk1.5.0_04\jre" name="java.home"/>
-    <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
-    <property value="en" name="user.language"/>
-    <property value="sun.awt.windows.WToolkit" name="awt.toolkit"/>
-    <property value="mixed mode, sharing" name="java.vm.info"/>
-    <property value="1.5.0_04" name="java.version"/>
-    <property value="c:\japps\jdk1.5.0_04\jre\lib\ext" name="java.ext.dirs"/>
-    <property
-        value="c:\japps\jdk1.5.0_04\jre\lib\rt.jar;c:\japps\jdk1.5.0_04\jre\lib\i18n.jar;c:\japps\jdk1.5.0_04\jre\lib\sunrsasign.jar;c:\japps\jdk1.5.0_04\jre\lib\jsse.jar;c:\japps\jdk1.5.0_04\jre\lib\jce.jar;c:\japps\jdk1.5.0_04\jre\lib\charsets.jar;c:\japps\jdk1.5.0_04\jre\classes"
-        name="sun.boot.class.path"/>
-    <property value="Sun Microsystems Inc." name="java.vendor"/>
-    <property value="C:\JApps\maven-2.0-beta-1" name="maven.home"/>
-    <property value="C:\Documents and Settings\Jontri\.m2\repository" name="localRepository"/>
-    <property value="\" name="file.separator"/>
-    <property value="http://java.sun.com/cgi-bin/bugreport.cgi" name="java.vendor.url.bug"/>
-    <property value="little" name="sun.cpu.endian"/>
-    <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
-    <property value="windows" name="sun.desktop"/>
-    <property value="pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86" name="sun.cpu.isalist"/>
-  </properties>
-  <testcase time="0.01" name="testX"/>
-  <testcase time="0" name="testY"/>
-  <testcase time="0" name="testXY"/>
-  <testcase time="0.01" name="testRadius">
-    <failure type="junit.framework.AssertionFailedError" message="expected:&lt;20&gt; but was:&lt;10&gt;">
-      junit.framework.AssertionFailedError: expected:&lt;20&gt; but was:&lt;10&gt;
-      at junit.framework.Assert.fail(Assert.java:47)
-      at junit.framework.Assert.failNotEquals(Assert.java:282)
-      at junit.framework.Assert.assertEquals(Assert.java:64)
-      at junit.framework.Assert.assertEquals(Assert.java:201)
-      at junit.framework.Assert.assertEquals(Assert.java:207)
-      at com.shape.CircleTest.testRadius(CircleTest.java:34)
-      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 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 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.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246)
-      at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220)
-      at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203)
-      at org.codehaus.surefire.Surefire.run(Surefire.java:152)
-      at org.codehaus.surefire.Surefire.run(Surefire.java:76)
-      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.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104)
-      at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241)
-      at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131)
-      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186)
-      at org.apache.maven.cli.MavenCli.main(MavenCli.java:316)
-      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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
-      at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
-      at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
-      at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
-    </failure>
-    <system-out>[OUT] : Getting the diameter
-    </system-out>
-    <system-err>[ERR] : Getting the Circumference
-    </system-err>
-  </testcase>
-  <testcase time="0.02" name="testProperties">
-    <error type="java.lang.ArithmeticException" message="/ by zero">java.lang.ArithmeticException: / by zero
-      at com.shape.CircleTest.testProperties(CircleTest.java:44)
-      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 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 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.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246)
-      at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220)
-      at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203)
-      at org.codehaus.surefire.Surefire.run(Surefire.java:152)
-      at org.codehaus.surefire.Surefire.run(Surefire.java:76)
-      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.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104)
-      at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241)
-      at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131)
-      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186)
-      at org.apache.maven.cli.MavenCli.main(MavenCli.java:316)
-      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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
-      at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
-      at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
-      at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
-    </error>
-    <system-out>[OUT] : Getting the diameter
-    </system-out>
-    <system-err>[ERR] : Getting the Circumference
-    </system-err>
-  </testcase>
-  <testcase time="0" name="testPI"/>
-  <testcase time="0.01" name="testCircumference"/>
-  <testcase time="0" name="testDiameter"/>
-</testsuite>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.PointTest.xml
----------------------------------------------------------------------
diff --git a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.PointTest.xml b/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.PointTest.xml
deleted file mode 100644
index 7dda584..0000000
--- a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-com.shape.PointTest.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<testsuite errors="0" tests="3" time="0.01" failures="1" name="com.shape.PointTest">
-  <properties>
-    <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
-    <property value="c:\japps\jdk1.5.0_04\jre\bin" name="sun.boot.library.path"/>
-    <property value="1.5.0_04-b05" name="java.vm.version"/>
-    <property value="Sun Microsystems Inc." name="java.vm.vendor"/>
-    <property value="http://java.sun.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="US" name="user.country"/>
-    <property value="Service Pack 2" name="sun.os.patch.level"/>
-    <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
-    <property value="C:\JAppsCode\mergere-maven\plugins\sample-projects\junit-report-tester" name="user.dir"/>
-    <property value="1.5.0_04-b05" name="java.runtime.version"/>
-    <property value="sun.awt.Win32GraphicsEnvironment" name="java.awt.graphicsenv"/>
-    <property value="C:\JAppsCode\mergere-maven\plugins\sample-projects\junit-report-tester" name="basedir"/>
-    <property value="c:\japps\jdk1.5.0_04\jre\lib\endorsed" name="java.endorsed.dirs"/>
-    <property value="x86" name="os.arch"/>
-    <property value="C:\DOCUME~1\Jontri\LOCALS~1\Temp\" name="java.io.tmpdir"/>
-    <property value="
-" name="line.separator"/>
-    <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
-    <property value="" name="user.variant"/>
-    <property value="Windows XP" name="os.name"/>
-    <property value="C:\JApps\maven-2.0-beta-1\bin\m2.conf" name="classworlds.conf"/>
-    <property value="Cp1252" name="sun.jnu.encoding"/>
-    <property
-        value="c:\japps\jdk1.5.0_04\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\JApps\maven-2.0-beta-1\bin;C:\JApps\maven-1.0.2\bin;c:\BatchFile;C:\Program Files\cvsnt;C:\JApps\svn-1.1.4\bin;C:\JApps\ant-1.6.2\bin;"
-        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="5.1" name="os.version"/>
-    <property value="C:\Documents and Settings\Jontri" name="user.home"/>
-    <property value="Asia/Shanghai" name="user.timezone"/>
-    <property value="sun.awt.windows.WPrinterJob" name="java.awt.printerjob"/>
-    <property value="Cp1252" name="file.encoding"/>
-    <property value="1.5" name="java.specification.version"/>
-    <property value="Jontri" name="user.name"/>
-    <property value="C:\JApps\maven-2.0-beta-1\core\boot\classworlds-1.1-alpha-2.jar" name="java.class.path"/>
-    <property value="1.0" name="java.vm.specification.version"/>
-    <property value="32" name="sun.arch.data.model"/>
-    <property value="c:\japps\jdk1.5.0_04\jre" name="java.home"/>
-    <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
-    <property value="en" name="user.language"/>
-    <property value="sun.awt.windows.WToolkit" name="awt.toolkit"/>
-    <property value="mixed mode, sharing" name="java.vm.info"/>
-    <property value="1.5.0_04" name="java.version"/>
-    <property value="c:\japps\jdk1.5.0_04\jre\lib\ext" name="java.ext.dirs"/>
-    <property
-        value="c:\japps\jdk1.5.0_04\jre\lib\rt.jar;c:\japps\jdk1.5.0_04\jre\lib\i18n.jar;c:\japps\jdk1.5.0_04\jre\lib\sunrsasign.jar;c:\japps\jdk1.5.0_04\jre\lib\jsse.jar;c:\japps\jdk1.5.0_04\jre\lib\jce.jar;c:\japps\jdk1.5.0_04\jre\lib\charsets.jar;c:\japps\jdk1.5.0_04\jre\classes"
-        name="sun.boot.class.path"/>
-    <property value="Sun Microsystems Inc." name="java.vendor"/>
-    <property value="C:\JApps\maven-2.0-beta-1" name="maven.home"/>
-    <property value="C:\Documents and Settings\Jontri\.m2\repository" name="localRepository"/>
-    <property value="\" name="file.separator"/>
-    <property value="http://java.sun.com/cgi-bin/bugreport.cgi" name="java.vendor.url.bug"/>
-    <property value="little" name="sun.cpu.endian"/>
-    <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
-    <property value="windows" name="sun.desktop"/>
-    <property value="pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86" name="sun.cpu.isalist"/>
-  </properties>
-  <testcase time="0" name="testX"/>
-  <testcase time="0" name="testY"/>
-  <testcase time="0" name="testXY">
-    <failure type="junit.framework.AssertionFailedError" message="expected:&lt;0&gt; but was:&lt;1&gt;">
-      junit.framework.AssertionFailedError: expected:&lt;0&gt; but was:&lt;1&gt;
-      at junit.framework.Assert.fail(Assert.java:47)
-      at junit.framework.Assert.failNotEquals(Assert.java:282)
-      at junit.framework.Assert.assertEquals(Assert.java:64)
-      at junit.framework.Assert.assertEquals(Assert.java:201)
-      at junit.framework.Assert.assertEquals(Assert.java:207)
-      at com.shape.PointTest.testXY(PointTest.java:28)
-      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 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 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.codehaus.surefire.battery.JUnitBattery.executeJUnit(JUnitBattery.java:246)
-      at org.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:220)
-      at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:203)
-      at org.codehaus.surefire.Surefire.run(Surefire.java:152)
-      at org.codehaus.surefire.Surefire.run(Surefire.java:76)
-      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.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:104)
-      at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:241)
-      at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:357)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:479)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:452)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:438)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
-      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:131)
-      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186)
-      at org.apache.maven.cli.MavenCli.main(MavenCli.java:316)
-      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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
-      at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
-      at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
-      at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
-    </failure>
-    <system-out></system-out>
-    <system-err></system-err>
-  </testcase>
-</testsuite>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-junit.twoTestCaseSuite.WrapperTestSuite.xml
----------------------------------------------------------------------
diff --git a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-junit.twoTestCaseSuite.WrapperTestSuite.xml b/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-junit.twoTestCaseSuite.WrapperTestSuite.xml
deleted file mode 100644
index cd94387..0000000
--- a/maven-surefire-report-plugin/src/test/resources/test-reports/TEST-junit.twoTestCaseSuite.WrapperTestSuite.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="0" skipped="0" tests="2" time="0.094" failures="0" name="junit.twoTestCaseSuite.WrapperTestSuite">
-  <properties>
-    <property value="Java(TM) 2 Runtime Environment, Standard Edition" name="java.runtime.name"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre\bin" name="sun.boot.library.path"/>
-    <property value="1.5.0_12-b04" name="java.vm.version"/>
-    <property value="Sun Microsystems Inc." name="java.vm.vendor"/>
-    <property value="http://java.sun.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="US" name="user.country"/>
-    <property value="SUN_STANDARD" name="sun.java.launcher"/>
-    <property value="Service Pack 2" name="sun.os.patch.level"/>
-    <property value="Java Virtual Machine Specification" name="java.vm.specification.name"/>
-    <property value="C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\junit-twoTestCaseSuite"
-              name="user.dir"/>
-    <property value="1.5.0_12-b04" name="java.runtime.version"/>
-    <property value="sun.awt.Win32GraphicsEnvironment" name="java.awt.graphicsenv"/>
-    <property value="C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\junit-twoTestCaseSuite"
-              name="basedir"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre\lib\endorsed" name="java.endorsed.dirs"/>
-    <property value="x86" name="os.arch"/>
-    <property value="C:\DOCUME~1\DAN~1.FAB\LOCALS~1\Temp\" name="java.io.tmpdir"/>
-    <property value="
-" name="line.separator"/>
-    <property value="Sun Microsystems Inc." name="java.vm.specification.vendor"/>
-    <property value="" name="user.variant"/>
-    <property value="Windows XP" name="os.name"/>
-    <property value="C:\devtools\maven-2.0.8\bin\m2.conf" name="classworlds.conf"/>
-    <property value="Cp1252" name="sun.jnu.encoding"/>
-    <property
-        value="C:\devtools\jdk1.5.0_12\bin;.;C:\WINDOWS\system32;C:\WINDOWS;c:\devtools\apache-ant-1.7.0\bin;C:\Python25;C:\Perl\bin;C:\devtools\php-5.2.3\;c:\devtools\ruby-1.8.6-25\bin;C:\devtools\jdk1.5.0_12\bin;C:\devtools\maven-2.0.8\bin;c:\dan\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\IDM Computer Solutions\UltraEdit-32;C:\Program Files\Subversion\bin;C:\Program Files\cvsnt;C:\Program Files\GNU\GnuPG\pub;c:\cygwin\bin;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\PostgreSQL\8.2\bin;C:\Program Files\Perforce;"
-        name="java.library.path"/>
-    <property
-        value="C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\junit-twoTestCaseSuite\target\test-classes;C:\svn\maven\trunks\surefire\surefire-integration-tests\src\test\resources\junit-twoTestCaseSuite\target\classes;c:\weirdlocalrepo\junit\junit\3.8.1\junit-3.8.1.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="5.1" name="os.version"/>
-    <property value="C:\Documents and Settings\dan.fabulich" name="user.home"/>
-    <property value="America/Los_Angeles" name="user.timezone"/>
-    <property value="sun.awt.windows.WPrinterJob" name="java.awt.printerjob"/>
-    <property value="1.5" name="java.specification.version"/>
-    <property value="Cp1252" name="file.encoding"/>
-    <property value="dan.fabulich" name="user.name"/>
-    <property value="C:\devtools\maven-2.0.8\boot\classworlds-1.1.jar" name="java.class.path"/>
-    <property value="1.0" name="java.vm.specification.version"/>
-    <property value="32" name="sun.arch.data.model"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre" name="java.home"/>
-    <property value="Sun Microsystems Inc." name="java.specification.vendor"/>
-    <property value="en" name="user.language"/>
-    <property value="sun.awt.windows.WToolkit" name="awt.toolkit"/>
-    <property value="mixed mode" name="java.vm.info"/>
-    <property value="1.5.0_12" name="java.version"/>
-    <property value="C:\devtools\jdk1.5.0_12\jre\lib\ext" name="java.ext.dirs"/>
-    <property
-        value="C:\devtools\jdk1.5.0_12\jre\lib\rt.jar;C:\devtools\jdk1.5.0_12\jre\lib\i18n.jar;C:\devtools\jdk1.5.0_12\jre\lib\sunrsasign.jar;C:\devtools\jdk1.5.0_12\jre\lib\jsse.jar;C:\devtools\jdk1.5.0_12\jre\lib\jce.jar;C:\devtools\jdk1.5.0_12\jre\lib\charsets.jar;C:\devtools\jdk1.5.0_12\jre\classes"
-        name="sun.boot.class.path"/>
-    <property value="Sun Microsystems Inc." name="java.vendor"/>
-    <property value="C:\devtools\maven-2.0.8" name="maven.home"/>
-    <property value="c:\weirdlocalrepo" name="localRepository"/>
-    <property value="\" name="file.separator"/>
-    <property value="http://java.sun.com/cgi-bin/bugreport.cgi" name="java.vendor.url.bug"/>
-    <property value="little" name="sun.cpu.endian"/>
-    <property value="UnicodeLittle" name="sun.io.unicode.encoding"/>
-    <property value="windows" name="sun.desktop"/>
-    <property value="pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86" name="sun.cpu.isalist"/>
-  </properties>
-  <testcase classname="junit.twoTestCaseSuite.TestTwo" time="0" name="testTwo"/>
-  <testcase classname="junit.twoTestCaseSuite.BasicTest" time="0" name="testSetUp"/>
-</testsuite>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/maven-surefire-report-plugin/src/test/resources/test-reports/com.shape.CircleTest.txt
----------------------------------------------------------------------
diff --git a/maven-surefire-report-plugin/src/test/resources/test-reports/com.shape.CircleTest.txt b/maven-surefire-report-plugin/src/test/resources/test-reports/com.shape.CircleTest.txt
deleted file mode 100644
index 5030dee..0000000
--- a/maven-surefire-report-plugin/src/test/resources/test-reports/com.shape.CircleTest.txt
+++ /dev/null
@@ -1,122 +0,0 @@
--------------------------------------------------------------------------------
-Battery: com.shape.CircleTest
--------------------------------------------------------------------------------
-testX(com.shape.CircleTest)
-testY(com.shape.CircleTest)
-testXY(com.shape.CircleTest)
-testRadius(com.shape.CircleTest)
-
-[ stdout ] ---------------------------------------------------------------
-
-
-[ stderr ] ---------------------------------------------------------------
-
-
-[ stacktrace ] -----------------------------------------------------------
-
-junit.framework.AssertionFailedError: expected:<20> but was:<10>
-	at junit.framework.Assert.fail(Assert.java:47)
-	at junit.framework.Assert.failNotEquals(Assert.java:282)
-	at junit.framework.Assert.assertEquals(Assert.java:64)
-	at junit.framework.Assert.assertEquals(Assert.java:201)
-	at junit.framework.Assert.assertEquals(Assert.java:207)
-	at com.shape.CircleTest.testRadius(CircleTest.java:34)
-	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 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 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.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190)
-	at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:105)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:59)
-	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.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83)
-	at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218)
-	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127)
-	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186)
-	at org.apache.maven.cli.MavenCli.main(MavenCli.java:292)
-	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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
-	at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
-	at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
-	at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
-testProperties(com.shape.CircleTest)
-
-[ stdout ] ---------------------------------------------------------------
-
-
-[ stderr ] ---------------------------------------------------------------
-
-
-[ stacktrace ] -----------------------------------------------------------
-
-java.lang.ArithmeticException: / by zero
-	at com.shape.CircleTest.testProperties(CircleTest.java:44)
-	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 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 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.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190)
-	at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:105)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:59)
-	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.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83)
-	at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218)
-	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127)
-	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186)
-	at org.apache.maven.cli.MavenCli.main(MavenCli.java:292)
-	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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
-	at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
-	at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
-	at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
-testPI(com.shape.CircleTest)
-testCircumference(com.shape.CircleTest)
-testDiameter(com.shape.CircleTest)

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/maven-surefire-report-plugin/src/test/resources/test-reports/com.shapeclone.CircleTest.txt
----------------------------------------------------------------------
diff --git a/maven-surefire-report-plugin/src/test/resources/test-reports/com.shapeclone.CircleTest.txt b/maven-surefire-report-plugin/src/test/resources/test-reports/com.shapeclone.CircleTest.txt
deleted file mode 100644
index 90e3239..0000000
--- a/maven-surefire-report-plugin/src/test/resources/test-reports/com.shapeclone.CircleTest.txt
+++ /dev/null
@@ -1,122 +0,0 @@
--------------------------------------------------------------------------------
-Battery: com.shapeclone.CircleTest
--------------------------------------------------------------------------------
-testX(com.shapeclone.CircleTest)
-testY(com.shapeclone.CircleTest)
-testXY(com.shapeclone.CircleTest)
-testRadius(com.shapeclone.CircleTest)
-
-[ stdout ] ---------------------------------------------------------------
-
-
-[ stderr ] ---------------------------------------------------------------
-
-
-[ stacktrace ] -----------------------------------------------------------
-
-junit.framework.AssertionFailedError: expected:<20> but was:<10>
-	at junit.framework.Assert.fail(Assert.java:47)
-	at junit.framework.Assert.failNotEquals(Assert.java:282)
-	at junit.framework.Assert.assertEquals(Assert.java:64)
-	at junit.framework.Assert.assertEquals(Assert.java:201)
-	at junit.framework.Assert.assertEquals(Assert.java:207)
-	at com.shapeclone.CircleTest.testRadius(CircleTest.java:34)
-	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 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 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.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190)
-	at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:105)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:59)
-	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.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83)
-	at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218)
-	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127)
-	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186)
-	at org.apache.maven.cli.MavenCli.main(MavenCli.java:292)
-	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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
-	at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
-	at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
-	at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
-testProperties(com.shapeclone.CircleTest)
-
-[ stdout ] ---------------------------------------------------------------
-
-
-[ stderr ] ---------------------------------------------------------------
-
-
-[ stacktrace ] -----------------------------------------------------------
-
-java.lang.ArithmeticException: / by zero
-	at com.shapeclone.CircleTest.testProperties(CircleTest.java:44)
-	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 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 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.codehaus.surefire.battery.JUnitBattery.execute(JUnitBattery.java:190)
-	at org.codehaus.surefire.Surefire.executeBattery(Surefire.java:155)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:105)
-	at org.codehaus.surefire.Surefire.run(Surefire.java:59)
-	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.codehaus.surefire.SurefireBooter.run(SurefireBooter.java:83)
-	at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:218)
-	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:361)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:472)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:445)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:431)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268)
-	at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:127)
-	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:186)
-	at org.apache.maven.cli.MavenCli.main(MavenCli.java:292)
-	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.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
-	at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
-	at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
-	at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
-testPI(com.shapeclone.CircleTest)
-testCircumference(com.shapeclone.CircleTest)
-testDiameter(com.shapeclone.CircleTest)

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c29ada6..0fda14a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,7 @@
     <module>surefire-grouper</module>
     <module>surefire-providers</module>
     <module>maven-surefire-common</module>
+    <module>surefire-report-parser</module>
     <module>maven-surefire-plugin</module>
     <module>maven-failsafe-plugin</module>
     <module>maven-surefire-report-plugin</module>
@@ -112,7 +113,7 @@
 
   <properties>
     <mavenVersion>2.0.9</mavenVersion>
-    <shadedVersion>2.13</shadedVersion>
+    <shadedVersion>2.12.4</shadedVersion>
     <mavenPluginPluginVersion>3.2</mavenPluginPluginVersion>
 
 
@@ -158,6 +159,11 @@
         <version>${project.version}</version>
       </dependency>
       <dependency>
+        <groupId>org.apache.maven.reporting</groupId>
+        <artifactId>maven-reporting-api</artifactId>
+        <version>${mavenVersion}</version>
+      </dependency>
+      <dependency>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-core</artifactId>
         <version>${mavenVersion}</version>

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/surefire-integration-tests/pom.xml
----------------------------------------------------------------------
diff --git a/surefire-integration-tests/pom.xml b/surefire-integration-tests/pom.xml
index 8df007e..1fb0fcc 100644
--- a/surefire-integration-tests/pom.xml
+++ b/surefire-integration-tests/pom.xml
@@ -43,8 +43,8 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-surefire-report-plugin</artifactId>
+      <groupId>org.apache.maven.surefire</groupId>
+      <artifactId>surefire-report-parser</artifactId>
       <version>${project.version}</version>
       <scope>test</scope>
     </dependency>

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/surefire-integration-tests/src/test/resources/unicode-testnames/pom.xml
----------------------------------------------------------------------
diff --git a/surefire-integration-tests/src/test/resources/unicode-testnames/pom.xml b/surefire-integration-tests/src/test/resources/unicode-testnames/pom.xml
index f42d505..1056c79 100644
--- a/surefire-integration-tests/src/test/resources/unicode-testnames/pom.xml
+++ b/surefire-integration-tests/src/test/resources/unicode-testnames/pom.xml
@@ -48,6 +48,11 @@
         <artifactId>maven-surefire-plugin</artifactId>
         <version>${surefire.version}</version>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>2.5.1</version>
+      </plugin>
     </plugins>
   </build>
 

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/surefire-report-parser/pom.xml
----------------------------------------------------------------------
diff --git a/surefire-report-parser/pom.xml b/surefire-report-parser/pom.xml
new file mode 100644
index 0000000..5d1c8c7
--- /dev/null
+++ b/surefire-report-parser/pom.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<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.apache.maven.surefire</groupId>
+    <artifactId>surefire</artifactId>
+    <version>2.14-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>surefire-report-parser</artifactId>
+
+  <name>Surefire Report Parser</name>
+  <description>Parses report output files from surefire</description>
+
+  <prerequisites>
+    <maven>2.0.9</maven>
+  </prerequisites>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.shared</groupId>
+      <artifactId>maven-shared-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.reporting</groupId>
+      <artifactId>maven-reporting-api</artifactId>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <redirectTestOutputToFile>true</redirectTestOutputToFile>
+        </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.maven.surefire</groupId>
+            <artifactId>surefire-shadefire</artifactId>
+            <version>${project.version}</version>
+          </dependency>
+        </dependencies>
+      </plugin>
+      <plugin>
+        <!-- Do we need shading here ?? -->
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <minimizeJar>true</minimizeJar>
+              <artifactSet>
+                <includes>
+                  <include>org.apache.maven.shared:maven-shared-utils</include>
+                </includes>
+              </artifactSet>
+              <relocations>
+                <relocation>
+                  <pattern>org.apache.maven.shared</pattern>
+                  <shadedPattern>org.apache.maven.surefire.shade.org.apache.maven.shared</shadedPattern>
+                </relocation>
+              </relocations>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestCase.java
----------------------------------------------------------------------
diff --git a/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestCase.java b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestCase.java
new file mode 100644
index 0000000..3203f49
--- /dev/null
+++ b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestCase.java
@@ -0,0 +1,111 @@
+package org.apache.maven.plugins.surefire.report;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public class ReportTestCase
+{
+    private String fullClassName;
+
+    private String className;
+
+    private String fullName;
+
+    private String name;
+
+    private float time;
+
+    private Map<String, Object> failure;
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public String getFullClassName()
+    {
+        return fullClassName;
+    }
+
+    public void setFullClassName( String name )
+    {
+        this.fullClassName = name;
+    }
+
+    public String getClassName()
+    {
+        return className;
+    }
+
+    public void setClassName( String name )
+    {
+        this.className = name;
+    }
+
+    public float getTime()
+    {
+        return time;
+    }
+
+    public void setTime( float time )
+    {
+        this.time = time;
+    }
+
+    public Map<String, Object> getFailure()
+    {
+        return failure;
+    }
+
+    public String getFullName()
+    {
+        return fullName;
+    }
+
+    public void setFullName( String fullName )
+    {
+        this.fullName = fullName;
+    }
+
+    public void addFailure( String message, String type )
+    {
+        failure = new HashMap<String, Object>();
+        failure.put( "message", message );
+        failure.put( "type", type );
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return fullName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java
----------------------------------------------------------------------
diff --git a/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java
new file mode 100644
index 0000000..2bd6513
--- /dev/null
+++ b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java
@@ -0,0 +1,167 @@
+package org.apache.maven.plugins.surefire.report;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ */
+public class ReportTestSuite
+{
+    private List<ReportTestCase> testCases = new ArrayList<ReportTestCase>();
+
+    private int numberOfErrors;
+
+    private int numberOfFailures;
+
+    private int numberOfSkipped;
+
+    private Integer numberOfTests;
+
+    private String name;
+
+    private String fullClassName;
+
+    private String packageName;
+
+    private float timeElapsed;
+
+    public List<ReportTestCase> getTestCases()
+    {
+        return this.testCases;
+    }
+
+    public int getNumberOfErrors()
+    {
+        return numberOfErrors;
+    }
+
+    public void setNumberOfErrors( int numberOfErrors )
+    {
+        this.numberOfErrors = numberOfErrors;
+    }
+
+    public int getNumberOfFailures()
+    {
+        return numberOfFailures;
+    }
+
+    public void setNumberOfFailures( int numberOfFailures )
+    {
+        this.numberOfFailures = numberOfFailures;
+    }
+
+    public int getNumberOfSkipped()
+    {
+        return numberOfSkipped;
+    }
+
+    public void setNumberOfSkipped( int numberOfSkipped )
+    {
+        this.numberOfSkipped = numberOfSkipped;
+    }
+
+    public int getNumberOfTests()
+    {
+        if ( numberOfTests != null )
+        {
+            return numberOfTests;
+        }
+        if ( testCases != null )
+        {
+            return testCases.size();
+        }
+        return 0;
+    }
+
+    public void setNumberOfTests( int numberOfTests )
+    {
+        this.numberOfTests = numberOfTests;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public String getFullClassName()
+    {
+        return fullClassName;
+    }
+
+    public void setFullClassName( String fullClassName )
+    {
+        this.fullClassName = fullClassName;
+        int lastDotPosition = fullClassName.lastIndexOf( "." );
+
+        name = fullClassName.substring( lastDotPosition + 1, fullClassName.length() );
+
+        if ( lastDotPosition < 0 )
+        {
+            /* no package name */
+            packageName = "";
+        }
+        else
+        {
+            packageName = fullClassName.substring( 0, lastDotPosition );
+        }
+    }
+
+    public String getPackageName()
+    {
+        return packageName;
+    }
+
+    public void setPackageName( String packageName )
+    {
+        this.packageName = packageName;
+    }
+
+    public float getTimeElapsed()
+    {
+        return this.timeElapsed;
+    }
+
+    public void setTimeElapsed( float timeElapsed )
+    {
+        this.timeElapsed = timeElapsed;
+    }
+
+    public void setTestCases( List<ReportTestCase> testCases )
+    {
+        this.testCases = testCases;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String toString()
+    {
+        return fullClassName + " [" + getNumberOfTests() + "/" + getNumberOfFailures() + "/" + getNumberOfErrors() + "/"
+            + getNumberOfSkipped() + "]";
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java
----------------------------------------------------------------------
diff --git a/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java
new file mode 100644
index 0000000..feba245
--- /dev/null
+++ b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java
@@ -0,0 +1,274 @@
+package org.apache.maven.plugins.surefire.report;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.IOException;
+import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import org.apache.maven.reporting.MavenReportException;
+import org.apache.maven.shared.utils.StringUtils;
+import org.apache.maven.shared.utils.io.DirectoryScanner;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.xml.sax.SAXException;
+
+/**
+ *
+ */
+public class SurefireReportParser
+{
+    private static final String INCLUDES = "*.xml";
+
+    private static final String EXCLUDES = "*.txt, testng-failed.xml, testng-failures.xml, testng-results.xml, failsafe-summary*.xml";
+
+    private NumberFormat numberFormat = NumberFormat.getInstance();
+
+    private List<File> reportsDirectories;
+
+    private final List<ReportTestSuite> testSuites = new ArrayList<ReportTestSuite>();
+
+    private static final int PCENT = 100;
+
+    public SurefireReportParser()
+    {
+    }
+
+    public SurefireReportParser( List<File> reportsDirectoriesFiles, Locale locale )
+    {
+        this.reportsDirectories = reportsDirectoriesFiles;
+
+        setLocale( locale );
+    }
+
+    public List<ReportTestSuite> parseXMLReportFiles()
+        throws MavenReportException
+    {
+        List<File> xmlReportFileList = new ArrayList<File>();
+        for ( File reportsDirectory : reportsDirectories )
+        {
+            if ( !reportsDirectory.exists() )
+            {
+                continue;
+            }
+            String[] xmlReportFiles = getIncludedFiles( reportsDirectory, INCLUDES, EXCLUDES );
+            for ( String xmlReportFile : xmlReportFiles )
+            {
+                File xmlReport = new File( reportsDirectory, xmlReportFile );
+                xmlReportFileList.add( xmlReport );
+            }
+        }
+        TestSuiteXmlParser parser = new TestSuiteXmlParser();
+        for ( File aXmlReportFileList : xmlReportFileList )
+        {
+            Collection<ReportTestSuite> suites;
+
+            try
+            {
+                suites = parser.parse( aXmlReportFileList.getAbsolutePath() );
+            }
+            catch ( ParserConfigurationException e )
+            {
+                throw new MavenReportException( "Error setting up parser for JUnit XML report", e );
+            }
+            catch ( SAXException e )
+            {
+                throw new MavenReportException( "Error parsing JUnit XML report " + aXmlReportFileList, e );
+            }
+            catch ( IOException e )
+            {
+                throw new MavenReportException( "Error reading JUnit XML report " + aXmlReportFileList, e );
+            }
+
+            testSuites.addAll( suites );
+        }
+
+        return testSuites;
+    }
+
+    protected String parseTestSuiteName( String lineString )
+    {
+        return lineString.substring( lineString.lastIndexOf( "." ) + 1, lineString.length() );
+    }
+
+    protected String parseTestSuitePackageName( String lineString )
+    {
+        return lineString.substring( lineString.indexOf( ":" ) + 2, lineString.lastIndexOf( "." ) );
+    }
+
+    protected String parseTestCaseName( String lineString )
+    {
+        return lineString.substring( 0, lineString.indexOf( "(" ) );
+    }
+
+    public Map<String, String> getSummary( List<ReportTestSuite> suites )
+    {
+        Map<String, String> totalSummary = new HashMap<String, String>();
+
+        int totalNumberOfTests = 0;
+
+        int totalNumberOfErrors = 0;
+
+        int totalNumberOfFailures = 0;
+
+        int totalNumberOfSkipped = 0;
+
+        float totalElapsedTime = 0.0f;
+
+        for ( ReportTestSuite suite : suites )
+        {
+            totalNumberOfTests += suite.getNumberOfTests();
+
+            totalNumberOfErrors += suite.getNumberOfErrors();
+
+            totalNumberOfFailures += suite.getNumberOfFailures();
+
+            totalNumberOfSkipped += suite.getNumberOfSkipped();
+
+            totalElapsedTime += suite.getTimeElapsed();
+        }
+
+        String totalPercentage =
+            computePercentage( totalNumberOfTests, totalNumberOfErrors, totalNumberOfFailures, totalNumberOfSkipped );
+
+        totalSummary.put( "totalTests", Integer.toString( totalNumberOfTests ) );
+
+        totalSummary.put( "totalErrors", Integer.toString( totalNumberOfErrors ) );
+
+        totalSummary.put( "totalFailures", Integer.toString( totalNumberOfFailures ) );
+
+        totalSummary.put( "totalSkipped", Integer.toString( totalNumberOfSkipped ) );
+
+        totalSummary.put( "totalElapsedTime", numberFormat.format( totalElapsedTime ) );
+
+        totalSummary.put( "totalPercentage", totalPercentage );
+
+        return totalSummary;
+    }
+
+    public void setReportsDirectory( File reportsDirectory )
+    {
+        this.reportsDirectories = Collections.singletonList( reportsDirectory );
+    }
+
+    public final void setLocale( Locale locale )
+    {
+        numberFormat = NumberFormat.getInstance( locale );
+    }
+
+    public NumberFormat getNumberFormat()
+    {
+        return this.numberFormat;
+    }
+
+    public Map<String, List<ReportTestSuite>> getSuitesGroupByPackage( List<ReportTestSuite> testSuitesList )
+    {
+        Map<String, List<ReportTestSuite>> suitePackage = new HashMap<String, List<ReportTestSuite>>();
+
+        for ( ReportTestSuite suite : testSuitesList )
+        {
+            List<ReportTestSuite> suiteList = new ArrayList<ReportTestSuite>();
+
+            if ( suitePackage.get( suite.getPackageName() ) != null )
+            {
+                suiteList = suitePackage.get( suite.getPackageName() );
+            }
+
+            suiteList.add( suite );
+
+            suitePackage.put( suite.getPackageName(), suiteList );
+        }
+
+        return suitePackage;
+    }
+
+    public String computePercentage( int tests, int errors, int failures, int skipped )
+    {
+        float percentage;
+        if ( tests == 0 )
+        {
+            percentage = 0;
+        }
+        else
+        {
+            percentage = ( (float) ( tests - errors - failures - skipped ) / (float) tests ) * PCENT;
+        }
+
+        return numberFormat.format( percentage );
+    }
+
+    public List<ReportTestCase> getFailureDetails( List<ReportTestSuite> testSuitesList )
+    {
+        List<ReportTestCase> failureDetailList = new ArrayList<ReportTestCase>();
+
+        for ( ReportTestSuite suite : testSuitesList )
+        {
+            List<ReportTestCase> testCaseList = suite.getTestCases();
+
+            if ( testCaseList != null )
+            {
+                for ( ReportTestCase tCase : testCaseList )
+                {
+
+                    if ( tCase.getFailure() != null )
+                    {
+                        failureDetailList.add( tCase );
+                    }
+                }
+            }
+        }
+
+        return failureDetailList;
+    }
+
+    /**
+     * Returns {@code true} if the specified directory contains at least one report file.
+     *
+     * @param directory the directory
+     * @return {@code true} if the specified directory contains at least one report file.
+     */
+    public static boolean hasReportFiles( File directory )
+    {
+        return directory != null && directory.isDirectory()
+            && getIncludedFiles( directory, INCLUDES, EXCLUDES ).length > 0;
+    }
+
+    private static String[] getIncludedFiles( File directory, String includes, String excludes )
+    {
+        DirectoryScanner scanner = new DirectoryScanner();
+
+        scanner.setBasedir( directory );
+
+        scanner.setIncludes( StringUtils.split( includes, "," ) );
+
+        scanner.setExcludes( StringUtils.split( excludes, "," ) );
+
+        scanner.scan();
+
+        return scanner.getIncludedFiles();
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/4dfdb08c/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java
----------------------------------------------------------------------
diff --git a/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java
new file mode 100644
index 0000000..3f600b2
--- /dev/null
+++ b/surefire-report-parser/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java
@@ -0,0 +1,310 @@
+package org.apache.maven.plugins.surefire.report;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+/**
+ *
+ */
+public class TestSuiteXmlParser
+    extends DefaultHandler
+{
+    private ReportTestSuite defaultSuite;
+
+    private ReportTestSuite currentSuite;
+
+    private Map<String, ReportTestSuite> classesToSuites;
+
+    private final NumberFormat numberFormat = NumberFormat.getInstance( Locale.ENGLISH );
+
+    /**
+     * @noinspection StringBufferField
+     */
+    private StringBuffer currentElement;
+
+    private ReportTestCase testCase;
+
+    private boolean valid;
+
+    public Collection<ReportTestSuite> parse( String xmlPath )
+        throws ParserConfigurationException, SAXException, IOException
+    {
+
+        File f = new File( xmlPath );
+
+        FileInputStream fileInputStream = new FileInputStream( f );
+
+        InputStreamReader  inputStreamReader = new InputStreamReader( fileInputStream, "UTF-8" );
+
+        try
+        {
+            return parse( inputStreamReader );
+        }
+        finally
+        {
+            inputStreamReader.close();
+            fileInputStream.close();
+        }
+    }
+
+    public Collection<ReportTestSuite> parse( InputStreamReader stream )
+        throws ParserConfigurationException, SAXException, IOException
+    {
+        SAXParserFactory factory = SAXParserFactory.newInstance();
+
+        SAXParser saxParser = factory.newSAXParser();
+
+        valid = true;
+
+        classesToSuites = new HashMap<String, ReportTestSuite>();
+
+        saxParser.parse( new InputSource( stream ), this );
+
+        if ( currentSuite != defaultSuite )
+        { // omit the defaultSuite if it's empty and there are alternatives
+            if ( defaultSuite.getNumberOfTests() == 0 )
+            {
+                classesToSuites.remove( defaultSuite.getFullClassName() );
+            }
+        }
+
+        return classesToSuites.values();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void startElement( String uri, String localName, String qName, Attributes attributes )
+        throws SAXException
+    {
+        if ( !valid )
+        {
+            return;
+        }
+        try
+        {
+            if ( "testsuite".equals( qName ) )
+            {
+                currentSuite = defaultSuite = new ReportTestSuite();
+
+                try
+                {
+                    Number time = numberFormat.parse( attributes.getValue( "time" ) );
+
+                    defaultSuite.setTimeElapsed( time.floatValue() );
+                }
+                catch ( NullPointerException npe )
+                {
+                    System.err.println( "WARNING: no time attribute found on testsuite element" );
+                }
+
+                //check if group attribute is existing
+                if ( attributes.getValue( "group" ) != null && !"".equals( attributes.getValue( "group" ) ) )
+                {
+                    String packageName = attributes.getValue( "group" );
+                    String name = attributes.getValue( "name" );
+
+                    defaultSuite.setFullClassName( packageName + "." + name );
+                }
+                else
+                {
+                    String fullClassName = attributes.getValue( "name" );
+                    defaultSuite.setFullClassName( fullClassName );
+                }
+
+                classesToSuites.put( defaultSuite.getFullClassName(), defaultSuite );
+            }
+            else if ( "testcase".equals( qName ) )
+            {
+                currentElement = new StringBuffer();
+
+                testCase = new ReportTestCase();
+
+                testCase.setName( attributes.getValue( "name" ) );
+
+                String fullClassName = attributes.getValue( "classname" );
+
+                // if the testcase declares its own classname, it may need to belong to its own suite
+                if ( fullClassName != null )
+                {
+                    currentSuite = classesToSuites.get( fullClassName );
+                    if ( currentSuite == null )
+                    {
+                        currentSuite = new ReportTestSuite();
+                        currentSuite.setFullClassName( fullClassName );
+                        classesToSuites.put( fullClassName, currentSuite );
+                    }
+                }
+
+                testCase.setFullClassName( currentSuite.getFullClassName() );
+                testCase.setClassName( currentSuite.getName() );
+                testCase.setFullName( currentSuite.getFullClassName() + "." + testCase.getName() );
+
+                String timeAsString = attributes.getValue( "time" );
+
+                Number time = 0;
+
+                if ( timeAsString != null )
+                {
+                    time = numberFormat.parse( timeAsString );
+                }
+
+                testCase.setTime( time.floatValue() );
+
+                if ( currentSuite != defaultSuite )
+                {
+                    currentSuite.setTimeElapsed( time.floatValue() + currentSuite.getTimeElapsed() );
+                }
+            }
+            else if ( "failure".equals( qName ) )
+            {
+                testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) );
+                currentSuite.setNumberOfFailures( 1 + currentSuite.getNumberOfFailures() );
+            }
+            else if ( "error".equals( qName ) )
+            {
+                testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) );
+                currentSuite.setNumberOfErrors( 1 + currentSuite.getNumberOfErrors() );
+            }
+            else if ( "skipped".equals( qName ) )
+            {
+                final String message = attributes.getValue( "message" );
+                testCase.addFailure( message != null ? message : "skipped", "skipped" );
+                currentSuite.setNumberOfSkipped( 1 + currentSuite.getNumberOfSkipped() );
+            }
+            else if ( "failsafe-summary".equals( qName ) )
+            {
+                valid = false;
+            }
+        }
+        catch ( ParseException e )
+        {
+            throw new SAXException( e.getMessage(), e );
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void endElement( String uri, String localName, String qName )
+        throws SAXException
+    {
+        if ( "testcase".equals( qName ) )
+        {
+            currentSuite.getTestCases().add( testCase );
+        }
+        else if ( "failure".equals( qName ) )
+        {
+            Map<String, Object> failure = testCase.getFailure();
+
+            failure.put( "detail", parseCause( currentElement.toString() ) );
+        }
+        else if ( "error".equals( qName ) )
+        {
+            Map<String, Object> error = testCase.getFailure();
+
+            error.put( "detail", parseCause( currentElement.toString() ) );
+        }
+        else if ( "time".equals( qName ) )
+        {
+            try
+            {
+                Number time = numberFormat.parse( currentElement.toString() );
+                defaultSuite.setTimeElapsed( time.floatValue() );
+            }
+            catch ( ParseException e )
+            {
+                throw new SAXException( e.getMessage(), e );
+            }
+        }
+        // TODO extract real skipped reasons
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public void characters( char[] ch, int start, int length )
+        throws SAXException
+    {
+        if ( !valid )
+        {
+            return;
+        }
+        String s = new String( ch, start, length );
+
+        if ( !"".equals( s.trim() ) )
+        {
+            currentElement.append( s );
+        }
+    }
+
+    private List<String> parseCause( String detail )
+    {
+        String fullName = testCase.getFullName();
+        String name = fullName.substring( fullName.lastIndexOf( "." ) + 1 );
+        return parseCause( detail, name );
+    }
+
+    private List<String> parseCause( String detail, String compareTo )
+    {
+        StringTokenizer stringTokenizer = new StringTokenizer( detail, "\n" );
+        List<String> parsedDetail = new ArrayList<String>( stringTokenizer.countTokens() );
+
+        while ( stringTokenizer.hasMoreTokens() )
+        {
+            String lineString = stringTokenizer.nextToken().trim();
+            parsedDetail.add( lineString );
+            if ( lineString.contains( compareTo ) )
+            {
+                break;
+            }
+        }
+
+        return parsedDetail;
+    }
+
+    public boolean isValid()
+    {
+        return valid;
+    }
+}