diff options
-rwxr-xr-x | cmd2/argparse_completer.py | 3 | ||||
-rw-r--r-- | tests/test_acargparse.py | 17 |
2 files changed, 18 insertions, 2 deletions
diff --git a/cmd2/argparse_completer.py b/cmd2/argparse_completer.py index f3438bed..168a555f 100755 --- a/cmd2/argparse_completer.py +++ b/cmd2/argparse_completer.py @@ -209,7 +209,7 @@ def register_custom_actions(parser: argparse.ArgumentParser) -> None: parser.register('action', 'append', _AppendRangeAction) -def token_resembles_flag(token: str, parser: argparse.ArgumentParser): +def token_resembles_flag(token: str, parser: argparse.ArgumentParser) -> bool: """Determine if a token looks like a flag. Based on argparse._parse_optional().""" # if it's an empty string, it was meant to be a positional if not token: @@ -236,6 +236,7 @@ def token_resembles_flag(token: str, parser: argparse.ArgumentParser): # Looks like a flag return True + class AutoCompleter(object): """Automatically command line tab completion based on argparse parameters""" diff --git a/tests/test_acargparse.py b/tests/test_acargparse.py index be3e8b97..617afd4f 100644 --- a/tests/test_acargparse.py +++ b/tests/test_acargparse.py @@ -5,7 +5,7 @@ Copyright 2018 Eric Lin <anselor@gmail.com> Released under MIT license, see LICENSE file """ import pytest -from cmd2.argparse_completer import ACArgumentParser +from cmd2.argparse_completer import ACArgumentParser, token_resembles_flag def test_acarg_narg_empty_tuple(): @@ -51,3 +51,18 @@ def test_acarg_narg_tuple_zero_base(): def test_acarg_narg_tuple_zero_to_one(): parser = ACArgumentParser(prog='test') parser.add_argument('tuple', nargs=(0, 1)) + + +def test_token_resembles_flag(): + parser = ACArgumentParser() + + # Not valid flags + assert not token_resembles_flag('', parser) + assert not token_resembles_flag('non-flag', parser) + assert not token_resembles_flag('-', parser) + assert not token_resembles_flag('--has space', parser) + assert not token_resembles_flag('-2', parser) + + # Valid flags + assert token_resembles_flag('-flag', parser) + assert token_resembles_flag('--flag', parser) |