]> granicus.if.org Git - python/commitdiff
Issue #9819: don't try to encode TESTFN_UNICODE on Windows
authorVictor Stinner <victor.stinner@haypocalc.com>
Sat, 11 Sep 2010 12:52:30 +0000 (12:52 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Sat, 11 Sep 2010 12:52:30 +0000 (12:52 +0000)
mbcs (Windows default filesystem encoding) is now strict by default, and
depending on the code page, TESTFN_UNICODE may not be encodable to bytes.

Remove also unused "encoded" argument from _do_directory() method.

Lib/test/test_unicode_file.py

index f9dd54d8614bbef146c2f436ff14462582d71098..76eb11ef1d285ff85c632b52496c27107ba9bd9e 100644 (file)
@@ -8,12 +8,13 @@ import unittest
 from test.support import (run_unittest, rmtree,
     TESTFN_ENCODING, TESTFN_UNICODE, TESTFN_UNENCODABLE)
 
-try:
-    TESTFN_UNICODE.encode(TESTFN_ENCODING)
-except (UnicodeError, TypeError):
-    # Either the file system encoding is None, or the file name
-    # cannot be encoded in the file system encoding.
-    raise unittest.SkipTest("No Unicode filesystem semantics on this platform.")
+if not os.path.supports_unicode_filenames:
+    try:
+        TESTFN_UNICODE.encode(TESTFN_ENCODING)
+    except (UnicodeError, TypeError):
+        # Either the file system encoding is None, or the file name
+        # cannot be encoded in the file system encoding.
+        raise unittest.SkipTest("No Unicode filesystem semantics on this platform.")
 
 def remove_if_exists(filename):
     if os.path.exists(filename):
@@ -90,7 +91,7 @@ class TestUnicodeFiles(unittest.TestCase):
         shutil.copy2(filename1, filename2 + ".new")
         os.unlink(filename1 + ".new")
 
-    def _do_directory(self, make_name, chdir_name, encoded):
+    def _do_directory(self, make_name, chdir_name):
         cwd = os.getcwdb()
         if os.path.isdir(make_name):
             rmtree(make_name)
@@ -98,12 +99,8 @@ class TestUnicodeFiles(unittest.TestCase):
         try:
             os.chdir(chdir_name)
             try:
-                if not encoded:
-                    cwd_result = os.getcwd()
-                    name_result = make_name
-                else:
-                    cwd_result = os.getcwdb().decode(TESTFN_ENCODING)
-                    name_result = make_name.decode(TESTFN_ENCODING)
+                cwd_result = os.getcwd()
+                name_result = make_name
 
                 cwd_result = unicodedata.normalize("NFD", cwd_result)
                 name_result = unicodedata.normalize("NFD", name_result)
@@ -155,12 +152,11 @@ class TestUnicodeFiles(unittest.TestCase):
         #  Make dir with encoded, chdir with unicode, checkdir with encoded
         #  (or unicode/encoded/unicode, etc
         ext = ".dir"
-        self._do_directory(TESTFN_UNICODE+ext, TESTFN_UNICODE+ext, False)
+        self._do_directory(TESTFN_UNICODE+ext, TESTFN_UNICODE+ext)
         # Our directory name that can't use a non-unicode name.
         if TESTFN_UNENCODABLE is not None:
             self._do_directory(TESTFN_UNENCODABLE+ext,
-                               TESTFN_UNENCODABLE+ext,
-                               False)
+                               TESTFN_UNENCODABLE+ext)
 
 def test_main():
     run_unittest(__name__)