Uwe Schindler created LUCENE-6978:
-------------------------------------
Summary: Make LuceneTestCase use language tags instead of parsing
locales by hand
Key: LUCENE-6978
URL: https://issues.apache.org/jira/browse/LUCENE-6978
Project: Lucene - Core
Issue Type: Improvement
Components: modules/test-framework
Reporter: Uwe Schindler
Assignee: Uwe Schindler
Since we are on Java 7, the JDK supports standardized language tags as
identifiers for Locales. Previous versions of JDK were missing a constructor
from {{Locale#toString()}} back to a locale, so we had our own, which was
broken several times after the JDK changed their Locale internals.
This patch will do the following:
- When printing the reproduce line, it will use {{Locale#getLanguageTag()}}, so
you can identify the locale in standardized form. Most notable change is (next
to more flexibility around asian languages) the change away from undescores. So
it prints "en-US", not "en_US".
- The code that parses a locale uses Locale's Builder and sets the language
tag. This will fail if the tag is invalid! A trap is {{Locale#forLanguageTag}},
because this one silently returns root locale if unparseable...
- The random locale is choosen from all language tags, which are extracted from
the JDK as a {{String[]}} array.
I would also like to place {{Locale#forLanguageTag}} on the forbidden list and
disallow directly calling {{Locale#toString()}}, the latter is legacy API
(according to Java 7 Javadocs). This would fail code that calls toString()
directly, e.g. when formatting stuff like {{"my Locale: " + locale}}. Of course
we cannot catch all bad uses.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]