Forráskód Böngészése

create doccomments, start writing unit tests

Isaac 2 éve
szülő
commit
469e0ccace

+ 8 - 3
borgmatic/commands/completion.py

@@ -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 - 0
tests/unit/commands/test_completions.py

@@ -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)