Fix test_sys about fs encoding for Windows and Mac OS X
* Check fs encoding value on Windows
* Ignore LANG= test on Windows and Mac OS X (fs encoding is hardcoded on these
platforms)
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 1d927f8..8a9da5b 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -6,6 +6,7 @@
import textwrap
import warnings
import operator
+import codecs
# count the number of test runs, used to create unique
# strings to intern in test_intern()
@@ -564,20 +565,25 @@
p.wait()
self.assertIn(executable, ["b''", repr(sys.executable.encode("ascii", "backslashreplace"))])
+ def check_fsencoding(self, fs_encoding, expected=None):
+ self.assertIsNotNone(fs_encoding)
+ codecs.lookup(fs_encoding)
+ if expected:
+ self.assertEqual(fs_encoding, expected)
+
def test_getfilesystemencoding(self):
- import codecs
-
- 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)
+ if sys.platform == 'darwin':
+ expected = 'utf-8'
+ elif sys.platform == 'win32':
+ expected = 'mbcs'
+ else:
+ expected = None
+ self.check_fsencoding(fs_encoding)
+ @unittest.skipIf(sys.platform in ('win32', 'darwin'),
+ 'PYTHONFSENCODING is ignored on Windows and Mac OS X')
+ def test_pythonfsencoding(self):
def get_fsencoding(env):
output = subprocess.check_output(
[sys.executable, "-c",
@@ -599,14 +605,13 @@
del env['PYTHONFSENCODING']
except KeyError:
pass
- check_fsencoding(get_fsencoding(env), 'ascii')
+ self.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)
+ for encoding in ('ascii', 'cp850', 'iso8859-1', 'utf-8'):
+ env = os.environ.copy()
+ env['PYTHONFSENCODING'] = encoding
+ self.check_fsencoding(get_fsencoding(env), encoding)
def test_setfilesystemencoding(self):