diff options
Diffstat (limited to 'tests/test_plugin.py')
-rw-r--r-- | tests/test_plugin.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 97c046a2..1e12d655 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -238,6 +238,14 @@ class Plugin: self.called_cmdfinalization += 1 raise KeyboardInterrupt + def cmdfinalization_hook_passthrough_exception( + self, data: cmd2.plugin.CommandFinalizationData + ) -> cmd2.plugin.CommandFinalizationData: + """A command finalization hook which raises a PassThroughException""" + self.called_cmdfinalization += 1 + wrapped_ex = OSError("Pass me up") + raise exceptions.PassThroughException(wrapped_ex=wrapped_ex) + def cmdfinalization_hook_not_enough_parameters(self) -> plugin.CommandFinalizationData: """A command finalization hook with no parameters.""" pass @@ -916,7 +924,7 @@ def test_cmdfinalization_hook_exception(capsys): assert app.called_cmdfinalization == 1 -def test_cmdfinalization_hook_system_exit(capsys): +def test_cmdfinalization_hook_system_exit(): app = PluggedApp() app.register_cmdfinalization_hook(app.cmdfinalization_hook_system_exit) stop = app.onecmd_plus_hooks('say hello') @@ -924,7 +932,7 @@ def test_cmdfinalization_hook_system_exit(capsys): assert app.called_cmdfinalization == 1 -def test_cmdfinalization_hook_keyboard_interrupt(capsys): +def test_cmdfinalization_hook_keyboard_interrupt(): app = PluggedApp() app.register_cmdfinalization_hook(app.cmdfinalization_hook_keyboard_interrupt) @@ -947,6 +955,16 @@ def test_cmdfinalization_hook_keyboard_interrupt(capsys): assert app.called_cmdfinalization == 1 +def test_cmdfinalization_hook_passthrough_exception(): + app = PluggedApp() + app.register_cmdfinalization_hook(app.cmdfinalization_hook_passthrough_exception) + + with pytest.raises(OSError) as excinfo: + app.onecmd_plus_hooks('say hello') + assert 'Pass me up' in str(excinfo.value) + assert app.called_cmdfinalization == 1 + + def test_skip_postcmd_hooks(capsys): app = PluggedApp() app.register_postcmd_hook(app.postcmd_hook) |