Esempio n. 1
0
    def testHandleExcept1b(self):
        # create a listener that raises an exception:
        from lib_pubsub_except_raisinglistener import getRaisingListener
        raisingListener = getRaisingListener()
        self.pub.subscribe(raisingListener, 'testHandleExcept1b')

        # subscribe a good exception listener and validate
        # create the listener for uncaught exceptions in listeners:
        class UncaughtExcListener:
            def __call__(self, listenerStr=None, excTraceback=None):
                # verify that information received; first the listenerStr
                assert listenerStr.startswith('raisingListener')
                # next the traceback:
                tb = excTraceback.traceback
                self.assertEqual(len(tb), 2)

                def validateTB(tbItem,
                               eFN,
                               eLine,
                               eFnN,
                               assertE=self.assertEqual):
                    assert tbItem[0].endswith(eFN), '%s !~ %s' % (tbItem[0],
                                                                  eFN)
                    assertE(tbItem[1], eLine)
                    assertE(tbItem[2], eFnN)

                validateTB(tb[0], 'lib_pubsub_except_raisinglistener.py', 5,
                           'raisingListener')
                validateTB(tb[1], 'lib_pubsub_except_raisinglistener.py', 4,
                           'nested')
                # next the formatted traceback:
                self.assertEqual(len(excTraceback.getFormattedList()),
                                 len(tb) + 1)
                # finally the string for formatted traceback:
                msg = excTraceback.getFormattedString()
                assert msg.startswith('  File')
                assert msg.endswith(
                    "global name 'RuntimeError2' is not defined\n")

        from wx.lib.pubsub.utils.exchandling import ExcPublisher
        topic = self.pub.getDefaultTopicMgr().getTopic(
            ExcPublisher.topicUncaughtExc)
        assert not topic.hasListeners()
        handler = UncaughtExcListener()
        handler.assertEqual = self.assertEqual
        self.pub.subscribe(handler, ExcPublisher.topicUncaughtExc)
        self.pub.sendMessage('testHandleExcept1b')

        # verify that listener isn't stuck in a cyclic reference by sys.exc_info()
        del raisingListener
        assert not self.pub.getDefaultTopicMgr().getTopic(
            'testHandleExcept1b').hasListeners()
 def testHandleExcept1a(self):
     from wx.lib.pubsub.utils.exchandling import ExcPublisher
     excPublisher = ExcPublisher(self.pub.getDefaultTopicMgr() )
     self.pub.setListenerExcHandler(excPublisher)
 
     # create a listener that raises an exception:
     from lib_pubsub_except_raisinglistener import getRaisingListener
     raisingListener = getRaisingListener()
 
     self.pub.setNotificationFlags(all=False)
     self.pub.subscribe(raisingListener, 'testHandleExcept1a')
 
     # first test when a listener raises an exception and exception listener also raises!
     class BadUncaughtExcListener:
         def __call__(self, listenerStr=None, excTraceback=None):
             raise RuntimeError('bad exception listener!')
     handler = BadUncaughtExcListener()
     self.pub.subscribe(handler, ExcPublisher.topicUncaughtExc)
     self.assertRaises(self.pub.ExcHandlerError, self.pub.sendMessage,
                       'testHandleExcept1a')
Esempio n. 3
0
    def testHandleExcept1a(self):
        from wx.lib.pubsub.utils.exchandling import ExcPublisher
        excPublisher = ExcPublisher(self.pub.getDefaultTopicMgr())
        self.pub.setListenerExcHandler(excPublisher)

        # create a listener that raises an exception:
        from lib_pubsub_except_raisinglistener import getRaisingListener
        raisingListener = getRaisingListener()

        self.pub.setNotificationFlags(all=False)
        self.pub.subscribe(raisingListener, 'testHandleExcept1a')

        # first test when a listener raises an exception and exception listener also raises!
        class BadUncaughtExcListener:
            def __call__(self, listenerStr=None, excTraceback=None):
                raise RuntimeError('bad exception listener!')

        handler = BadUncaughtExcListener()
        self.pub.subscribe(handler, ExcPublisher.topicUncaughtExc)
        self.assertRaises(self.pub.ExcHandlerError, self.pub.sendMessage,
                          'testHandleExcept1a')
 def testHandleExcept1b(self):
     # create a listener that raises an exception:
     from lib_pubsub_except_raisinglistener import getRaisingListener
     raisingListener = getRaisingListener()
     self.pub.subscribe(raisingListener, 'testHandleExcept1b')
 
     # subscribe a good exception listener and validate
     # create the listener for uncaught exceptions in listeners:
     class UncaughtExcListener:
         def __call__(self, listenerStr=None, excTraceback=None):
             # verify that information received; first the listenerStr
             assert listenerStr.startswith('raisingListener')
             # next the traceback:
             tb = excTraceback.traceback
             self.assertEqual(len(tb), 2)
             def validateTB(tbItem, eFN, eLine, eFnN, assertE=self.assertEqual):
                 assert tbItem[0].endswith(eFN), '%s !~ %s' % (tbItem[0], eFN)
                 assertE(tbItem[1], eLine)
                 assertE(tbItem[2], eFnN)
             validateTB(tb[0], 'lib_pubsub_except_raisinglistener.py', 5, 'raisingListener')
             validateTB(tb[1], 'lib_pubsub_except_raisinglistener.py', 4, 'nested')
             # next the formatted traceback:
             self.assertEqual(len(excTraceback.getFormattedList() ), len(tb)+1)
             # finally the string for formatted traceback:
             msg = excTraceback.getFormattedString()
             assert msg.startswith('  File')
             assert msg.endswith("global name 'RuntimeError2' is not defined\n")
 
     from wx.lib.pubsub.utils.exchandling import ExcPublisher
     topic = self.pub.getTopic(ExcPublisher.topicUncaughtExc)
     assert not topic.hasListeners()
     handler = UncaughtExcListener()
     handler.assertEqual = self.assertEqual
     self.pub.subscribe(handler, ExcPublisher.topicUncaughtExc)
     self.pub.sendMessage('testHandleExcept1b')
 
     # verify that listener isn't stuck in a cyclic reference by sys.exc_info()
     del raisingListener
     assert not self.pub.getTopic('testHandleExcept1b').hasListeners()