diff options
-rwxr-xr-x | cmd2.py | 3 | ||||
-rw-r--r-- | tests/test_completion.py | 21 |
2 files changed, 21 insertions, 3 deletions
@@ -2097,6 +2097,9 @@ class Cmd(cmd.Cmd): if matches_delimited: display_prefix = os.path.commonprefix(self.display_matches) + + # For delimited matches, we check what appears before the display + # matches (common_prefix) as well as the display matches themselves. if (' ' in common_prefix) or (display_prefix and ' ' in ''.join(self.display_matches)): add_quote = True diff --git a/tests/test_completion.py b/tests/test_completion.py index 65c145ed..cb164a98 100644 --- a/tests/test_completion.py +++ b/tests/test_completion.py @@ -731,13 +731,13 @@ def test_add_opening_quote_delimited_nothing_added(cmd2_app): cmd2_app.display_matches == expected_display def test_add_opening_quote_delimited_quote_added(cmd2_app): - text = '/home/oth' + text = '/home/user/fi' line = 'test_delimited {}'.format(text) endidx = len(line) begidx = endidx - len(text) - expected_prefix = '"/home/other user/' - expected_display = ['maps', 'tests'] + expected_prefix = '"/home/user/file' + expected_display = sorted(['file.txt', 'file space.txt']) first_match = complete_tester(text, line, begidx, endidx, cmd2_app) assert first_match is not None and \ @@ -759,6 +759,21 @@ def test_add_opening_quote_delimited_text_is_common_prefix(cmd2_app): os.path.commonprefix(cmd2_app.completion_matches) == expected_prefix and \ cmd2_app.display_matches == expected_display +def test_add_opening_quote_delimited_space_in_prefix(cmd2_app): + # This test when a space appears before the part of the string that is the display match + text = '/home/oth' + line = 'test_delimited {}'.format(text) + endidx = len(line) + begidx = endidx - len(text) + + expected_prefix = '"/home/other user/' + expected_display = ['maps', 'tests'] + + first_match = complete_tester(text, line, begidx, endidx, cmd2_app) + assert first_match is not None and \ + os.path.commonprefix(cmd2_app.completion_matches) == expected_prefix and \ + cmd2_app.display_matches == expected_display + class SubcommandsExample(cmd2.Cmd): """ Example cmd2 application where we a base command which has a couple subcommands |