]> granicus.if.org Git - python/commitdiff
Merged revisions 78585,78594,78606 via svnmerge from
authorFlorent Xicluna <florent.xicluna@gmail.com>
Wed, 3 Mar 2010 00:06:37 +0000 (00:06 +0000)
committerFlorent Xicluna <florent.xicluna@gmail.com>
Wed, 3 Mar 2010 00:06:37 +0000 (00:06 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78585 | florent.xicluna | 2010-03-02 22:34:45 +0100 (mar, 02 mar 2010) | 2 lines

  Tentatively enable test_pep277 on all platforms.
........
  r78594 | florent.xicluna | 2010-03-02 23:34:11 +0100 (mar, 02 mar 2010) | 2 lines

  Test test_pep277 is only relevant for Unicode-friendly filesystems.
........
  r78606 | florent.xicluna | 2010-03-03 00:56:38 +0100 (mer, 03 mar 2010) | 2 lines

  Fix wording.
........

Lib/test/test_pep277.py
Misc/NEWS

index 11039acc327324c6b49a64a6dbc00ca1c1b8d138..a8bb349be9ca97125bd41c70c3a8d69e6aab615c 100644 (file)
@@ -2,8 +2,6 @@
 # open, os.open, os.stat. os.listdir, os.rename, os.remove, os.mkdir, os.chdir, os.rmdir
 import sys, os, unittest
 from test import support
-if not os.path.supports_unicode_filenames:
-    raise unittest.SkipTest("test works only on NT+")
 
 filenames = [
     'abc',
@@ -36,7 +34,12 @@ class UnicodeFileTests(unittest.TestCase):
         except OSError:
             pass
         for name in self.files:
-            f = open(name, 'wb')
+            try:
+                f = open(name, 'wb')
+            except UnicodeEncodeError:
+                if not os.path.supports_unicode_filenames:
+                    raise unittest.SkipTest("only NT+ and systems with Unicode"
+                                            "-friendly filesystem encoding")
             f.write((name+'\n').encode("utf-8"))
             f.close()
             os.stat(name)
@@ -51,6 +54,9 @@ class UnicodeFileTests(unittest.TestCase):
             raise support.TestFailed("Expected to fail calling '%s(%r)'"
                              % (fn.__name__, filename))
         except expected_exception as details:
+            # the "filename" exception attribute may be encoded
+            if isinstance(details.filename, bytes):
+                filename = filename.encode(sys.getfilesystemencoding())
             if check_fn_in_exception and details.filename != filename:
                 raise support.TestFailed("Function '%s(%r) failed with "
                                  "bad filename in the exception: %r"
@@ -80,7 +86,7 @@ class UnicodeFileTests(unittest.TestCase):
         f1 = os.listdir(support.TESTFN)
         f2 = os.listdir(str(support.TESTFN.encode("utf-8"),
                                 sys.getfilesystemencoding()))
-        sf2 = set("\\".join((str(support.TESTFN), f))
+        sf2 = set(os.path.join(str(support.TESTFN), f)
                   for f in f2)
         self.assertEqual(len(f1), len(self.files))
         self.assertEqual(sf2, set(self.files))
index 91b69917ef5f2bb852a3b1d267e0270ddd1cc66c..fddba76fe67efc1f565d95b972fa877e7f67301e 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -824,6 +824,9 @@ Documentation
 Tests
 -----
 
+- Issue #767675: enable test_pep277 on POSIX platforms with Unicode-friendly
+  filesystem encoding.
+
 - Issue #6292: for the moment at least, the test suite runs cleanly if python
   is run with the -OO flag.  Tests requiring docstrings are skipped.