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