summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcmd2/argparse_completer.py3
-rw-r--r--tests/test_acargparse.py17
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)