|
@@ -1,3 +1,9 @@
|
|
|
+import pkgutil
|
|
|
+
|
|
|
+import borgmatic.actions
|
|
|
+import borgmatic.config.load
|
|
|
+import borgmatic.config.validate
|
|
|
+
|
|
|
MAXIMUM_LINE_LENGTH = 80
|
|
|
|
|
|
|
|
@@ -6,3 +12,23 @@ def test_schema_line_length_stays_under_limit():
|
|
|
|
|
|
for line in schema_file.readlines():
|
|
|
assert len(line.rstrip('\n')) <= MAXIMUM_LINE_LENGTH
|
|
|
+
|
|
|
+
|
|
|
+ACTIONS_MODULE_NAMES_TO_OMIT = {'arguments', 'export_key', 'json'}
|
|
|
+ACTIONS_MODULE_NAMES_TO_ADD = {'key', 'umount'}
|
|
|
+
|
|
|
+
|
|
|
+def test_schema_skip_actions_correspond_to_supported_actions():
|
|
|
+ '''
|
|
|
+ Ensure that the allowed actions in the schema's "skip_actions" option don't drift from
|
|
|
+ borgmatic's actual supported actions.
|
|
|
+ '''
|
|
|
+ schema = borgmatic.config.load.load_configuration(borgmatic.config.validate.schema_filename())
|
|
|
+ schema_skip_actions = set(schema['properties']['skip_actions']['items']['enum'])
|
|
|
+ supported_actions = {
|
|
|
+ module.name.replace('_', '-')
|
|
|
+ for module in pkgutil.iter_modules(borgmatic.actions.__path__)
|
|
|
+ if module.name not in ACTIONS_MODULE_NAMES_TO_OMIT
|
|
|
+ }.union(ACTIONS_MODULE_NAMES_TO_ADD)
|
|
|
+
|
|
|
+ assert schema_skip_actions == supported_actions
|