Merge remote-tracking branch 'origin/pr/3063'
This commit is contained in:
commit
c233099bca
@ -220,6 +220,8 @@ class CommandParser:
|
|||||||
matches.append(valid_command)
|
matches.append(valid_command)
|
||||||
if len(matches) == 1:
|
if len(matches) == 1:
|
||||||
cmdstr = matches[0]
|
cmdstr = matches[0]
|
||||||
|
elif len(matches) > 1 and config.val.completion.use_best_match:
|
||||||
|
cmdstr = matches[0]
|
||||||
return cmdstr
|
return cmdstr
|
||||||
|
|
||||||
def _split_args(self, cmd, argstr, keep):
|
def _split_args(self, cmd, argstr, keep):
|
||||||
|
@ -692,6 +692,11 @@ completion.min_chars:
|
|||||||
minval: 1
|
minval: 1
|
||||||
desc: Minimum amount of characters needed to update completions.
|
desc: Minimum amount of characters needed to update completions.
|
||||||
|
|
||||||
|
completion.use_best_match:
|
||||||
|
type: Bool
|
||||||
|
default: false
|
||||||
|
desc: Whether to execute the best-matching command on a partial match.
|
||||||
|
|
||||||
## downloads
|
## downloads
|
||||||
|
|
||||||
downloads.location.directory:
|
downloads.location.directory:
|
||||||
|
@ -74,3 +74,30 @@ class TestCommandParser:
|
|||||||
parser = runners.CommandParser(partial_match=True)
|
parser = runners.CommandParser(partial_match=True)
|
||||||
result = parser.parse('message-i')
|
result = parser.parse('message-i')
|
||||||
assert result.cmd.name == 'message-info'
|
assert result.cmd.name == 'message-info'
|
||||||
|
|
||||||
|
|
||||||
|
class TestCompletions:
|
||||||
|
|
||||||
|
"""Tests for completions.use_best_match."""
|
||||||
|
|
||||||
|
def test_dont_use_best_match(self, config_stub):
|
||||||
|
"""Test multiple completion options with use_best_match set to false.
|
||||||
|
|
||||||
|
Should raise NoSuchCommandError
|
||||||
|
"""
|
||||||
|
config_stub.val.completion.use_best_match = False
|
||||||
|
parser = runners.CommandParser(partial_match=True)
|
||||||
|
|
||||||
|
with pytest.raises(cmdexc.NoSuchCommandError):
|
||||||
|
result = parser.parse('do')
|
||||||
|
|
||||||
|
def test_use_best_match(self, config_stub):
|
||||||
|
"""Test multiple completion options with use_best_match set to true.
|
||||||
|
|
||||||
|
The resulting command should be the best match
|
||||||
|
"""
|
||||||
|
config_stub.val.completion.use_best_match = True
|
||||||
|
parser = runners.CommandParser(partial_match=True)
|
||||||
|
|
||||||
|
result = parser.parse('do')
|
||||||
|
assert result.cmd.name == 'download-cancel'
|
||||||
|
Loading…
Reference in New Issue
Block a user