summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2019-07-06 11:28:05 -0400
committerKevin Van Brunt <kmvanbrunt@gmail.com>2019-07-06 11:28:05 -0400
commit67445d49af8db72f9e27a8d47449d0b5ed1e6b9c (patch)
tree01037014c93fd5b72bb5498b94369876c5238c4b
parent5ef4267360e87d8c2af13d0b7f6a6cd8d80fd016 (diff)
downloadcmd2-git-67445d49af8db72f9e27a8d47449d0b5ed1e6b9c.tar.gz
Display set command tab-completion results as CompletionItems
-rw-r--r--cmd2/cmd2.py12
-rw-r--r--tests/test_cmd2.py30
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')