[core/input] Handle exceptions for non-existent commands

This commit is contained in:
tobi-wan-kenobi 2020-04-04 08:17:35 +02:00
parent 944b223f1e
commit 52e5ad7b43
2 changed files with 15 additions and 1 deletions

View file

@ -44,6 +44,10 @@ def __invoke(event, callback):
if callable(cb):
cb(event)
else:
util.cli.execute(cb, wait=False)
try:
util.cli.execute(cb, wait=False)
except Exception as e:
logging.error('failed to invoke callback: {}'.format(e))
return
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

View file

@ -55,4 +55,14 @@ class config(unittest.TestCase):
core.input.trigger(self.someEvent)
cli.execute.assert_called_once_with(self.someCommand, wait=False)
def test_non_existent_callback(self):
with unittest.mock.patch('core.input.util.cli') as cli:
cli.execute.return_value = ''
cli.execute.side_effect = RuntimeError('some-error')
core.input.register(self.inputObject, self.someEvent['button'], self.someCommand)
try:
core.input.trigger(self.someEvent)
except Exception:
self.fail('input module propagated exception')
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4