On Wed, 21 May 2025 12:00:51 GMT, Alexey Ivanov <aiva...@openjdk.org> wrote:
>>> > When I try to iterate the test for all L&F, the test result of first L&F >>> > is explicitly taken for other L&F too. Any idea why ? >>> >>> Indeed, `PassFailJFrame` doesn't support repeating tests. It never was a >>> scenario that we thought of. There are lots of static fields, including the >>> latch that's used to wait for the test result. The instruction frame and >>> list of windows are also static fields. >>> >>> Supporting repeating tests such as in this scenario would require a >>> substantial redesign of the internal structures… Everything should be an >>> instance field instead, that instance could be stored in a static variable >>> to support all the static methods provided. Redesigning the >>> `PassFailJFrame` framework this way would take significant amount of time. >> >> I submitted the following enhancements: >> >> * [JDK-8357455](https://bugs.openjdk.org/browse/JDK-8357455): Support >> running multiple PassFailJFrame test cases in one process; >> * [JDK-8357456](https://bugs.openjdk.org/browse/JDK-8357456): Ensure >> JFileChooser doesn't render file names as HTML in all L&Fs support. > > As a workaround, I suggest testing Metal, the default L&F, and the system L&F > on the platforms. > > This can be achieved by having two sets of jtreg test tags: > > > /* > * @test id=metal > * @bug 8139228 > * @summary JFileChooser should not render Directory names in HTML format > * @library /java/awt/regtesthelpers > * @build PassFailJFrame > * @run main/manual HTMLFileName metal > */ > > /* > * @test id=system > * @bug 8139228 > * @summary JFileChooser should not render Directory names in HTML format > * @library /java/awt/regtesthelpers > * @build PassFailJFrame > * @run main/manual HTMLFileName system > */ > > > Then add the following to your `main` method: > > > public static void main(String[] args) throws Exception { > if (args.length < 1) { > throw new IllegalArgumentException("Look-and-Feel keyword is > required"); > } > > final String lafClassName; > switch (args[0]) { > case "metal" -> lafClassName = > UIManager.getCrossPlatformLookAndFeelClassName(); > case "system" -> lafClassName = > UIManager.getSystemLookAndFeelClassName(); > default -> throw new IllegalArgumentException("Unsupported > Look-and-Feel keyword: " + args[0]); > } > > SwingUtilities.invokeAndWait(() -> { > try { > UIManager.setLookAndFeel(lafClassName); > } catch (Exception e) { > throw new RuntimeException(e); > } > }); > > PassFailJFrame.builder() > // other configuration > .awaitAndCheck(); > > > I tested it, and it works perfectly on Windows. Yes, its working on windows too. Thank you. I have updated the test. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24439#discussion_r2100646531