Esempio n. 1
0
 def test_unregister_not_present(self):
     # We don't want unregister to fail, since it is generally run at times
     # that shouldn't interrupt other flow.
     signals.unregister_on_hangup('no-such-id')
     log = self.get_log()
     self.assertContainsRe(log, 'Error occurred during unregister_on_hangup:')
     self.assertContainsRe(log, '(?s)Traceback.*KeyError')
Esempio n. 2
0
 def test_unregister_not_present(self):
     # We don't want unregister to fail, since it is generally run at times
     # that shouldn't interrupt other flow.
     signals.unregister_on_hangup('no-such-id')
     log = self.get_log()
     self.assertContainsRe(log,
                           'Error occurred during unregister_on_hangup:')
     self.assertContainsRe(log, '(?s)Traceback.*KeyError')
Esempio n. 3
0
 def test_registered_callback_gets_called(self):
     calls = []
     def call_me():
         calls.append('called')
     signals.register_on_hangup('myid', call_me)
     signals._sighup_handler(SIGHUP, None)
     self.assertEqual(['called'], calls)
     signals.unregister_on_hangup('myid')
Esempio n. 4
0
 def test_keyboard_interrupt_propagated(self):
     # In case we get 'stuck' while running a hangup function, we should
     # not suppress KeyboardInterrupt
     def call_me_and_raise():
         raise KeyboardInterrupt()
     signals.register_on_hangup('myid', call_me_and_raise)
     self.assertRaises(KeyboardInterrupt,
                       signals._sighup_handler, SIGHUP, None)
     signals.unregister_on_hangup('myid')
Esempio n. 5
0
    def test_registered_callback_gets_called(self):
        calls = []

        def call_me():
            calls.append('called')

        signals.register_on_hangup('myid', call_me)
        signals._sighup_handler(SIGHUP, None)
        self.assertEqual(['called'], calls)
        signals.unregister_on_hangup('myid')
Esempio n. 6
0
    def test_keyboard_interrupt_propagated(self):
        # In case we get 'stuck' while running a hangup function, we should
        # not suppress KeyboardInterrupt
        def call_me_and_raise():
            raise KeyboardInterrupt()

        signals.register_on_hangup('myid', call_me_and_raise)
        self.assertRaises(KeyboardInterrupt, signals._sighup_handler, SIGHUP,
                          None)
        signals.unregister_on_hangup('myid')
Esempio n. 7
0
 def test_not_installed(self):
     # If you haven't called bzrlib.smart.signals.install_sighup_handler,
     # then _on_sighup should be None, and all the calls become no-ops.
     signals._on_sighup = None
     calls = []
     def call_me():
         calls.append('called')
     signals.register_on_hangup('myid', calls)
     signals._sighup_handler(SIGHUP, None)
     signals.unregister_on_hangup('myid')
     log = self.get_log()
     self.assertEqual('', log)
Esempio n. 8
0
    def test_not_installed(self):
        # If you haven't called bzrlib.smart.signals.install_sighup_handler,
        # then _on_sighup should be None, and all the calls become no-ops.
        signals._on_sighup = None
        calls = []

        def call_me():
            calls.append('called')

        signals.register_on_hangup('myid', calls)
        signals._sighup_handler(SIGHUP, None)
        signals.unregister_on_hangup('myid')
        log = self.get_log()
        self.assertEqual('', log)
Esempio n. 9
0
 def test_failing_callback(self):
     calls = []
     def call_me():
         calls.append('called')
     def fail_me():
         raise RuntimeError('something bad happened')
     signals.register_on_hangup('myid', call_me)
     signals.register_on_hangup('otherid', fail_me)
     # _sighup_handler should call both, even though it got an exception
     signals._sighup_handler(SIGHUP, None)
     signals.unregister_on_hangup('myid')
     signals.unregister_on_hangup('otherid')
     log = self.get_log()
     self.assertContainsRe(log, '(?s)Traceback.*RuntimeError')
     self.assertEqual(['called'], calls)
Esempio n. 10
0
    def test_failing_callback(self):
        calls = []

        def call_me():
            calls.append('called')

        def fail_me():
            raise RuntimeError('something bad happened')

        signals.register_on_hangup('myid', call_me)
        signals.register_on_hangup('otherid', fail_me)
        # _sighup_handler should call both, even though it got an exception
        signals._sighup_handler(SIGHUP, None)
        signals.unregister_on_hangup('myid')
        signals.unregister_on_hangup('otherid')
        log = self.get_log()
        self.assertContainsRe(log, '(?s)Traceback.*RuntimeError')
        self.assertEqual(['called'], calls)
Esempio n. 11
0
 def call_me_and_unregister():
     signals.unregister_on_hangup('myid')
     calls.append('called_and_unregistered')
Esempio n. 12
0
 def call_me_and_unregister():
     signals.unregister_on_hangup('myid')
     calls.append('called_and_unregistered')