← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~benji/launchpad/bug-996729 into lp:launchpad

 

Benji York has proposed merging lp:~benji/launchpad/bug-996729 into lp:launchpad.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #996729 in Launchpad itself: "zope.testing --subunit allows bad output on stdout, which can break subunit processing and tests"
  https://bugs.launchpad.net/launchpad/+bug/996729

For more details, see:
https://code.launchpad.net/~benji/launchpad/bug-996729/+merge/109732

When generating subunit output any tests that write to stdout or stderr will corrupt the subunit stream.  This branch uses the p9 version of our zope.testing fork which squelches output to stdout (and sometimes stderr) when subunit output is requested.
-- 
https://code.launchpad.net/~benji/launchpad/bug-996729/+merge/109732
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~benji/launchpad/bug-996729 into lp:launchpad.
=== modified file 'lib/lp/services/tests/test_stacktrace.py'
--- lib/lp/services/tests/test_stacktrace.py	2012-01-01 02:58:52 +0000
+++ lib/lp/services/tests/test_stacktrace.py	2012-06-11 20:47:32 +0000
@@ -148,6 +148,7 @@
     def test_get_frame_data_supplement_bad_getInfo_with_traceback(self):
         def boo_hiss():
             raise ValueError()
+        original_stderr = sys.__stderr__
         stderr = sys.stderr = StringIO.StringIO()
         self.assertFalse(stacktrace.DEBUG_EXCEPTION_FORMATTER)
         stacktrace.DEBUG_EXCEPTION_FORMATTER = True
@@ -157,7 +158,7 @@
                     get_frame(supplement=dict(getInfo=boo_hiss)),
                     MY_LINE_NUMBER))
         finally:
-            sys.stderr = sys.__stderr__
+            sys.stderr = original_stderr
             stacktrace.DEBUG_EXCEPTION_FORMATTER = False
         self.assertEqual(
             dict(source_url=None, line=None, column=None, expression=None,
@@ -275,24 +276,26 @@
     def test_format_list_extra_errors(self):
         extracted = stacktrace.extract_stack(get_frame(supplement=dict()))
         extracted[-1][-2]['warnings'] = object()  # This should never happen.
+        original_stderr = sys.__stderr__
         stderr = sys.stderr = StringIO.StringIO()
         self.assertFalse(stacktrace.DEBUG_EXCEPTION_FORMATTER)
         stacktrace.DEBUG_EXCEPTION_FORMATTER = True
         try:
             formatted = stacktrace.format_list(extracted)
         finally:
-            sys.stderr = sys.__stderr__
+            sys.stderr = original_stderr
             stacktrace.DEBUG_EXCEPTION_FORMATTER = False
         self.assertStartsWith(stderr.getvalue(), 'Traceback (most recent')
         self.assertEndsWith(formatted[-1], '    return sys._getframe()\n')
 
     def test_print_list_default(self):
         extracted = stacktrace.extract_stack(get_frame())
+        original_stderr = sys.__stderr__
         stderr = sys.stderr = StringIO.StringIO()
         try:
             stacktrace.print_list(extracted)
         finally:
-            sys.stderr = sys.__stderr__
+            sys.stderr = original_stderr
         self.assertEndsWith(stderr.getvalue(), 'return sys._getframe()\n')
 
     def test_print_list_file(self):
@@ -302,11 +305,12 @@
         self.assertEndsWith(f.getvalue(), 'return sys._getframe()\n')
 
     def test_print_stack_default(self):
+        original_stderr = sys.__stderr__
         stderr = sys.stderr = StringIO.StringIO()
         try:
             stacktrace.print_stack()
         finally:
-            sys.stderr = sys.__stderr__
+            sys.stderr = original_stderr
         self.assertEndsWith(stderr.getvalue(), 'stacktrace.print_stack()\n')
 
     def test_print_stack_options(self):

=== modified file 'versions.cfg'
--- versions.cfg	2012-06-07 15:31:26 +0000
+++ versions.cfg	2012-06-11 20:47:32 +0000
@@ -290,16 +290,20 @@
 zope.testbrowser = 3.7.0a1
 # p1 Build of lp:~mars/zope.testing/3.9.4-p1.  Fixes bugs 570380 and 587886.
 # p2 With patch for thread leaks to make them skips, fixes windmill errors
-# with 'new threads' in hudson/ec2 builds.
+#    with 'new threads' in hudson/ec2 builds.
 # p3 And always tear down layers, because thats the Right Thing To Do.
 # p4 fixes --subunit --list to really just list the tests.
 # p5 Build of lp:~launchpad/zope.testing/3.9.4-p5. Fixes bug #609986.
 # p6 reinstates fix from p4.  Build of lp:~launchpad/zope.testing/3.9.4-fork
-# revision 26.  To build, use python 2.6, not 2.7.
-# Run "python bootstrap.py; ./bin/buildout".
+#    revision 26.  To build, use python 2.6, not 2.7.
+# p7 was unused
+# p8 redirects stdout and stderr to a black hole device when --subunit is used
+# p9 adds the redirection of __stderr__ to a black hole device
+# To build run "python bootstrap.py; ./bin/buildout".  Then to build the
+#    distribution run "bin/buildout setup . sdist"
 # Make sure you have subunit installed.  When running tests, be aware that
-# three will fail initially, per http://pastebin.ubuntu.com/913757/ .
-zope.testing = 3.9.4-p6
+#    three will fail initially, per http://pastebin.ubuntu.com/913757/.
+zope.testing = 3.9.4-p9
 zope.thread = 3.4
 zope.traversing = 3.8.0
 zope.viewlet = 3.6.1


Follow ups