Repository: maven-surefire Updated Branches: refs/heads/master 40b4b48a3 -> 5291f3ae6
[SUREFIRE-1088] alternative fix for handling of @Ignored test cases (the better-safe-than-sorry way) Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/5291f3ae Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/5291f3ae Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/5291f3ae Branch: refs/heads/master Commit: 5291f3ae6855bf335598f0147b67c4806c88e6fc Parents: 40b4b48 Author: Andreas Gudian <agud...@apache.org> Authored: Sun Oct 19 19:43:22 2014 +0200 Committer: Andreas Gudian <agud...@apache.org> Committed: Sun Oct 19 19:43:22 2014 +0200 ---------------------------------------------------------------------- .../surefire/report/TestSetRunListener.java | 44 +++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/5291f3ae/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java index 35b923c..701069f 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/report/TestSetRunListener.java @@ -41,7 +41,7 @@ public class TestSetRunListener { private final TestSetStats detailsForThis; - private ReportEntry lastSkipped; + private ReportEntry lastMarkedAsCompleteAfterSkipped; private List<TestMethodStats> testMethodStats; @@ -112,8 +112,6 @@ public class TestSetRunListener public void testSetStarting( ReportEntry report ) { - checkForUnfinishedTestSetDueToSkip( report ); - detailsForThis.testSetStart(); if ( consoleReporter != null ) { @@ -130,7 +128,11 @@ public class TestSetRunListener public void testSetCompleted( ReportEntry report ) { - clearLastSkipMarker(); + if ( wasMarkedAsCompleteAfterSkipped( report ) ) + { + lastMarkedAsCompleteAfterSkipped = null; + return; + } WrappedReportEntry wrap = wrapTestSet( report ); List<String> testResults = briefOrPlainFormat ? detailsForThis.getTestResults() : null; @@ -164,6 +166,13 @@ public class TestSetRunListener } + private boolean wasMarkedAsCompleteAfterSkipped( ReportEntry report ) + { + return null != lastMarkedAsCompleteAfterSkipped + && StringUtils.equals( lastMarkedAsCompleteAfterSkipped.getName(), report.getName() ) + && StringUtils.equals( lastMarkedAsCompleteAfterSkipped.getSourceName(), report.getSourceName() ); + } + // ---------------------------------------------------------------------- // Test // ---------------------------------------------------------------------- @@ -187,8 +196,6 @@ public class TestSetRunListener public void testError( ReportEntry reportEntry ) { - checkForUnfinishedTestSetDueToSkip( reportEntry ); - WrappedReportEntry wrapped = wrap( reportEntry, ReportEntryType.error ); detailsForThis.testError( wrapped ); if ( statisticsReporter != null ) @@ -200,8 +207,6 @@ public class TestSetRunListener public void testFailed( ReportEntry reportEntry ) { - checkForUnfinishedTestSetDueToSkip( reportEntry ); - WrappedReportEntry wrapped = wrap( reportEntry, ReportEntryType.failure ); detailsForThis.testFailure( wrapped ); if ( statisticsReporter != null ) @@ -217,10 +222,6 @@ public class TestSetRunListener public void testSkipped( ReportEntry reportEntry ) { - checkForUnfinishedTestSetDueToSkip( reportEntry ); - - lastSkipped = reportEntry; - WrappedReportEntry wrapped = wrap( reportEntry, ReportEntryType.skipped ); detailsForThis.testSkipped( wrapped ); @@ -229,20 +230,23 @@ public class TestSetRunListener statisticsReporter.testSkipped( reportEntry ); } clearCapture(); - } - private void checkForUnfinishedTestSetDueToSkip( ReportEntry reportEntry ) - { - if ( lastSkipped != null && !StringUtils.equals( lastSkipped.getSourceName(), reportEntry.getSourceName() ) ) + if ( looksLikeIgnoredTestSet( reportEntry ) ) { - // a new test class was started to be processed, but a skipped test class was not yet marked as completed - testSetCompleted( lastSkipped ); + // if a class is marked as @Ignored, the testSetCompleted method is not always called by the test provider, + // so we do that here. + testSetCompleted( reportEntry ); + lastMarkedAsCompleteAfterSkipped = reportEntry; } } - private void clearLastSkipMarker() + /** + * @param reportEntry the report entry to check + * @return {@code true}, if the report entry looks like it belongs to an ignored test class + */ + private boolean looksLikeIgnoredTestSet( ReportEntry reportEntry ) { - lastSkipped = null; + return StringUtils.equals( reportEntry.getName(), reportEntry.getSourceName() ); } public void testAssumptionFailure( ReportEntry report )