]> granicus.if.org Git - python/commitdiff
Issue #8965: Write more tests for sys.getfilesystemencoding()
authorVictor Stinner <victor.stinner@haypocalc.com>
Fri, 11 Jun 2010 23:06:13 +0000 (23:06 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Fri, 11 Jun 2010 23:06:13 +0000 (23:06 +0000)
Lib/test/test_sys.py

index 8273a79a35b2da0194401f27ffd2cb2fb952d0d5..d55da622004147beff16133dae5db6f1566e551b 100644 (file)
@@ -863,21 +863,34 @@ class SizeofTest(unittest.TestCase):
         # sys.flags
         check(sys.flags, size(vh) + self.P * len(sys.flags))
 
-    @unittest.skipUnless(sys.platform == 'darwin', "test specific to Mac OS X")
     def test_getfilesystemencoding(self):
-        # On Darwing FS encoding is always UTF-8
+        import codecs
+
+        def check_fsencoding(fs_encoding):
+            self.assertIsNotNone(fs_encoding)
+            if sys.platform == 'darwin':
+                self.assertEqual(fs_encoding, 'utf-8')
+            codecs.lookup(fs_encoding)
+
         fs_encoding = sys.getfilesystemencoding()
-        self.assertEqual(fs_encoding, 'utf-8')
+        check_fsencoding(fs_encoding)
 
         # 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()
-        self.assertEqual(fs_encoding, b'utf-8')
+        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()