On Thu, 19 Jun 2025 03:42:21 GMT, Manukumar V S <[email protected]> wrote:
>> Issue:
>> MyanmarTextTest.java produces a false positive result when some of the test
>> preconditions are not met. It checks whether certain fonts are present in
>> the system, for example, 'Padauk' on Linux. If the required font is missing,
>> the test simply returns early, and the test ends up passing, which is
>> incorrect. Ideally, it should throw a jtreg.SkippedException when the
>> necessary preconditions are not satisfied.
>>
>> Another scenario is that the test passes on headless machines even though it
>> creates GUI components. Ideally, when GUI components are created in code
>> running on a headless machine, a HeadlessException should be thrown.
>> However, since MyanmarTextTest.java exits before reaching the point where
>> the GUI is created (due to unmet preconditions), it incorrectly reports a
>> pass. This behavior may lead to a misinterpretation of the test as being
>> headless, which it is not.
>>
>> Fix:
>> Need to throw jtreg.SkippedException in cases where some pre-conditions for
>> running the test are not met.
>>
>> Testing:
>> Tested using mach5 in all available platforms and got full PASS.
>
> Manukumar V S has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Combined the fonts in to one list, formatting changes
Changes requested by aivanov (Reviewer).
test/jdk/java/awt/font/TextLayout/MyanmarTextTest.java line 56:
> 54: private static final String TEXT = "\u1000\u103C";
> 55:
> 56: private static final String OS_NAME =
> System.getProperty("os.name").toLowerCase();
The OS name isn't needed any longer.
test/jdk/java/awt/font/TextLayout/MyanmarTextTest.java line 63:
> 61: "Myanmar Text",
> 62: "Noto Sans Myanmar");
> 63: private static final String FONT_NAME = selectFontName();
Suggestion:
"Noto Sans Myanmar");
private static final String FONT_NAME = selectFontName();
A blank line.
test/jdk/java/awt/font/TextLayout/MyanmarTextTest.java line 76:
> 74: System.err.println("Checked fonts: " + fontList);
> 75: throw new SkippedException("Required fonts not installed for
> OS: "
> 76: + OS_NAME + ". Checked fonts: " + fontList);
Suggestion:
throw new SkippedException("No suitable font found out of the list:
"
+ String.join(", ", FONT_CANDIDATES));
I see no value in printing the same information twice, the exception message is
*always* printed, and it contains all the required details.
test/jdk/java/awt/font/TextLayout/MyanmarTextTest.java line 145:
> 143: .filter(FONT_CANDIDATES::contains)
> 144: .findFirst()
> 145: .orElse(null);
I'm for preserving the original wrapping style where `.` align:
Suggestion:
return Arrays.stream(GraphicsEnvironment
.getLocalGraphicsEnvironment()
.getAvailableFontFamilyNames())
.filter(FONT_CANDIDATES::contains)
.findFirst()
.orElse(null);
-------------
PR Review: https://git.openjdk.org/jdk/pull/25879#pullrequestreview-2942345012
PR Review Comment: https://git.openjdk.org/jdk/pull/25879#discussion_r2156613372
PR Review Comment: https://git.openjdk.org/jdk/pull/25879#discussion_r2156614008
PR Review Comment: https://git.openjdk.org/jdk/pull/25879#discussion_r2156624016
PR Review Comment: https://git.openjdk.org/jdk/pull/25879#discussion_r2156627677