On Fri, 13 Dec 2024 19:46:54 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

> This PR fixes a latent test bug in test bug in 
> `SwingNodePlatformExitCrashTest` by setting a flag to skip shutdown rather 
> than relying on a quirk of JUnit 5.8.1.
> 
> I discovered this while testing PR #1662 which updates JUnit to 5.11.3.
> 
> 
> $ gradle sdk shims
> $ gradle -PTEST_ONLY=true -PFULL_TEST=true -PUSE_ROBOT=true :systemTests:test 
> --tests SwingNodePlatformExitCrashTest
> ...
> SwingNodePlatformExitCrashTest > executionError FAILED
>     org.opentest4j.AssertionFailedError: Exceeded timeout limit of 10000 msec
>         at app//test.util.Util.runAndWait(Util.java:168)
>         at app//test.util.Util.runAndWait(Util.java:139)
>         at app//test.util.Util.shutdown(Util.java:316)
>         at 
> app//test.robot.javafx.embed.swing.SwingNodeBase.teardownOnce(SwingNodeBase.java:81)
>         ...
> 
> 
> The abstract `SwingNodeBase` base class calls `Util::shutdown` from its 
> static `tearDownOnce` method, annotated with `@AfterAll`. The 
> `SwingNodePlatformExitCrashTest` shuts down the FX toolkit as part of the 
> test so must not call shutdown a second time. The current test logic attempts 
> to "override" the static method in the base class with an @AfterAll 
> annotation on a static method of the same name in the subclass. This 
> accidentally works in JUnit 5.8 by hiding the method in the parent class, but 
> no longer does in JUnit 5.11.
> 
> The right fix is for the subclass to set a flag such that the superclass will 
> skip the call to `Util::shutdown`.

As an FYI, the behavior change that exposed this latent bug in our test was a 
deliberate change in JUnit 5.11.

https://github.com/junit-team/junit5/issues/3553

Indeed it was the case that before 5.11, a static method annotated with 
`@BeforeAll` or `@AfterAll` in a subclass would hide the same named method in 
the superclass, and starting in 5.11, it no longer does.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1664#issuecomment-2542417832

Reply via email to