summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_sys.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_sys.py')
-rw-r--r--Lib/test/test_sys.py32
1 files changed, 24 insertions, 8 deletions
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 44ef5c1..d2f5b85 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -863,16 +863,24 @@ class SizeofTest(unittest.TestCase):
def test_getfilesystemencoding(self):
import codecs
- def check_fsencoding(fs_encoding):
+ def check_fsencoding(fs_encoding, expected=None):
self.assertIsNotNone(fs_encoding)
if sys.platform == 'darwin':
self.assertEqual(fs_encoding, 'utf-8')
codecs.lookup(fs_encoding)
+ if expected:
+ self.assertEqual(fs_encoding, expected)
fs_encoding = sys.getfilesystemencoding()
check_fsencoding(fs_encoding)
- # Even in C locale
+ def get_fsencoding(env):
+ output = subprocess.check_output(
+ [sys.executable, "-c",
+ "import sys; print(sys.getfilesystemencoding())"],
+ env=env)
+ return output.rstrip().decode('ascii')
+
try:
sys.executable.encode('ascii')
except UnicodeEncodeError:
@@ -880,14 +888,22 @@ class SizeofTest(unittest.TestCase):
# see issue #8611
pass
else:
+ # Even in C locale
env = os.environ.copy()
env['LANG'] = 'C'
- output = subprocess.check_output(
- [sys.executable, "-c",
- "import sys; print(sys.getfilesystemencoding())"],
- env=env)
- fs_encoding = output.rstrip().decode('ascii')
- check_fsencoding(fs_encoding)
+ try:
+ del env['PYTHONFSENCODING']
+ except KeyError:
+ pass
+ check_fsencoding(get_fsencoding(env), 'ascii')
+
+ # Filesystem encoding is hardcoded on Windows and Mac OS X
+ if sys.platform not in ('win32', 'darwin'):
+ for encoding in ('ascii', 'cp850', 'iso8859-1', 'utf-8'):
+ env = os.environ.copy()
+ env['PYTHONFSENCODING'] = encoding
+ check_fsencoding(get_fsencoding(env), encoding)
+
def test_setfilesystemencoding(self):
old = sys.getfilesystemencoding()