summaryrefslogtreecommitdiff
path: root/tests/test_plugin.py
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2021-03-02 10:26:45 -0500
committerKevin Van Brunt <kmvanbrunt@gmail.com>2021-03-02 10:26:45 -0500
commit7024aa0e705e522e8e0cc9b4555bb17a5a35ed45 (patch)
treef27278d32dbc5d9ee19dbb2f5dd929b943df4789 /tests/test_plugin.py
parent6b14aa6579d9c5bdd32bf8c3d67f11db8b575bb0 (diff)
downloadcmd2-git-exception_passthrough.tar.gz
Added cmd2.exceptions.PassThroughExceptionexception_passthrough
Diffstat (limited to 'tests/test_plugin.py')
-rw-r--r--tests/test_plugin.py22
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)