You are viewing a plain text version of this content. The canonical link for it is here.
Posted to surefire-commits@maven.apache.org by df...@apache.org on 2008/01/24 08:06:44 UTC
svn commit: r614808 - in
/maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report:
ReportTestSuite.java SurefireReportParser.java TestSuiteXmlParser.java
Author: dfabulich
Date: Wed Jan 23 23:06:41 2008
New Revision: 614808
URL: http://svn.apache.org/viewvc?rev=614808&view=rev
Log:
Refactoring ReportTestSuite, extracting XML parsing logic into a separate TestSuiteXmlParser. This is in preparation for fixing SUREFIRE-433; wanted to checkpoint before I plowed ahead.
Added:
maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java
- copied, changed from r612608, maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java
Modified:
maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java
maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java
Modified: maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java?rev=614808&r1=614807&r2=614808&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java (original)
+++ maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java Wed Jan 23 23:06:41 2008
@@ -19,25 +19,9 @@
* under the License.
*/
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import java.io.File;
-import java.io.IOException;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
public class ReportTestSuite
- extends DefaultHandler
{
private List testCases;
@@ -56,159 +40,7 @@
private String packageName;
private float timeElapsed;
-
- private NumberFormat numberFormat = NumberFormat.getInstance();
-
- /**
- * @noinspection StringBufferField
- */
- private StringBuffer currentElement;
-
- private ReportTestCase testCase;
-
- public void parse( String xmlPath )
- throws ParserConfigurationException, SAXException, IOException
- {
- SAXParserFactory factory = SAXParserFactory.newInstance();
-
- SAXParser saxParser = factory.newSAXParser();
-
- saxParser.parse( new File( xmlPath ), this );
- }
-
-
- private int getAttributeAsInt( Attributes attributes, String name )
- {
- // may or may not exist
- String valueAsString = attributes.getValue( name );
- if ( valueAsString != null )
- {
- return Integer.parseInt( valueAsString );
- }
- return 0;
- }
-
- public void startElement( String uri, String localName, String qName, Attributes attributes )
- throws SAXException
- {
- try
- {
- if ( "testsuite".equals( qName ) )
- {
- numberOfErrors = getAttributeAsInt( attributes, "errors" );
- numberOfFailures = getAttributeAsInt( attributes, "failures" );
- numberOfSkipped = getAttributeAsInt( attributes, "skipped" );
- numberOfTests = getAttributeAsInt( attributes, "tests" );
-
- Number time = numberFormat.parse( attributes.getValue( "time" ) );
-
- timeElapsed = time.floatValue();
-
- //check if group attribute is existing
- if ( attributes.getValue( "group" ) != null && !"".equals( attributes.getValue( "group" ) ) )
- {
- packageName = attributes.getValue( "group" );
-
- name = attributes.getValue( "name" );
-
- fullClassName = packageName + "." + name;
- }
- else
- {
- fullClassName = attributes.getValue( "name" );
-
- name = fullClassName.substring( fullClassName.lastIndexOf( "." ) + 1, fullClassName.length() );
-
- int lastDotPosition = fullClassName.lastIndexOf( "." );
- if ( lastDotPosition < 0 )
- {
- /* no package name */
- packageName = "";
- }
- else
- {
- packageName = fullClassName.substring( 0, lastDotPosition );
- }
- }
-
- testCases = new ArrayList();
- }
- else if ( "testcase".equals( qName ) )
- {
- currentElement = new StringBuffer();
-
- testCase = new ReportTestCase();
-
- testCase.setFullClassName( fullClassName );
-
- testCase.setName( attributes.getValue( "name" ) );
-
- testCase.setClassName( name );
-
- String timeAsString = attributes.getValue( "time" );
-
- Number time = new Integer( 0 );
-
- if ( timeAsString != null )
- {
- time = numberFormat.parse( timeAsString );
- }
-
- testCase.setTime( time.floatValue() );
-
- testCase.setFullName( packageName + "." + name + "." + testCase.getName() );
- }
- else if ( "failure".equals( qName ) )
- {
- testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) );
- }
- else if ( "error".equals( qName ) )
- {
- testCase.addFailure( attributes.getValue( "message" ), attributes.getValue( "type" ) );
- }
- else if ( "skipped".equals( qName ) )
- {
- testCase.addFailure( "skipped", "skipped" ); // TODO extract real reasons
- }
- }
- catch ( ParseException e )
- {
- throw new SAXException( e.getMessage(), e );
- }
- }
-
- public void endElement( String uri, String localName, String qName )
- throws SAXException
- {
- if ( "testcase".equals( qName ) )
- {
- testCases.add( testCase );
- }
- else if ( "failure".equals( qName ) )
- {
- Map failure = testCase.getFailure();
-
- failure.put( "detail", parseCause( currentElement.toString() ) );
- }
- else if ( "error".equals( qName ) )
- {
- Map error = testCase.getFailure();
-
- error.put( "detail", parseCause( currentElement.toString() ) );
- }
- }
-
- public void characters( char[] ch, int start, int length )
- throws SAXException
- {
- String s = new String( ch, start, length );
-
- if ( !"".equals( s.trim() ) )
- {
- currentElement.append( s );
- }
- }
-
+
public List getTestCases()
{
return this.testCases;
@@ -264,14 +96,14 @@
this.name = name;
}
- public String getFName()
+ public String getFullClassName()
{
- return name;
+ return fullClassName;
}
- public void setFName( String name )
+ public void setFullClassName( String fullClassName )
{
- this.name = name;
+ this.fullClassName = fullClassName;
}
public String getPackageName()
@@ -294,33 +126,8 @@
this.timeElapsed = timeElapsed;
}
- private List parseCause( String detail )
- {
- String fullName = testCase.getFullName();
- String name = fullName.substring( fullName.lastIndexOf( "." ) + 1 );
- return parseCause( detail, name );
- }
-
- private List parseCause( String detail, String compareTo )
- {
- StringTokenizer stringTokenizer = new StringTokenizer( detail, "\n" );
- List parsedDetail = new ArrayList( stringTokenizer.countTokens() );
-
- while ( stringTokenizer.hasMoreTokens() )
- {
- String lineString = stringTokenizer.nextToken().trim();
- parsedDetail.add( lineString );
- if ( lineString.indexOf( compareTo ) >= 0 )
- {
- break;
- }
- }
-
- return parsedDetail;
- }
-
public void setTestCases( List testCases )
{
- this.testCases = Collections.unmodifiableList( testCases );
+ this.testCases = testCases;
}
}
Modified: maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java?rev=614808&r1=614807&r2=614808&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java (original)
+++ maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/SurefireReportParser.java Wed Jan 23 23:06:41 2008
@@ -74,15 +74,16 @@
xmlReportFileList.add( xmlReport );
}
}
+ TestSuiteXmlParser parser = new TestSuiteXmlParser();
for ( int index = 0; index < xmlReportFileList.size(); index++ )
{
- ReportTestSuite testSuite = new ReportTestSuite();
+ ReportTestSuite testSuite;
File currentReport = (File) xmlReportFileList.get( index );
try
{
- testSuite.parse( currentReport.getAbsolutePath() );
+ testSuite = parser.parse( currentReport.getAbsolutePath() );
}
catch ( ParserConfigurationException e )
{
Copied: maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java (from r612608, maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java)
URL: http://svn.apache.org/viewvc/maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java?p2=maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java&p1=maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java&r1=612608&r2=614808&rev=614808&view=diff
==============================================================================
--- maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/ReportTestSuite.java (original)
+++ maven/surefire/trunk/maven-surefire-report-plugin/src/main/java/org/apache/maven/plugins/surefire/report/TestSuiteXmlParser.java Wed Jan 23 23:06:41 2008
@@ -19,44 +19,27 @@
* under the License.
*/
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
import java.io.File;
import java.io.IOException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
-public class ReportTestSuite
- extends DefaultHandler
-{
- private List testCases;
-
- private int numberOfErrors;
-
- private int numberOfFailures;
-
- private int numberOfSkipped;
-
- private int numberOfTests;
-
- private String name;
-
- private String fullClassName;
-
- private String packageName;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
- private float timeElapsed;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+public class TestSuiteXmlParser
+ extends DefaultHandler
+{
+ private ReportTestSuite suite;
private NumberFormat numberFormat = NumberFormat.getInstance();
/**
@@ -66,7 +49,7 @@
private ReportTestCase testCase;
- public void parse( String xmlPath )
+ public ReportTestSuite parse( String xmlPath )
throws ParserConfigurationException, SAXException, IOException
{
SAXParserFactory factory = SAXParserFactory.newInstance();
@@ -74,6 +57,8 @@
SAXParser saxParser = factory.newSAXParser();
saxParser.parse( new File( xmlPath ), this );
+
+ return suite;
}
@@ -95,43 +80,48 @@
{
if ( "testsuite".equals( qName ) )
{
- numberOfErrors = getAttributeAsInt( attributes, "errors" );
- numberOfFailures = getAttributeAsInt( attributes, "failures" );
- numberOfSkipped = getAttributeAsInt( attributes, "skipped" );
- numberOfTests = getAttributeAsInt( attributes, "tests" );
+ suite = new ReportTestSuite();
+ suite.setNumberOfErrors( getAttributeAsInt( attributes, "errors" ) );
+ suite.setNumberOfFailures( getAttributeAsInt( attributes, "failures" ) );
+ suite.setNumberOfSkipped( getAttributeAsInt( attributes, "skipped" ) );
+ suite.setNumberOfTests( getAttributeAsInt( attributes, "tests" ) );
Number time = numberFormat.parse( attributes.getValue( "time" ) );
- timeElapsed = time.floatValue();
+ suite.setTimeElapsed( time.floatValue() );
//check if group attribute is existing
if ( attributes.getValue( "group" ) != null && !"".equals( attributes.getValue( "group" ) ) )
{
- packageName = attributes.getValue( "group" );
+ String packageName = attributes.getValue( "group" );
+ suite.setPackageName( packageName );
- name = attributes.getValue( "name" );
+ String name = attributes.getValue( "name" );
+ suite.setName( name );
- fullClassName = packageName + "." + name;
+ suite.setFullClassName( packageName + "." + name );
}
else
{
- fullClassName = attributes.getValue( "name" );
-
- name = fullClassName.substring( fullClassName.lastIndexOf( "." ) + 1, fullClassName.length() );
+ String fullClassName = attributes.getValue( "name" );
+ suite.setFullClassName( fullClassName );
int lastDotPosition = fullClassName.lastIndexOf( "." );
+
+ suite.setName( fullClassName.substring( lastDotPosition + 1, fullClassName.length() ) );
+
if ( lastDotPosition < 0 )
{
/* no package name */
- packageName = "";
+ suite.setPackageName( "" );
}
else
{
- packageName = fullClassName.substring( 0, lastDotPosition );
+ suite.setPackageName( fullClassName.substring( 0, lastDotPosition ) );
}
}
- testCases = new ArrayList();
+ suite.setTestCases( new ArrayList() );
}
else if ( "testcase".equals( qName ) )
{
@@ -139,11 +129,11 @@
testCase = new ReportTestCase();
- testCase.setFullClassName( fullClassName );
+ testCase.setFullClassName( suite.getFullClassName() );
testCase.setName( attributes.getValue( "name" ) );
- testCase.setClassName( name );
+ testCase.setClassName( suite.getName() );
String timeAsString = attributes.getValue( "time" );
@@ -156,7 +146,7 @@
testCase.setTime( time.floatValue() );
- testCase.setFullName( packageName + "." + name + "." + testCase.getName() );
+ testCase.setFullName( suite.getFullClassName() + "." + testCase.getName() );
}
else if ( "failure".equals( qName ) )
{
@@ -182,7 +172,7 @@
{
if ( "testcase".equals( qName ) )
{
- testCases.add( testCase );
+ suite.getTestCases().add( testCase );
}
else if ( "failure".equals( qName ) )
{
@@ -209,91 +199,6 @@
}
}
- public List 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()
- {
- return numberOfTests;
- }
-
- public void setNumberOfTests( int numberOfTests )
- {
- this.numberOfTests = numberOfTests;
- }
-
- public String getName()
- {
- return name;
- }
-
- public void setName( String name )
- {
- this.name = name;
- }
-
- public String getFName()
- {
- return name;
- }
-
- public void setFName( String name )
- {
- this.name = name;
- }
-
- 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;
- }
-
private List parseCause( String detail )
{
String fullName = testCase.getFullName();
@@ -319,8 +224,4 @@
return parsedDetail;
}
- public void setTestCases( List testCases )
- {
- this.testCases = Collections.unmodifiableList( testCases );
- }
}