Message306083
| Author |
xdegaye |
| Recipients |
erik.bray, ncoghlan, xdegaye |
| Date |
2017年11月11日.12:57:26 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1510405046.7.0.213398074469.issue32002@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
> 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). |
|
History
|
|---|
| 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 |
|