diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2021-03-02 10:26:45 -0500 |
---|---|---|
committer | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2021-03-02 10:26:45 -0500 |
commit | 7024aa0e705e522e8e0cc9b4555bb17a5a35ed45 (patch) | |
tree | f27278d32dbc5d9ee19dbb2f5dd929b943df4789 /tests/test_plugin.py | |
parent | 6b14aa6579d9c5bdd32bf8c3d67f11db8b575bb0 (diff) | |
download | cmd2-git-exception_passthrough.tar.gz |
Added cmd2.exceptions.PassThroughExceptionexception_passthrough
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) |