Merged revisions 78585,78594,78606 via svnmerge from
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.
........
diff --git a/Lib/test/test_pep277.py b/Lib/test/test_pep277.py
index 11039ac..a8bb349 100644
--- a/Lib/test/test_pep277.py
+++ b/Lib/test/test_pep277.py
@@ -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 @@
         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 @@
             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 @@
         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))