Repository: maven-surefire Updated Branches: refs/heads/master 34d445be3 -> d3a7f35d0
[SUREFIRE] refactoring Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/d3a7f35d Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/d3a7f35d Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/d3a7f35d Branch: refs/heads/master Commit: d3a7f35d051d3fdae92645454af47afacced41ca Parents: 34d445b Author: Tibor17 <tibo...@lycos.com> Authored: Sun Sep 13 23:04:51 2015 +0200 Committer: Tibor17 <tibo...@lycos.com> Committed: Sun Sep 13 23:04:51 2015 +0200 ---------------------------------------------------------------------- .../surefire/report/StatelessXmlReporter.java | 276 +++++++++---------- 1 file changed, 131 insertions(+), 145 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/d3a7f35d/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java index f46827c..3a8dc2c 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/StatelessXmlReporter.java @@ -44,6 +44,7 @@ import java.util.StringTokenizer; import static org.apache.maven.plugin.surefire.report.DefaultReporterFactory.TestResultType; import static org.apache.maven.plugin.surefire.report.FileReporterUtils.stripIllegalFilenameChars; +import static org.apache.maven.surefire.util.internal.StringUtils.isNotBlank; // CHECKSTYLE_OFF: LineLength /** @@ -80,7 +81,6 @@ import static org.apache.maven.plugin.surefire.report.FileReporterUtils.stripIll */ public class StatelessXmlReporter { - private static final String ENCODING = "UTF-8"; private static final Charset ENCODING_CS = Charset.forName( ENCODING ); @@ -141,98 +141,97 @@ public class StatelessXmlReporter { throw new IllegalStateException( "Get null test method run history" ); } - if ( methodEntryList.isEmpty() ) - { - continue; - } - if ( rerunFailingTestsCount > 0 ) + if ( !methodEntryList.isEmpty() ) { - TestResultType resultType = getTestResultType( methodEntryList ); - switch ( resultType ) + if ( rerunFailingTestsCount > 0 ) { - case success: - for ( WrappedReportEntry methodEntry : methodEntryList ) - { - if ( methodEntry.getReportEntryType() == ReportEntryType.SUCCESS ) + TestResultType resultType = getTestResultType( methodEntryList ); + switch ( resultType ) + { + case success: + for ( WrappedReportEntry methodEntry : methodEntryList ) { - startTestElement( ppw, methodEntry, reportNameSuffix, - methodEntryList.get( 0 ).elapsedTimeAsString() ); - ppw.endElement(); + if ( methodEntry.getReportEntryType() == ReportEntryType.SUCCESS ) + { + startTestElement( ppw, methodEntry, reportNameSuffix, + methodEntryList.get( 0 ).elapsedTimeAsString() ); + ppw.endElement(); + } } - } - break; - case error: - case failure: - // When rerunFailingTestsCount is set to larger than 0 - startTestElement( ppw, methodEntryList.get( 0 ), reportNameSuffix, - methodEntryList.get( 0 ).elapsedTimeAsString() ); - boolean firstRun = true; - for ( WrappedReportEntry singleRunEntry : methodEntryList ) - { - if ( firstRun ) + break; + case error: + case failure: + // When rerunFailingTestsCount is set to larger than 0 + startTestElement( ppw, methodEntryList.get( 0 ), reportNameSuffix, + methodEntryList.get( 0 ).elapsedTimeAsString() ); + boolean firstRun = true; + for ( WrappedReportEntry singleRunEntry : methodEntryList ) { - firstRun = false; - getTestProblems( fw, ppw, singleRunEntry, trimStackTrace, outputStream, - singleRunEntry.getReportEntryType().getXmlTag(), false ); - createOutErrElements( fw, ppw, singleRunEntry, outputStream ); + if ( firstRun ) + { + firstRun = false; + getTestProblems( fw, ppw, singleRunEntry, trimStackTrace, outputStream, + singleRunEntry.getReportEntryType().getXmlTag(), false ); + createOutErrElements( fw, ppw, singleRunEntry, outputStream ); + } + else + { + getTestProblems( fw, ppw, singleRunEntry, trimStackTrace, outputStream, + singleRunEntry.getReportEntryType().getRerunXmlTag(), true ); + } } - else + ppw.endElement(); + break; + case flake: + String runtime = ""; + // Get the run time of the first successful run + for ( WrappedReportEntry singleRunEntry : methodEntryList ) { - getTestProblems( fw, ppw, singleRunEntry, trimStackTrace, outputStream, - singleRunEntry.getReportEntryType().getRerunXmlTag(), true ); + if ( singleRunEntry.getReportEntryType() == ReportEntryType.SUCCESS ) + { + runtime = singleRunEntry.elapsedTimeAsString(); + break; + } } - } - ppw.endElement(); - break; - case flake: - String runtime = ""; - // Get the run time of the first successful run - for ( WrappedReportEntry singleRunEntry : methodEntryList ) - { - if ( singleRunEntry.getReportEntryType() == ReportEntryType.SUCCESS ) - { - runtime = singleRunEntry.elapsedTimeAsString(); - break; - } - } - startTestElement( ppw, methodEntryList.get( 0 ), reportNameSuffix, runtime ); - for ( WrappedReportEntry singleRunEntry : methodEntryList ) - { - if ( singleRunEntry.getReportEntryType() != ReportEntryType.SUCCESS ) + startTestElement( ppw, methodEntryList.get( 0 ), reportNameSuffix, runtime ); + for ( WrappedReportEntry singleRunEntry : methodEntryList ) { - getTestProblems( fw, ppw, singleRunEntry, trimStackTrace, outputStream, - singleRunEntry.getReportEntryType().getFlakyXmlTag(), true ); + if ( singleRunEntry.getReportEntryType() != ReportEntryType.SUCCESS ) + { + getTestProblems( fw, ppw, singleRunEntry, trimStackTrace, outputStream, + singleRunEntry.getReportEntryType().getFlakyXmlTag(), true ); + } } - } - ppw.endElement(); - - break; - case skipped: - startTestElement( ppw, methodEntryList.get( 0 ), reportNameSuffix, - methodEntryList.get( 0 ).elapsedTimeAsString() ); - getTestProblems( fw, ppw, methodEntryList.get( 0 ), trimStackTrace, outputStream, - methodEntryList.get( 0 ).getReportEntryType().getXmlTag(), false ); - ppw.endElement(); - break; - default: - throw new IllegalStateException( "Get unknown test result type" ); + ppw.endElement(); + + break; + case skipped: + startTestElement( ppw, methodEntryList.get( 0 ), reportNameSuffix, + methodEntryList.get( 0 ).elapsedTimeAsString() ); + getTestProblems( fw, ppw, methodEntryList.get( 0 ), trimStackTrace, outputStream, + methodEntryList.get( 0 ).getReportEntryType().getXmlTag(), false ); + ppw.endElement(); + break; + default: + throw new IllegalStateException( "Get unknown test result type" ); + } } - } - else - { - // rerunFailingTestsCount is smaller than 1, but for some reasons a test could be run - // for more than once - for ( WrappedReportEntry methodEntry : methodEntryList ) + else { - startTestElement( ppw, methodEntry, reportNameSuffix, methodEntry.elapsedTimeAsString() ); - if ( methodEntry.getReportEntryType() != ReportEntryType.SUCCESS ) + // rerunFailingTestsCount is smaller than 1, but for some reasons a test could be run + // for more than once + for ( WrappedReportEntry methodEntry : methodEntryList ) { - getTestProblems( fw, ppw, methodEntry, trimStackTrace, outputStream, - methodEntry.getReportEntryType().getXmlTag(), false ); - createOutErrElements( fw, ppw, methodEntry, outputStream ); + startTestElement( ppw, methodEntry, reportNameSuffix, methodEntry.elapsedTimeAsString() ); + if ( methodEntry.getReportEntryType() != ReportEntryType.SUCCESS ) + { + getTestProblems( fw, ppw, methodEntry, trimStackTrace, outputStream, + methodEntry.getReportEntryType().getXmlTag(), false ); + createOutErrElements( fw, ppw, methodEntry, outputStream ); + } + ppw.endElement(); } - ppw.endElement(); } } } @@ -290,59 +289,40 @@ public class StatelessXmlReporter { throw new IllegalStateException( "Get null test method run history" ); } - if ( methodEntryList.isEmpty() ) - { - continue; - } - TestResultType resultType = getTestResultType( methodEntryList ); - - switch ( resultType ) + if ( !methodEntryList.isEmpty() ) { - case success: - case error: - case failure: - // Get the first run's time for failure/error/success runs - totalTimeForSuite = totalTimeForSuite + methodEntryList.get( 0 ).getElapsed(); - break; - case flake: - // Get the first successful run's time for flaky runs - for ( WrappedReportEntry singleRunEntry : methodEntryList ) - { - if ( singleRunEntry.getReportEntryType() == ReportEntryType.SUCCESS ) + TestResultType resultType = getTestResultType( methodEntryList ); + + switch ( resultType ) + { + case success: + case error: + case failure: + // Get the first run's time for failure/error/success runs + totalTimeForSuite = totalTimeForSuite + methodEntryList.get( 0 ).getElapsed(); + break; + case flake: + // Get the first successful run's time for flaky runs + for ( WrappedReportEntry singleRunEntry : methodEntryList ) { - totalTimeForSuite = totalTimeForSuite + singleRunEntry.getElapsed(); - break; + if ( singleRunEntry.getReportEntryType() == ReportEntryType.SUCCESS ) + { + totalTimeForSuite = totalTimeForSuite + singleRunEntry.getElapsed(); + break; + } } - } - break; - case skipped: - break; - default: - throw new IllegalStateException( "Get unknown test result type" ); + break; + case skipped: + break; + default: + throw new IllegalStateException( "Get unknown test result type" ); + } } } return totalTimeForSuite; } - private OutputStreamWriter getWriter( FileOutputStream fos ) - { - return new OutputStreamWriter( fos, ENCODING_CS ); - } - - - private void getAddMethodEntryList( Map<String, List<WrappedReportEntry>> methodRunHistoryMap, - WrappedReportEntry methodEntry ) - { - List<WrappedReportEntry> methodEntryList = methodRunHistoryMap.get( methodEntry.getName() ); - if ( methodEntryList == null ) - { - methodEntryList = new ArrayList<WrappedReportEntry>(); - methodRunHistoryMap.put( methodEntry.getName(), methodEntryList ); - } - methodEntryList.add( methodEntry ); - } - private Map<String, List<WrappedReportEntry>> getAddMethodRunHistoryMap( String testClassName ) { Map<String, List<WrappedReportEntry>> methodRunHistoryMap = testClassMethodRunHistoryMap.get( testClassName ); @@ -374,21 +354,29 @@ public class StatelessXmlReporter } } - private File getReportFile( ReportEntry report, File reportsDirectory, String reportNameSuffix ) + private static OutputStreamWriter getWriter( FileOutputStream fos ) { - File reportFile; + return new OutputStreamWriter( fos, ENCODING_CS ); + } - if ( reportNameSuffix != null && reportNameSuffix.length() > 0 ) - { - reportFile = new File( reportsDirectory, stripIllegalFilenameChars( - "TEST-" + report.getName() + "-" + reportNameSuffix + ".xml" ) ); - } - else + private static void getAddMethodEntryList( Map<String, List<WrappedReportEntry>> methodRunHistoryMap, + WrappedReportEntry methodEntry ) + { + List<WrappedReportEntry> methodEntryList = methodRunHistoryMap.get( methodEntry.getName() ); + if ( methodEntryList == null ) { - reportFile = new File( reportsDirectory, stripIllegalFilenameChars( "TEST-" + report.getName() + ".xml" ) ); + methodEntryList = new ArrayList<WrappedReportEntry>(); + methodRunHistoryMap.put( methodEntry.getName(), methodEntryList ); } + methodEntryList.add( methodEntry ); + } - return reportFile; + private static File getReportFile( ReportEntry report, File reportsDirectory, String reportNameSuffix ) + { + String reportName = "TEST-" + report.getName(); + return isNotBlank( reportNameSuffix ) + ? new File( reportsDirectory, stripIllegalFilenameChars( reportName + "-" + reportNameSuffix + ".xml" ) ) + : new File( reportsDirectory, stripIllegalFilenameChars( reportName + ".xml" ) ); } private static void startTestElement( XMLWriter ppw, WrappedReportEntry report, String reportNameSuffix, @@ -421,7 +409,8 @@ public class StatelessXmlReporter ppw.addAttribute( "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" ); - ppw.addAttribute( "xsi:schemaLocation", "https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" ); + ppw.addAttribute( "xsi:schemaLocation", + "https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" ); ppw.addAttribute( "name", report.getReportName( reportNameSuffix1 ) ); @@ -439,13 +428,11 @@ public class StatelessXmlReporter ppw.addAttribute( "skipped", String.valueOf( testSetStats.getSkipped() ) ); ppw.addAttribute( "failures", String.valueOf( testSetStats.getFailures() ) ); - } - - private void getTestProblems( OutputStreamWriter outputStreamWriter, XMLWriter ppw, WrappedReportEntry report, - boolean trimStackTrace, FileOutputStream fw, - String testErrorType, boolean createOutErrElementsInside ) + private static void getTestProblems( OutputStreamWriter outputStreamWriter, XMLWriter ppw, + WrappedReportEntry report, boolean trimStackTrace, FileOutputStream fw, + String testErrorType, boolean createOutErrElementsInside ) { ppw.startElement( testErrorType ); @@ -489,22 +476,21 @@ public class StatelessXmlReporter } // Create system-out and system-err elements - private void createOutErrElements( OutputStreamWriter outputStreamWriter, XMLWriter ppw, WrappedReportEntry report, - FileOutputStream fw ) + private static void createOutErrElements( OutputStreamWriter outputStreamWriter, XMLWriter ppw, + WrappedReportEntry report, FileOutputStream fw ) { EncodingOutputStream eos = new EncodingOutputStream( fw ); - addOutputStreamElement( outputStreamWriter, fw, eos, ppw, report.getStdout(), "system-out" ); - addOutputStreamElement( outputStreamWriter, fw, eos, ppw, report.getStdErr(), "system-err" ); + addOutputStreamElement( outputStreamWriter, eos, ppw, report.getStdout(), "system-out" ); + addOutputStreamElement( outputStreamWriter, eos, ppw, report.getStdErr(), "system-err" ); } - private void addOutputStreamElement( OutputStreamWriter outputStreamWriter, OutputStream fw, + private static void addOutputStreamElement( OutputStreamWriter outputStreamWriter, EncodingOutputStream eos, XMLWriter xmlWriter, Utf8RecodingDeferredFileOutputStream utf8RecodingDeferredFileOutputStream, String name ) { if ( utf8RecodingDeferredFileOutputStream != null && utf8RecodingDeferredFileOutputStream.getByteCount() > 0 ) { - xmlWriter.startElement( name ); try @@ -531,7 +517,7 @@ public class StatelessXmlReporter * * @param xmlWriter The test suite to report to */ - private void showProperties( XMLWriter xmlWriter ) + private static void showProperties( XMLWriter xmlWriter ) { xmlWriter.startElement( "properties" );