create doccomments, start writing unit tests
This commit is contained in:
parent
59a6ce1462
commit
469e0ccace
2 changed files with 29 additions and 3 deletions
|
@ -71,6 +71,9 @@ def bash_completion():
|
|||
|
||||
|
||||
def has_file_options(action: Action):
|
||||
'''
|
||||
Given an argparse.Action instance, return True if it takes a file argument.
|
||||
'''
|
||||
return action.metavar in (
|
||||
'FILENAME',
|
||||
'PATH',
|
||||
|
@ -78,6 +81,9 @@ def has_file_options(action: Action):
|
|||
|
||||
|
||||
def has_choice_options(action: Action):
|
||||
'''
|
||||
Given an argparse.Action instance, return True if it takes one of a predefined set of arguments.
|
||||
'''
|
||||
return action.choices is not None
|
||||
|
||||
|
||||
|
@ -103,9 +109,8 @@ def has_exact_options(action: Action):
|
|||
|
||||
def exact_options_completion(action: Action):
|
||||
'''
|
||||
Given an argparse.Action instance, return a completion invocation
|
||||
that forces file completion or options completion, if the action
|
||||
takes such an argument and was the last action on the command line.
|
||||
Given an argparse.Action instance, return a completion invocation that forces file completion or options
|
||||
completion, if the action takes such an argument and was the last action on the command line.
|
||||
|
||||
Otherwise, return an empty string.
|
||||
'''
|
||||
|
|
21
tests/unit/commands/test_completions.py
Normal file
21
tests/unit/commands/test_completions.py
Normal file
|
@ -0,0 +1,21 @@
|
|||
from argparse import Action
|
||||
|
||||
import pytest
|
||||
|
||||
from borgmatic.commands.completion import has_exact_options, has_file_options
|
||||
|
||||
file_options_test_data = [
|
||||
(Action('--flag', 'flag'), False),
|
||||
(Action('--flag', 'flag', metavar='FILENAME'), True),
|
||||
(Action('--flag', 'flag', metavar='PATH'), True),
|
||||
(Action('--flag', dest='config_paths'), True),
|
||||
(Action('--flag', 'flag', metavar='OTHER'), False),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('action, expected', file_options_test_data)
|
||||
def test_has_file_options_detects_file_options(action: Action, expected: bool):
|
||||
assert has_file_options(action) == expected
|
||||
# if has_file_options(action) was true, has_exact_options(action) should also be true
|
||||
if expected:
|
||||
assert has_exact_options(action)
|
Loading…
Reference in a new issue