Issue #16455: On FreeBSD and Solaris, if the locale is C, the

ASCII/surrogateescape codec is now used, instead of the locale encoding, to
decode the command line arguments. This change fixes inconsistencies with
os.fsencode() and os.fsdecode() because these operating systems announces an
ASCII locale encoding, whereas the ISO-8859-1 encoding is used in practice.
This commit is contained in:
Victor Stinner 2012-12-04 01:34:47 +01:00
parent ca9f8b21c8
commit d45c7f8d74
5 changed files with 242 additions and 41 deletions

View file

@ -367,11 +367,10 @@ class CmdLineTest(unittest.TestCase):
# Mac OS X denies the creation of a file with an invalid UTF-8 name.
# Windows allows to create a name with an arbitrary bytes name, but
# Python cannot a undecodable bytes argument to a subprocess.
#if (support.TESTFN_UNDECODABLE
#and sys.platform not in ('win32', 'darwin')):
# name = os.fsdecode(support.TESTFN_UNDECODABLE)
#elif support.TESTFN_NONASCII:
if support.TESTFN_NONASCII:
if (support.TESTFN_UNDECODABLE
and sys.platform not in ('win32', 'darwin')):
name = os.fsdecode(support.TESTFN_UNDECODABLE)
elif support.TESTFN_NONASCII:
name = support.TESTFN_NONASCII
else:
self.skipTest("need support.TESTFN_NONASCII")