Hi Stuart, thanks for consulting with Naoto and providing the update.
So I'll run the fix through jdk-submit and our test system at SAP with Locale.US. Provided I don't see issues, I'll push it thereafter... Best regards Christoph > -----Original Message----- > From: Stuart Marks <stuart.ma...@oracle.com> > Sent: Dienstag, 19. März 2019 23:22 > To: Langer, Christoph <christoph.lan...@sap.com> > Cc: Brian Burkhalter <brian.burkhal...@oracle.com>; core-libs-dev <core- > libs-...@openjdk.java.net> > Subject: Re: RFR(S): 8172695: (scanner) java/util/Scanner/ScanTest.java fails > > Hi Christoph, > > I spoke with Naoto Sato (internationalization) and he recommends using > Locale.US > instead of Locale.ROOT. (Sorry for having misdirected you.) > > The test case in question, parsing float strings, relies on the decimal > separator, which isn't defined in the ROOT locale. Of course it's "." in the > US > locale. Also, the US locale is the only one that's guaranteed to be available; > see Locale::getAvailableLocales. > > So I think your current changeset will be fine if Locale.ROOT is replaced with > Locale.US. Assuming it passes test runs. :-) > > s'marks > > > On 3/19/19 1:46 AM, Langer, Christoph wrote: > > Hi Stuart, > > > > thanks for your analysis of this. > > > > So you are suggesting to use Locale.ROOT for this test unconditionally? I > agree 😊 > > > > The test coding as it is right now is not ready to support arbitrary > > locales, as > the comment already suggests. Generally, the test probably needs some > overhaul. The scanned Strings should for instance use the Locale's decimal > separators instead of hard coding ".". Maybe there are other shortcomings. > But as long as this is not done, using Locale ROOT seems to be safe for all > possible scenarios. > > > > I've updated the webrev: > http://cr.openjdk.java.net/~clanger/webrevs/8172695.1/ > > > > Are you ok with that? Brian also? > > > > Thanks > > Christoph > > > > > >> -----Original Message----- > >> From: Stuart Marks <stuart.ma...@oracle.com> > >> Sent: Dienstag, 19. März 2019 00:44 > >> To: Langer, Christoph <christoph.lan...@sap.com> > >> Cc: Brian Burkhalter <brian.burkhal...@oracle.com>; core-libs-dev <core- > >> libs-...@openjdk.java.net> > >> Subject: Re: RFR(S): 8172695: (scanner) java/util/Scanner/ScanTest.java > fails > >> > >> Hi Christoph, > >> > >> After looking at this for a little bit I realized that it's not necessary > >> to > >> have a system particular default locale in order to get the test case to > >> fail. > >> It's possible create a locale that causes test case to fail, like so: > >> > >> Locale.setDefault(new Locale("en", "DE")) > >> Scanner sc = new Scanner("\u0f23.\u0f27"); > >> sc.nextFloat(); > >> ^ throws InputMismatchException > >> > >> (This is because using "DE" as the locale's country causes texpects , > instead of > >> . as the decimal separator.) > >> > >> The test already saves the current default locale and attempts to find a > >> known > >> good locale for running the tests. The difficulty seems to be finding a > "known > >> good" locale. The current check for the language of English doesn't work if > >> the > >> default is en_DE. > >> > >> Instead, I'd suggest we use the root locale Locale.ROOT as the known > good > >> locale > >> for running the tests. We could then do something like this: > >> > >> Locale reservedLocale = Locale.getDefault(); > >> try { > >> Locale.setDefault(Locale.ROOT); > >> // run all the tests > >> } finally { > >> // restore the default locale > >> Locale.setDefault(reservedLocale); > >> } > >> > >> and dispense with the logic of searching the existing locales for one that > we > >> think is suitable. > >> > >> (Actually, since the test is being run in /othervm mode, it's not clear to > >> me > >> that restoring the previous default locale is necessary. But that's kind > >> of a > >> separate discussion. I'm ok with leaving the save/restore in place.) > >> > >> s'marks > >> > >> On 3/18/19 10:57 AM, Brian Burkhalter wrote: > >>> Hi Christoph, > >>> > >>> Not a locale expert here so you probably need to hear from someone > else, > >> but this looks like a reasonable approach to me. One minor comment is to > >> perhaps use format() at lines 67-68 instead of println(). > >>> > >>> Thanks, > >>> > >>> Brian > >>> > >>>> On Mar 18, 2019, at 7:51 AM, Langer, Christoph > >> <christoph.lan...@sap.com> wrote: > >>>> > >>>> please review a fix for 8172695, where java/util/Scanner/ScanTest.java > >> fails. It reproducibly fails on one of our Mac servers, where the locale is > set to > >> en_DE. > >>>> > >>>> The test in its current form checks if the test VM is run with a > supported > >> default Locale by just checking the language to be one of “en”, “zh”, “ko”, > >> “ja”. But it turns out, that also the country part seems to be important. I > >> suggest to change the test case to test whether the VM’s default locale is > >> one of a restricted set of locales and if it isn’t, it shall try to run > >> with > >> “ENGLISH”. > >>>> > >>>> I tested the set of US, UK, CHINA, KOREA, JAPAN and GERMANY to > work > >> on my machine. Before pushing, I’d run it through the submit repo. > >>>> > >>>> bug: https://bugs.openjdk.java.net/browse/JDK-8172695 > >> <https://bugs.openjdk.java.net/browse/JDK-8172695> > >>>> webrev: http://cr.openjdk.java.net/~clanger/webrevs/8172695.0/ > >> <http://cr.openjdk.java.net/~clanger/webrevs/8172695.0/>