From 7024aa0e705e522e8e0cc9b4555bb17a5a35ed45 Mon Sep 17 00:00:00 2001 From: Kevin Van Brunt Date: Tue, 2 Mar 2021 10:26:45 -0500 Subject: Added cmd2.exceptions.PassThroughException --- tests/test_plugin.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'tests/test_plugin.py') 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) -- cgit v1.2.1