]> granicus.if.org Git - python/commitdiff
Backport test_getfilesystemencoding() from py3k
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 11 Jun 2010 23:12:58 +0000 (23:12 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 11 Jun 2010 23:12:58 +0000 (23:12 +0000)
Note: On Python 3.1, file system encoding can be None.

Lib/test/test_sys.py

index 4beb42947f3143a0129cc03d8b17b22a16504962..24f17fb4ac86489dd8665321aee43bc8ff6e2127 100644 (file)
@@ -792,6 +792,36 @@ class SizeofTest(unittest.TestCase):
         # sys.flags
         check(sys.flags, size(vh) + self.P * len(sys.flags))
 
+    def test_getfilesystemencoding(self):
+        import codecs
+
+        def check_fsencoding(fs_encoding):
+            if sys.platform == 'darwin':
+                self.assertEqual(fs_encoding, 'utf-8')
+            elif fs_encoding is None:
+                return
+            codecs.lookup(fs_encoding)
+
+        fs_encoding = sys.getfilesystemencoding()
+        check_fsencoding(fs_encoding)
+
+        # Even in C locale
+        try:
+            sys.executable.encode('ascii')
+        except UnicodeEncodeError:
+            # Python doesn't start with ASCII locale if its path is not ASCII,
+            # see issue #8611
+            pass
+        else:
+            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)
+
     def test_setfilesystemencoding(self):
         old = sys.getfilesystemencoding()
         try: