diff options
Diffstat (limited to 'tests_isolated/test_commandset/test_commandset.py')
-rw-r--r-- | tests_isolated/test_commandset/test_commandset.py | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/tests_isolated/test_commandset/test_commandset.py b/tests_isolated/test_commandset/test_commandset.py index 43947071..813f9183 100644 --- a/tests_isolated/test_commandset/test_commandset.py +++ b/tests_isolated/test_commandset/test_commandset.py @@ -15,8 +15,12 @@ from .conftest import complete_tester, WithCommandSets from cmd2.exceptions import CommandSetRegistrationError +class CommandSetBase(cmd2.CommandSet): + pass + + @cmd2.with_default_category('Fruits') -class CommandSetA(cmd2.CommandSet): +class CommandSetA(CommandSetBase): def do_apple(self, cmd: cmd2.Cmd, statement: cmd2.Statement): cmd.poutput('Apple!') @@ -60,7 +64,7 @@ class CommandSetA(cmd2.CommandSet): @cmd2.with_default_category('Command Set B') -class CommandSetB(cmd2.CommandSet): +class CommandSetB(CommandSetBase): def __init__(self, arg1): super().__init__() self._arg1 = arg1 @@ -95,8 +99,8 @@ def test_autoload_commands(command_sets_app): def test_custom_construct_commandsets(): # Verifies that a custom initialized CommandSet loads correctly when passed into the constructor - command_set = CommandSetB('foo') - app = WithCommandSets(command_sets=[command_set]) + command_set_b = CommandSetB('foo') + app = WithCommandSets(command_sets=[command_set_b]) cmds_cats, cmds_doc, cmds_undoc, help_topics = app._build_command_info() assert 'Command Set B' in cmds_cats @@ -107,16 +111,41 @@ def test_custom_construct_commandsets(): assert app.install_command_set(command_set_2) # Verify that autoload doesn't conflict with a manually loaded CommandSet that could be autoloaded. - app2 = WithCommandSets(command_sets=[CommandSetA()]) + command_set_a = CommandSetA() + app2 = WithCommandSets(command_sets=[command_set_a]) + + with pytest.raises(CommandSetRegistrationError): + app2.install_command_set(command_set_b) + + app.uninstall_command_set(command_set_b) + + app2.install_command_set(command_set_b) + assert hasattr(app2, 'do_apple') + assert hasattr(app2, 'do_aardvark') + + assert app2.find_commandset_for_command('aardvark') is command_set_b + assert app2.find_commandset_for_command('apple') is command_set_a + + matches = app2.find_commandsets(CommandSetBase, subclass_match=True) + assert command_set_a in matches + assert command_set_b in matches + assert command_set_2 not in matches def test_load_commands(command_sets_manual): # now install a command set and verify the commands are now present cmd_set = CommandSetA() + + assert command_sets_manual.find_commandset_for_command('elderberry') is None + assert not command_sets_manual.find_commandsets(CommandSetA) + command_sets_manual.install_command_set(cmd_set) + assert command_sets_manual.find_commandsets(CommandSetA)[0] is cmd_set + assert command_sets_manual.find_commandset_for_command('elderberry') is cmd_set + cmds_cats, cmds_doc, cmds_undoc, help_topics = command_sets_manual._build_command_info() assert 'Alone' in cmds_cats |