SVN: zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/ Various Python 3 support.

Lennart Regebro <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <[email protected]>
Log message for revision 106370:
  Various Python 3 support.
  

Changed:
  U   zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/debug.py
  U   zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/runner.py
  U   zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/tb_format.py
  U   zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/testrunner-debugging-layer-setup.test

-=-
Modified: zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/debug.py
===================================================================
--- zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/debug.py	2009-12-10 10:18:09 UTC (rev 106369)
+++ zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/debug.py	2009-12-10 10:20:28 UTC (rev 106370)
@@ -46,7 +46,7 @@
             except:
                 exc_info = sys.exc_info()
 
-    print "%s:" % (exc_info[0], )
+    print "%s.%s:" % (exc_info[0].__module__, exc_info[0].__name__)
     print exc_info[1]
     pdb.post_mortem(exc_info[2])
     raise zope.testing.testrunner.interfaces.EndRun()

Modified: zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/runner.py
===================================================================
--- zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/runner.py	2009-12-10 10:18:09 UTC (rev 106369)
+++ zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/runner.py	2009-12-10 10:20:28 UTC (rev 106370)
@@ -366,7 +366,7 @@
     except zope.testing.testrunner.interfaces.EndRun:
         raise
     except Exception:
-        f = cStringIO.StringIO()
+        f = cStringIO.StringIO()        
         traceback.print_exc(file=f)
         output.error(f.getvalue())
         errors.append((SetUpLayerFailure(), sys.exc_info()))
@@ -491,6 +491,11 @@
     """Sends complete output to queue."""
 
     def write(self, out):
+        if not isinstance(out, str):
+            # In Python 3, a Popen process stdout uses bytes,
+            # While normal stdout uses strings. So we need to convert
+            # from bytes to strings here.
+            out = out.decode()
         sys.stdout.write(out)
         # Help keep-alive monitors (human or automated) keep up-to-date.
         sys.stdout.flush()

Modified: zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/tb_format.py
===================================================================
--- zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/tb_format.py	2009-12-10 10:18:09 UTC (rev 106369)
+++ zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/tb_format.py	2009-12-10 10:20:28 UTC (rev 106370)
@@ -22,16 +22,26 @@
 import zope.testing.testrunner.feature
 
 
-def format_exception(t, v, tb, limit=None):
+def format_exception(t, v, tb, limit=None, chain=None):
+    if chain:
+        values = traceback._iter_chain(v, tb)
+    else:
+        values = [(v, tb)]
     fmt = zope.exceptions.exceptionformatter.TextExceptionFormatter(
         limit=None, with_filenames=True)
-    return fmt.formatException(t, v, tb)
+    for v, tb in values:
+        return fmt.formatException(t, v, tb)
 
 
-def print_exception(t, v, tb, limit=None, file=None):
+def print_exception(t, v, tb, limit=None, file=None, chain=None):
+    if chain:
+        values = traceback._iter_chain(v, tb)
+    else:
+        values = [(v, tb)]
     if file is None:
         file = sys.stdout
-    file.writelines(format_exception(t, v, tb, limit))
+    for v, tb in values:
+        file.writelines(format_exception(t, v, tb, limit))
 
 
 class Traceback(zope.testing.testrunner.feature.Feature):

Modified: zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/testrunner-debugging-layer-setup.test
===================================================================
--- zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/testrunner-debugging-layer-setup.test	2009-12-10 10:18:09 UTC (rev 106369)
+++ zope.testing/branches/regebro-python3-reloaded/src/zope/testing/testrunner/testrunner-debugging-layer-setup.test	2009-12-10 10:20:28 UTC (rev 106370)
@@ -5,7 +5,7 @@
     >>> tdir = tempfile.mkdtemp()
     >>> dir = os.path.join(tdir, 'TESTS-DIR')
     >>> os.mkdir(dir)
-    >>> open(os.path.join(dir, 'tests.py'), 'w').write(
+    >>> written = open(os.path.join(dir, 'tests.py'), 'w').write(
     ... '''
     ... import doctest
     ...
@@ -47,7 +47,7 @@
     ... finally: sys.stdin = real_stdin
     ... # doctest: +ELLIPSIS
     Running tests.Layer tests:
-      Set up tests.Layer exceptions.ValueError:
+      Set up tests.Layer ....ValueError:
     <BLANKLINE>
     > ...tests.py(8)setUp()
     -> raise ValueError
@@ -64,7 +64,7 @@
     ... else:
     ...     sys.stdin = Input('p x\nc')
 
-    >>> open(os.path.join(dir, 'tests2.py'), 'w').write(
+    >>> written = open(os.path.join(dir, 'tests2.py'), 'w').write(
     ... '''
     ... import doctest, unittest
     ...
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.