New submission from Christian Heimes:

The patch prevents some tests from running multiple times in a test session.

Added file: http://bugs.python.org/file8720/py3k_reftestfix.patch

__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1414>
__________________________________
Index: Lib/test/test_frozen.py
===================================================================
--- Lib/test/test_frozen.py	(Revision 58916)
+++ Lib/test/test_frozen.py	(Arbeitskopie)
@@ -4,10 +4,17 @@
 from test.test_support import captured_stdout, run_unittest
 import unittest
 import sys, os
+import warnings
 
 class FrozenTests(unittest.TestCase):
     def test_frozen(self):
-
+        # multiple runs during a test session fail (e.g. a refleak check)
+        # because the tests depend on some output during the import of
+        # modules.
+        if "__hello__" in sys.modules:
+            warnings.warn("multiple runs of test_frozen lead false errors",
+                          RuntimeWarning)
+            return
         with captured_stdout() as stdout:
             try:
                 import __hello__
Index: Lib/test/test_pkg.py
===================================================================
--- Lib/test/test_pkg.py	(Revision 58916)
+++ Lib/test/test_pkg.py	(Arbeitskopie)
@@ -6,6 +6,7 @@
 import textwrap
 import traceback
 import unittest
+import warnings
 from test import test_support
 
 
@@ -51,7 +52,8 @@
 
     def tearDown(self):
         sys.path[:] = self.syspath
-        cleanout(self.root)
+        if self.root is not None:
+            cleanout(self.root)
 
     def run_code(self, code):
         exec(textwrap.dedent(code), globals(), {"self": self})
@@ -195,6 +197,11 @@
                          ['__doc__', '__file__', '__name__', 'spam'])
 
     def test_6(self):
+        # multiple runs during a test session fail
+        if "t6" in sys.modules:
+            warnings.warn("multiple runs of test_6 lead false errors",
+                          RuntimeWarning)
+            return
         hier = [
                 ("t6", None),
                 ("t6 __init__.py",
@@ -221,6 +228,11 @@
         self.run_code(s)
 
     def test_7(self):
+        # multiple runs during a test session fail
+        if "t7" in sys.modules:
+            warnings.warn("multiple runs of test_7 lead false errors",
+                          RuntimeWarning)
+            return
         hier = [
                 ("t7.py", ""),
                 ("t7", None),
Index: Lib/test/test_tcl.py
===================================================================
--- Lib/test/test_tcl.py	(Revision 58916)
+++ Lib/test/test_tcl.py	(Arbeitskopie)
@@ -2,11 +2,13 @@
 
 import unittest
 import os
+import sys
 from test import test_support
 from Tkinter import Tcl
 from _tkinter import TclError
 
 class TclTest(unittest.TestCase):
+    tk_loaded = False
 
     def setUp(self):
         self.interp = Tcl()
@@ -120,16 +122,20 @@
         if 'DISPLAY' not in os.environ:
             # skipping test of clean upgradeability
             return
+        if "TKLOADED" in os.environ:
+            # workaround for problem when this test runs multiple times in a
+            # row during refleak test.
+            # Calling Tk_Init again after a previous call failed might deadlock
+            return
         tcl = Tcl()
         self.assertRaises(TclError,tcl.winfo_geometry)
         tcl.loadtk()
+        os.environ["TKLOADED"] = "yes"
         self.assertEqual('1x1+0+0', tcl.winfo_geometry())
         tcl.destroy()
 
     def testLoadTkFailure(self):
-        import os
         old_display = None
-        import sys
         if sys.platform.startswith(('win', 'darwin', 'cygwin')):
             return  # no failure possible on windows?
         if 'DISPLAY' in os.environ:
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to