From ca6525afba27f71deb4ce87bbdf54b5db010ef0e Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sat, 11 Sep 2010 12:52:30 +0000 Subject: [PATCH] Issue #9819: don't try to encode TESTFN_UNICODE on Windows 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 | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/Lib/test/test_unicode_file.py b/Lib/test/test_unicode_file.py index f9dd54d8614..76eb11ef1d2 100644 --- a/Lib/test/test_unicode_file.py +++ b/Lib/test/test_unicode_file.py @@ -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__)