~certify-web-dev/twisted/certify-trunk

« back to all changes in this revision

Viewing changes to twisted/test/test_log.py

  • Committer: Bazaar Package Importer
  • Author(s): Free Ekanayaka
  • Date: 2010-03-09 13:32:00 UTC
  • mfrom: (2.2.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100309133200-xs2rrzwnn9k86sbx
Tags: 10.0.0-2
* Include changes from 9.0.0-2 which got skipped
* python-twisted depends on version >= 10.0 of other packages

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (c) 2001-2009 Twisted Matrix Laboratories.
 
1
# Copyright (c) 2001-2010 Twisted Matrix Laboratories.
2
2
# See LICENSE for details.
3
3
 
4
4
"""
419
419
        self.assertEquals(len(self.out), 0)
420
420
 
421
421
 
 
422
    def test_startLoggingTwice(self):
 
423
        """
 
424
        There are some obscure error conditions that can occur when logging is
 
425
        started twice. See http://twistedmatrix.com/trac/ticket/3289 for more
 
426
        information.
 
427
        """
 
428
        # The bug is particular to the way that the t.p.log 'global' function
 
429
        # handle stdout. If we use our own stream, the error doesn't occur. If
 
430
        # we use our own LogPublisher, the error doesn't occur.
 
431
        sys.stdout = StringIO()
 
432
        self.addCleanup(setattr, sys, 'stdout', sys.__stdout__)
 
433
 
 
434
        def showError(eventDict):
 
435
            if eventDict['isError']:
 
436
                sys.__stdout__.write(eventDict['failure'].getTraceback())
 
437
 
 
438
        log.addObserver(showError)
 
439
        self.addCleanup(log.removeObserver, showError)
 
440
        observer = log.startLogging(sys.stdout)
 
441
        self.addCleanup(observer.stop)
 
442
        # At this point, we expect that sys.stdout is a StdioOnnaStick object.
 
443
        self.assertIsInstance(sys.stdout, log.StdioOnnaStick)
 
444
        fakeStdout = sys.stdout
 
445
        observer = log.startLogging(sys.stdout)
 
446
        self.assertIdentical(sys.stdout, fakeStdout)
 
447
 
 
448
 
422
449
class PythonLoggingObserverTestCase(unittest.TestCase):
423
450
    """
424
451
    Test the bridge with python logging module.