diff options
-rw-r--r-- | cmd2/cmd2.py | 12 | ||||
-rw-r--r-- | tests/test_cmd2.py | 30 |
2 files changed, 20 insertions, 22 deletions
diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 364f18f9..46d996ea 100644 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -1606,16 +1606,16 @@ class Cmd(cmd.Cmd): return commands def _get_alias_completion_items(self) -> List[CompletionItem]: - """Return list of current alias names""" + """Return list of current alias names and values as CompletionItems""" return [CompletionItem(cur_key, self.aliases[cur_key]) for cur_key in self.aliases] def _get_macro_completion_items(self) -> List[CompletionItem]: - """Return list of current alias names""" + """Return list of current macro names and values as CompletionItems""" return [CompletionItem(cur_key, self.macros[cur_key].value) for cur_key in self.macros] - def _get_settable_names(self) -> List[str]: - """Return list of current settable names""" - return list(self.settable) + def _get_settable_completion_items(self) -> List[CompletionItem]: + """Return list of current settable names and descriptions as CompletionItems""" + return [CompletionItem(cur_key, self.settable[cur_key]) for cur_key in self.settable] def _get_commands_aliases_and_macros_for_completion(self) -> List[str]: """Return a list of visible commands, aliases, and macros for tab completion""" @@ -2920,7 +2920,7 @@ class Cmd(cmd.Cmd): set_parser.add_argument('-a', '--all', action='store_true', help='display read-only settings as well') set_parser.add_argument('-l', '--long', action='store_true', help='describe function of parameter') set_parser.add_argument('param', nargs=argparse.OPTIONAL, help='parameter to set or view', - choices_method=_get_settable_names) + choices_method=_get_settable_completion_items, descriptive_header='Description') set_parser.add_argument('value', nargs=argparse.OPTIONAL, help='the new value for settable') @with_argparser(set_parser) diff --git a/tests/test_cmd2.py b/tests/test_cmd2.py index 6353d884..4e05283e 100644 --- a/tests/test_cmd2.py +++ b/tests/test_cmd2.py @@ -21,7 +21,6 @@ except ImportError: import cmd2 from cmd2 import ansi, clipboard, constants, utils -from cmd2.argparse_completer import CompletionItem from .conftest import run_cmd, normalize, verify_help_text, HELP_HISTORY, SHORTCUTS_TXT, SHOW_TXT, SHOW_LONG def CreateOutsimApp(): @@ -1506,33 +1505,32 @@ invalid_command_name = [ ] def test_get_alias_completion_items(base_app): - assert len(base_app.aliases) == 0 run_cmd(base_app, 'alias create fake run_pyscript') run_cmd(base_app, 'alias create ls !ls -hal') - assert len(base_app.aliases) == 2 - expected = sorted([CompletionItem('fake', 'run_pyscript'), CompletionItem('ls', '!ls -hal')]) - results = sorted(base_app._get_alias_completion_items()) + results = base_app._get_alias_completion_items() + assert len(results) == len(base_app.aliases) - for index, cur_res in enumerate(results): - assert cur_res == expected[index] - assert cur_res.description == expected[index].description + for cur_res in results: + assert cur_res in base_app.aliases + assert cur_res.description == base_app.aliases[cur_res] def test_get_macro_completion_items(base_app): - assert len(base_app.macros) == 0 run_cmd(base_app, 'macro create foo !echo foo') run_cmd(base_app, 'macro create bar !echo bar') - assert len(base_app.macros) == 2 - expected = sorted([CompletionItem('foo', '!echo foo'), CompletionItem('bar', '!echo bar')]) - results = sorted(base_app._get_macro_completion_items()) + results = base_app._get_macro_completion_items() + assert len(results) == len(base_app.macros) - for index, cur_res in enumerate(results): - assert cur_res == expected[index] - assert cur_res.description == expected[index].description + for cur_res in results: + assert cur_res in base_app.macros + assert cur_res.description == base_app.macros[cur_res].value def test_get_settable_names(base_app): - assert sorted(base_app._get_settable_names()) == sorted(base_app.settable.keys()) + results = base_app._get_settable_completion_items() + for cur_res in results: + assert cur_res in base_app.settable + assert cur_res.description == base_app.settable[cur_res] def test_alias_no_subcommand(base_app): out, err = run_cmd(base_app, 'alias') |