Christian Heimes added the comment:

Here is a version of test_freeze that doesn't depend on stdout output on
load.

Added file: http://bugs.python.org/file8721/py3k_reftestfix2.patch

__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue1414>
__________________________________
Index: Python/frozen.c
===================================================================
--- Python/frozen.c	(Revision 58923)
+++ Python/frozen.c	(Arbeitskopie)
@@ -8,19 +8,18 @@
    some famous words... */
 
 /* To regenerate this data after the bytecode or marshal format has changed,
-   go to ../Tools/freeze/ and freeze the hello.py file; then copy and paste
+   go to ../Tools/freeze/ and freeze the flag.py file; then copy and paste
    the appropriate bytes from M___main__.c. */
 
 static unsigned char M___hello__[] = {
-	99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
-	0,64,0,0,0,115,14,0,0,0,101,0,0,100,0,0,
-	131,1,0,1,100,1,0,83,40,2,0,0,0,117,14,0,
-	0,0,72,101,108,108,111,32,119,111,114,108,100,46,46,46,
-	78,40,1,0,0,0,117,5,0,0,0,112,114,105,110,116,
-	40,0,0,0,0,40,0,0,0,0,40,0,0,0,0,117,
-	8,0,0,0,104,101,108,108,111,46,112,121,117,8,0,0,
-	0,60,109,111,100,117,108,101,62,1,0,0,0,115,0,0,
-	0,0,
+	99,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+	0,64,0,0,0,115,10,0,0,0,100,1,0,90,1,0,
+	100,0,0,83,40,2,0,0,0,78,84,40,2,0,0,0,
+	117,4,0,0,0,84,114,117,101,117,11,0,0,0,105,110,
+	105,116,105,97,108,105,122,101,100,40,0,0,0,0,40,0,
+	0,0,0,40,0,0,0,0,117,7,0,0,0,102,108,97,
+	103,46,112,121,117,8,0,0,0,60,109,111,100,117,108,101,
+	62,1,0,0,0,115,0,0,0,0,
 };
 
 #define SIZE (int)sizeof(M___hello__)
Index: Tools/freeze/flag.py
===================================================================
--- Tools/freeze/flag.py	(Revision 0)
+++ Tools/freeze/flag.py	(Revision 0)
@@ -0,0 +1,2 @@
+initialized = True
+

Eigenschaftsänderungen: Tools/freeze/flag.py
___________________________________________________________________
Name: svn:keywords
   + 'Id Revision'
Name: svn:eol-style
   + native

Index: Lib/test/test_frozen.py
===================================================================
--- Lib/test/test_frozen.py	(Revision 58923)
+++ Lib/test/test_frozen.py	(Arbeitskopie)
@@ -4,38 +4,42 @@
 from test.test_support import captured_stdout, run_unittest
 import unittest
 import sys, os
+import warnings
 
 class FrozenTests(unittest.TestCase):
     def test_frozen(self):
+        try:
+            import __hello__
+        except ImportError as x:
+            self.fail("import __hello__ failed:" + str(x))
+        self.assertEqual(__hello__.initialized, True)
+        self.assertEqual(len(dir(__hello__)), 5)
 
-        with captured_stdout() as stdout:
-            try:
-                import __hello__
-            except ImportError as x:
-                self.fail("import __hello__ failed:" + str(x))
+        try:
+            import __phello__
+        except ImportError as x:
+            self.fail("import __phello__ failed:" + str(x))
+        self.assertEqual(__phello__.initialized, True)
+        if not "__phello__.spam" in sys.modules:
+            self.assertEqual(len(dir(__phello__)), 6, dir(__phello__))
+        else:
+            self.assertEqual(len(dir(__phello__)), 7, dir(__phello__))
 
-            try:
-                import __phello__
-            except ImportError as x:
-                self.fail("import __phello__ failed:" + str(x))
+        try:
+            import __phello__.spam
+        except ImportError as x:
+            self.fail("import __phello__.spam failed:" + str(x))
+        self.assertEqual(__phello__.spam.initialized, True)
+        self.assertEqual(len(dir(__phello__.spam)), 5)
+        self.assertEqual(len(dir(__phello__)), 7)
 
-            try:
-                import __phello__.spam
-            except ImportError as x:
-                self.fail("import __phello__.spam failed:" + str(x))
+        try:
+            import __phello__.foo
+        except ImportError:
+            pass
+        else:
+            self.fail("import __phello__.foo should have failed")
 
-            if sys.platform != "mac":  # On the Mac this import does succeed.
-                try:
-                    import __phello__.foo
-                except ImportError:
-                    pass
-                else:
-                    self.fail("import __phello__.foo should have failed")
-
-        self.assertEquals(stdout.getvalue(),
-                          'Hello world...\nHello world...\nHello world...\n')
-
-
 def test_main():
     run_unittest(FrozenTests)
 
Index: Lib/test/test_pkg.py
===================================================================
--- Lib/test/test_pkg.py	(Revision 58923)
+++ 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 58923)
+++ Lib/test/test_tcl.py	(Arbeitskopie)
@@ -2,13 +2,17 @@
 
 import unittest
 import os
+import sys
 from test import test_support
 from Tkinter import Tcl
 from _tkinter import TclError
+from _tkinter import _get_load_status
 
 class TclTest(unittest.TestCase):
+    tk_loaded = False
 
     def setUp(self):
+        print(_get_load_status())
         self.interp = Tcl()
 
     def testEval(self):
@@ -120,16 +124,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