[ 
http://jira.codehaus.org/browse/SUREFIRE-701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=256543#action_256543
 ] 

Alexander Klimetschek commented on SUREFIRE-701:
------------------------------------------------

Patch description:

Attached is a patch that simply removes report files at the end of test 
execution if it was successful (in AbstractFileReporter). Note: It is difficult 
to avoid writing the file in the first place, since test logs are streamed 
directly to the file as the test runs (no buffering) and you only know that a 
test was successful after it has completed. However, the remove-on-completion 
works fine. Most of the many code changes apply to all the places where the new 
configuration has to be stored and passed around. Since I had to extend the 
ReporterConfiguration constructor with a new boolean parameter, there were 
places where the invocations via reflection had to be changed. I hope I got 
them all right, normal mvn test calls work fine for me.

I haven't written a unit test for that, as I don't know which place would be 
the best (api tests or integration-tests). To be able to run "mvn test" in the 
surefire projects itself (all successful for me), I had to change the 
maven-surefire-plugin version in the root pom to "2.7.3-SNAPSHOT" - it seems 
that useSystemClassLoader=false doesn't help, as I get reflection exceptions 
with 2.7.2 (see below). However, with 2.7.3-SNAPSHOT you can't build from the 
reactor, as maven stops detecting a cyclic reference now ;-)

[INFO] --- maven-surefire-plugin:2.7.2:test (default-test) @ 
surefire-integration-tests ---
[INFO] Surefire report directory: 
/Users/alex/Day/code/maven-surefire/surefire-integration-tests/target/surefire-reports
org.apache.maven.surefire.util.SurefireReflectionException: 
java.lang.NoSuchMethodException: 
org.apache.maven.surefire.report.ReporterConfiguration.<init>(java.util.List, 
java.io.File, java.lang.Boolean, java.lang.Integer); nested exception is 
java.lang.NoSuchMethodException: 
org.apache.maven.surefire.report.ReporterConfiguration.<init>(java.util.List, 
java.io.File, java.lang.Boolean, java.lang.Integer)
java.lang.NoSuchMethodException: 
org.apache.maven.surefire.report.ReporterConfiguration.<init>(java.util.List, 
java.io.File, java.lang.Boolean, java.lang.Integer)
        at java.lang.Class.getConstructor0(Class.java:2706)
        at java.lang.Class.getConstructor(Class.java:1657)
        at 
org.apache.maven.surefire.util.ReflectionUtils.getConstructor(ReflectionUtils.java:76)
        at 
org.apache.maven.surefire.booter.SurefireReflector.createReporterConfiguration(SurefireReflector.java:183)
        at 
org.apache.maven.surefire.booter.SurefireReflector.setReporterConfiguration(SurefireReflector.java:254)
        at 
org.apache.maven.surefire.booter.SurefireReflector.setReporterConfigurationAware(SurefireReflector.java:247)
        at 
org.apache.maven.surefire.booter.ProviderFactory.createProvider(ProviderFactory.java:67)
        at 
org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:146)
        at 
org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
        at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)

As a side node, I think the code base could be simplified enormously if a 
generic configuration system would be used (like property lists); the use of 
reflection contradicts with the hight amount of type-enforcement done with the 
various config objects and type hierarchies. But I guess this is a sign of 
evolution :-)

> showSuccess option for test reports: show reports only for failed tests
> -----------------------------------------------------------------------
>
>                 Key: SUREFIRE-701
>                 URL: http://jira.codehaus.org/browse/SUREFIRE-701
>             Project: Maven Surefire
>          Issue Type: Improvement
>          Components: Maven Surefire Plugin
>    Affects Versions: 2.7.3
>            Reporter: Alexander Klimetschek
>         Attachments: showsuccess.patch
>
>
> Use case:
> When you have a few tests, and some of them fail during 
> development/refactoring, you find yourself repeatedly looking into 
> target/surefire-reports to open the test report (txt) files with the errors 
> and stack traces to analyze them. However, by default reports will be written 
> also for successful tests, and both in txt and xml format (the xml files can 
> already be omitted using disableXmlReport=false). This makes it hard to find 
> the files that contain the failed tests.
> Solution proposal:
> Just as the maven-surefire-report-plugin already has a showSuccess option, 
> that, if set to "false", will not report successful tests, the same should be 
> available for the maven-surefire-plugin and the normal test goal.
> Either set "-DshowSuccess=false" on the command line or define 
> "<showSuccess>false</showSuccess>" in the maven-surefire-plugin configuration 
> of the pom, and reports for successful tests should not be written to the 
> reports directory.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to