summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorKevin Van Brunt <kmvanbrunt@gmail.com>2019-09-23 15:08:31 -0400
committerKevin Van Brunt <kmvanbrunt@gmail.com>2019-09-23 15:08:31 -0400
commitb4fa4c9946146d9499de7d3cb28377b3d537a5e7 (patch)
tree7b1f1ee35d3364eb0eb7e3e6acc4175b17e1435d /tests
parentbf099c81dc90d7c8d8a48abfb874ce20b58f736f (diff)
downloadcmd2-git-b4fa4c9946146d9499de7d3cb28377b3d537a5e7.tar.gz
Added unit tests for CompletionError
Diffstat (limited to 'tests')
-rw-r--r--tests/test_argparse_completer.py42
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']),