diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2019-09-23 15:08:31 -0400 |
---|---|---|
committer | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2019-09-23 15:08:31 -0400 |
commit | b4fa4c9946146d9499de7d3cb28377b3d537a5e7 (patch) | |
tree | 7b1f1ee35d3364eb0eb7e3e6acc4175b17e1435d /tests | |
parent | bf099c81dc90d7c8d8a48abfb874ce20b58f736f (diff) | |
download | cmd2-git-b4fa4c9946146d9499de7d3cb28377b3d537a5e7.tar.gz |
Added unit tests for CompletionError
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_argparse_completer.py | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/tests/test_argparse_completer.py b/tests/test_argparse_completer.py index 788a7e59..308a4d95 100644 --- a/tests/test_argparse_completer.py +++ b/tests/test_argparse_completer.py @@ -9,7 +9,7 @@ from typing import List import pytest import cmd2 -from cmd2 import with_argparser, Cmd2ArgumentParser, CompletionItem +from cmd2 import with_argparser, Cmd2ArgumentParser, CompletionError, CompletionItem from cmd2.utils import StdSim, basic_complete from .conftest import run_cmd, complete_tester @@ -211,6 +211,27 @@ class AutoCompleteTester(cmd2.Cmd): pass ############################################################################################################ + # Begin code related to CompletionError + ############################################################################################################ + def completer_raise_error(self, text: str, line: str, begidx: int, endidx: int) -> List[str]: + """Raises CompletionError""" + raise CompletionError('completer broke something') + + def choice_raise_error(self) -> List[str]: + """Raises CompletionError""" + raise CompletionError('choice broke something') + + comp_error_parser = Cmd2ArgumentParser() + comp_error_parser.add_argument('completer', help='positional arg', + completer_method=completer_raise_error) + comp_error_parser.add_argument('--choice', help='flag arg', + choices_method=choice_raise_error) + + @with_argparser(comp_error_parser) + def do_raise_completion_error(self, args: argparse.Namespace) -> None: + pass + + ############################################################################################################ # Begin code related to receiving arg_tokens ############################################################################################################ arg_tokens_parser = Cmd2ArgumentParser() @@ -723,6 +744,25 @@ Hint: ''' +@pytest.mark.parametrize('args, text', [ + # Exercise a flag arg and choices function that raises a CompletionError + ('--choice ', 'choice'), + + # Exercise a positional arg and completer that raises a CompletionError + ('', 'completer') +]) +def test_completion_error(ac_app, capsys, args, text): + line = 'raise_completion_error {} {}'.format(args, text) + endidx = len(line) + begidx = endidx - len(text) + + first_match = complete_tester(text, line, begidx, endidx, ac_app) + out, err = capsys.readouterr() + + assert first_match is None + assert "{} broke something".format(text) in out + + @pytest.mark.parametrize('command_and_args, completions', [ # Exercise a choices function that receives arg_tokens dictionary ('arg_tokens choice subcmd', ['choice', 'subcmd']), |