Merged revisions 73072 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r73072 | antoine.pitrou | 2009-05-31 16:20:14 +0200 (dim., 31 mai 2009) | 4 lines

  Issue #6152: New option '-j'/'--multiprocess' for regrtest allows running
  regression tests in parallel, shortening the total runtime.
........
diff --git a/Lib/test/support.py b/Lib/test/support.py
index 337a33f..38ea107 100644
--- a/Lib/test/support.py
+++ b/Lib/test/support.py
@@ -336,34 +336,38 @@
 else:
     TESTFN = '@test'
 
-    # Assuming sys.getfilesystemencoding()!=sys.getdefaultencoding()
-    # TESTFN_UNICODE is a filename that can be encoded using the
-    # file system encoding, but *not* with the default (ascii) encoding
-    TESTFN_UNICODE = "@test-\xe0\xf2"
-    TESTFN_ENCODING = sys.getfilesystemencoding()
-    # TESTFN_UNICODE_UNENCODEABLE is a filename that should *not* be
-    # able to be encoded by *either* the default or filesystem encoding.
-    # This test really only makes sense on Windows NT platforms
-    # which have special Unicode support in posixmodule.
-    if (not hasattr(sys, "getwindowsversion") or
-            sys.getwindowsversion()[3] < 2): #  0=win32s or 1=9x/ME
-        TESTFN_UNICODE_UNENCODEABLE = None
+# Disambiguate TESTFN for parallel testing, while letting it remain a valid
+# module name.
+TESTFN = "{0}_{1}_tmp".format(TESTFN, os.getpid())
+
+# Assuming sys.getfilesystemencoding()!=sys.getdefaultencoding()
+# TESTFN_UNICODE is a filename that can be encoded using the
+# file system encoding, but *not* with the default (ascii) encoding
+TESTFN_UNICODE = TESTFN + "-\xe0\xf2"
+TESTFN_ENCODING = sys.getfilesystemencoding()
+# TESTFN_UNICODE_UNENCODEABLE is a filename that should *not* be
+# able to be encoded by *either* the default or filesystem encoding.
+# This test really only makes sense on Windows NT platforms
+# which have special Unicode support in posixmodule.
+if (not hasattr(sys, "getwindowsversion") or
+        sys.getwindowsversion()[3] < 2): #  0=win32s or 1=9x/ME
+    TESTFN_UNICODE_UNENCODEABLE = None
+else:
+    # Japanese characters (I think - from bug 846133)
+    TESTFN_UNICODE_UNENCODEABLE = TESTFN + "-\u5171\u6709\u3055\u308c\u308b"
+    try:
+        # XXX - Note - should be using TESTFN_ENCODING here - but for
+        # Windows, "mbcs" currently always operates as if in
+        # errors=ignore' mode - hence we get '?' characters rather than
+        # the exception.  'Latin1' operates as we expect - ie, fails.
+        # See [ 850997 ] mbcs encoding ignores errors
+        TESTFN_UNICODE_UNENCODEABLE.encode("Latin1")
+    except UnicodeEncodeError:
+        pass
     else:
-        # Japanese characters (I think - from bug 846133)
-        TESTFN_UNICODE_UNENCODEABLE = "@test-\u5171\u6709\u3055\u308c\u308b"
-        try:
-            # XXX - Note - should be using TESTFN_ENCODING here - but for
-            # Windows, "mbcs" currently always operates as if in
-            # errors=ignore' mode - hence we get '?' characters rather than
-            # the exception.  'Latin1' operates as we expect - ie, fails.
-            # See [ 850997 ] mbcs encoding ignores errors
-            TESTFN_UNICODE_UNENCODEABLE.encode("Latin1")
-        except UnicodeEncodeError:
-            pass
-        else:
-            print('WARNING: The filename %r CAN be encoded by the filesystem.  '
-                  'Unicode filename tests may not be effective'
-                  % TESTFN_UNICODE_UNENCODEABLE)
+        print('WARNING: The filename %r CAN be encoded by the filesystem.  '
+              'Unicode filename tests may not be effective'
+              % TESTFN_UNICODE_UNENCODEABLE)
 
 # Make sure we can write to TESTFN, try in /tmp if we can't
 fp = None