Message306083
> Several of the tests in test_c_locale_coercion (particularly LocaleCoercionTests._check_c_locale_coercion) tend to assume that the system default locale used when setting setlocale(category, "") and when all the relevant environment variables are empty/blank will be the "C"/"POSIX" locale.
>
> While this is often true POSIX does not require this to be the case.
I think you are right. The section starting with "The values of locale categories shall be determined by a precedence order;" in [1] states:
4. If the LANG environment variable is not set or is set to the empty string, the implementation-defined default locale shall be used.
In the current implementation of PR 4334 [2] only one change to test_c_locale_coercion is needed to fix the failures of some subtests of test_PYTHONCOERCECLOCALE_set_to_warn when all the locale envt variables are set to the empty string. All the other tests are unchanged and ok because the new _Py_SetLocaleFromEnv() function [3] causes Android to behave as a plain *nix platform except when the locale envt variables are unset or set to an empty string.
[1] http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html
[2] PR 4334: Fix the implementation of PEP 538 on Android
[3] And because after calling setlocale(category, "C"), setlocale(category) returns "C" on Android (this may not be the case on Cygwin). |
|
Date |
User |
Action |
Args |
2017-11-11 12:57:26 | xdegaye | set | recipients:
+ xdegaye, ncoghlan, erik.bray |
2017-11-11 12:57:26 | xdegaye | set | messageid: <1510405046.7.0.213398074469.issue32002@psf.upfronthosting.co.za> |
2017-11-11 12:57:26 | xdegaye | link | issue32002 messages |
2017-11-11 12:57:26 | xdegaye | create | |
|