[ 
https://issues.apache.org/jira/browse/LUCENE-3402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Muir resolved LUCENE-3402.
---------------------------------

    Resolution: Fixed
    
> LuceneTestCase shouldn't go crazy if a test fails in an @AfterClass annotated 
> method
> ------------------------------------------------------------------------------------
>
>                 Key: LUCENE-3402
>                 URL: https://issues.apache.org/jira/browse/LUCENE-3402
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Robert Muir
>         Attachments: LUCENE-3402.patch, LUCENE-3402.patch
>
>
> An example can be seen here: http://sierranevada.servebeer.com/1314308641.log
> The general problem is this: the assertions and cleanups in lucenetestcase's 
> afterclass should be reordered, and have better error handling.
> In this particular case these were the steps that happened:
> # AutoCommitTest didn't close its searchers, so SolrTestCaseJ4 threw an 
> assertion exception in its @AfterClass method.
> # Because the searcher wasn't closed, LuceneTestCase threw an assertion 
> exception about unclosed directories/file handles in its afterClass. Even 
> though the test had already "failed" it ran this assertion because 
> testsFailed is false, since our TestWatchMan isnt aware of failures that 
> happen in @AfterClass methods :(
> # Because it threw this exception, it never made it to the part where it 
> resets the random, so the next test blew up in its BeforeClass.
> To add insult to injury, all this happened but we didnt get a random seed 
> printed, so we cant even hope to reproduce the situation.
> After discussion with hossman, we came up with some ideas on how to improve 
> this, and I'm adding some i just thought of, too:
> # try to divide up these assertions and cleanups in LuceneTestCase: we could 
> use multiple @AfterClass-annotated methods but then i'm not sure we can 
> control the order, which is scary. But one safe thing to do is to put these 
> pieces of code in little methods and afterclass can handle this stuff with 
> try/finally.
> # think about exposing the testsFailed variable for subclasses that do 
> assertions in their @AfterClasses. otherwise you might not get a random seed, 
> which is bad.
> # think about upgrading junit, because I know from experimentation that the 
> TestWatchMan (or whatever its replacement is) can "see more" of the test 
> lifecycle and this would probably make a lot of this much cleaner.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to