From 44fc8d13a66828527a4c9bae711d5242b29e25ab Mon Sep 17 00:00:00 2001 From: Todd Leonhardt Date: Wed, 30 May 2018 22:16:26 -0700 Subject: Increase unit test coverage of argcomplete_bridge.py Added a couple unit tests for tokens_for_completion() function. --- tests/test_bashcompletion.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'tests/test_bashcompletion.py') diff --git a/tests/test_bashcompletion.py b/tests/test_bashcompletion.py index 298bdf1e..cf916abe 100644 --- a/tests/test_bashcompletion.py +++ b/tests/test_bashcompletion.py @@ -7,9 +7,11 @@ Released under MIT license, see LICENSE file """ import os import pytest +import shlex import sys from typing import List +from cmd2.argcomplete_bridge import tokens_for_completion from cmd2.argparse_completer import ACArgumentParser, AutoCompleter @@ -230,3 +232,25 @@ Hint: out, err = capfd.readouterr() assert out == exp_out assert err == exp_err + + +def test_argcomplete_tokens_for_completion_simple(): + line = 'this is "a test"' + endidx = len(line) + + tokens, raw_tokens, begin_idx, end_idx = tokens_for_completion(line, endidx) + assert tokens == shlex.split(line) + assert raw_tokens == ['this', 'is', '"a test"'] + assert begin_idx == line.rfind("is ") + len("is ") + assert end_idx == end_idx + +def test_argcomplete_tokens_for_completion_unclosed_quotee_exception(): + line = 'this is "a test' + endidx = len(line) + + tokens, raw_tokens, begin_idx, end_idx = tokens_for_completion(line, endidx) + + assert tokens == ['this', 'is', 'a test'] + assert raw_tokens == ['this', 'is', '"a test'] + assert begin_idx == line.rfind("is ") + len("is ") + 1 + assert end_idx == end_idx -- cgit v1.2.1