RFR: 8326948: Force English locale for timeout formatting
Alexey Ivanov
aivanov at openjdk.org
Wed Feb 28 16:17:52 UTC 2024
On Wed, 28 Feb 2024 15:48:05 GMT, Andy Goryachev <angorya at openjdk.org> wrote:
>> If a test runs in non-English locale, the digits displayed in the timeout could be locale-specific, which may be confusing.
>>
>> For example, in the Arabic locale `-Duser.language=ar`, the timeout is displayed like this:
>>
>> Test timeout: ٠٠:٠٤:٥٨
>>
>> The fix explicitly sets English locale for formatting, which ensures the timeout is always displayed with the Western Arabic numerals, see [Numerals in most popular systems](https://en.wikipedia.org/wiki/Numerical_digit#Numerals_in_most_popular_systems).
>
> test/jdk/java/awt/regtesthelpers/PassFailJFrame.java line 644:
>
>> 642: long seconds = (leftTime - hours * 3_600_000 - minutes * 60_000) / 1_000;
>> 643: label.setText(String.format(Locale.ENGLISH,
>> 644: "Test timeout: %02d:%02d:%02d",
>
> is this the only place where we must enforce the locale? Surely, there must be many, many other occurrences!
In the `PassFailJFrame` class, there's no more code which depends on locale. This is the only place where something is formatted.
Other tests, including those that use the `PassFailJFrame` framework, may depend on the current locale. It is not a goal to update all possible tests which may fail in non-English locale to use an English locale explicitly.
There are tests which explicitly set the locale, for example [`PageDialogMarginTest.java`](https://github.com/openjdk/jdk/blob/b938a5c9edd53821a52b43a8e342b76adb341a3f/test/jdk/java/awt/print/PrinterJob/PageDialogMarginTest.java#L45).
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/18042#discussion_r1506222222
More information about the client-libs-dev
mailing list