FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-90548: Allow Alpine/MUSL to pass test_c_locale_coercion. by bitdancer · Pull Request #134454 · python/cpython · GitHub

/ cpython Public
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .py  (1) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
33 changes: 23 additions & 10 deletions Lib/test/test_c_locale_coercion.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
from test.support.script_helper import run_python_until_end


# Set the list of ways we expect to be able to ask for the "C" locale
# Set the list of ways we expect to be able to ask for the "C" locale.
# 'invalid.ascii' is an invalid LOCALE name and so should get turned in to the
# default locale, which is traditionally C.
EXPECTED_C_LOCALE_EQUIVALENTS = ["C", "invalid.ascii"]

# Set our expectation for the default encoding used in the C locale
Expand All @@ -21,6 +23,7 @@
EXPECTED_C_LOCALE_FS_ENCODING = "ascii"

# Set our expectation for the default locale used when none is specified
DEFAULT_LOCALE_IS_C = True
EXPECT_COERCION_IN_DEFAULT_LOCALE = True

TARGET_LOCALES = ["C.UTF-8", "C.utf8", "UTF-8"]
Expand All @@ -30,12 +33,12 @@
# Android defaults to using UTF-8 for all system interfaces
EXPECTED_C_LOCALE_STREAM_ENCODING = "utf-8"
EXPECTED_C_LOCALE_FS_ENCODING = "utf-8"
elif sys.platform.startswith("linux"):
# Linux distros typically alias the POSIX locale directly to the C
# locale.
# TODO: Once https://bugs.python.org/issue30672 is addressed, we'll be
# able to check this case unconditionally
EXPECTED_C_LOCALE_EQUIVALENTS.append("POSIX")
elif support.linked_to_musl():
# MUSL defaults to utf-8 unless the C locale is set explicitly.
EXPECTED_C_LOCALE_EQUIVALENTS = ["C"]
DEFAULT_LOCALE_IS_C = False
DEFAULT_ENCODING = 'utf-8'
EXPECT_COERCION_IN_DEFAULT_LOCALE = False
elif sys.platform.startswith("aix"):
# AIX uses iso8859-1 in the C locale, other *nix platforms use ASCII
EXPECTED_C_LOCALE_STREAM_ENCODING = "iso8859-1"
Expand All @@ -52,6 +55,11 @@
# VxWorks defaults to using UTF-8 for all system interfaces
EXPECTED_C_LOCALE_STREAM_ENCODING = "utf-8"
EXPECTED_C_LOCALE_FS_ENCODING = "utf-8"
if sys.platform.startswith("linux"):
# Linux recognizes POSIX as a synonym for C. Python will always coerce
# if the locale is set to POSIX, but not all platforms will use the
# C locale encodings if POSIX is set, so we'll only test it on linux.
EXPECTED_C_LOCALE_EQUIVALENTS.append("POSIX")

# Note that the above expectations are still wrong in some cases, such as:
# * Windows when PYTHONLEGACYWINDOWSFSENCODING is set
Expand Down Expand Up @@ -362,9 +370,14 @@ def _check_c_locale_coercion(self,
base_var_dict["PYTHONCOERCECLOCALE"] = coerce_c_locale

# Check behaviour for the default locale
_fs_encoding = fs_encoding
_stream_encoding = stream_encoding
if not DEFAULT_LOCALE_IS_C and 'LC_ALL' not in extra_vars:
_fs_encoding = _stream_encoding = DEFAULT_ENCODING
with self.subTest(default_locale=True,
PYTHONCOERCECLOCALE=coerce_c_locale):
if EXPECT_COERCION_IN_DEFAULT_LOCALE:
if (EXPECT_COERCION_IN_DEFAULT_LOCALE
or (not DEFAULT_LOCALE_IS_C and 'LC_ALL' in extra_vars)):
_expected_warnings = expected_warnings
_coercion_expected = coercion_expected
else:
Expand All @@ -378,8 +391,8 @@ def _check_c_locale_coercion(self,
_expected_warnings == [CLI_COERCION_WARNING]):
_expected_warnings = None
self._check_child_encoding_details(base_var_dict,
fs_encoding,
stream_encoding,
_fs_encoding,
_stream_encoding,
None,
_expected_warnings,
_coercion_expected)
Expand Down
Loading

Back | FazBrowse Home | New Git URL