1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import pkgutil
- import borgmatic.actions
- import borgmatic.config.load
- import borgmatic.config.validate
- MAXIMUM_LINE_LENGTH = 80
- def test_schema_line_length_stays_under_limit():
- schema_file = open(borgmatic.config.validate.schema_filename())
- for line in schema_file.readlines():
- assert len(line.rstrip('\n')) <= MAXIMUM_LINE_LENGTH
- ACTIONS_MODULE_NAMES_TO_OMIT = {
- 'arguments',
- 'change_passphrase',
- 'export_key',
- 'import_key',
- 'json',
- 'pattern',
- }
- ACTIONS_MODULE_NAMES_TO_ADD = {'key', 'umount'}
- def test_schema_actions_correspond_to_supported_actions():
- '''
- Ensure that the allowed actions in the schema's various options don't drift from borgmatic's
- actual supported actions.
- '''
- schema = borgmatic.config.load.load_configuration(borgmatic.config.validate.schema_filename())
- 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)
- properties = schema['properties']
- commands_one_of = properties['commands']['items']['oneOf']
- for schema_actions in (
- set(properties['skip_actions']['items']['enum']),
- set(commands_one_of[0]['properties']['when']['items']['enum']),
- set(commands_one_of[1]['properties']['when']['items']['enum']),
- ):
- assert schema_actions == supported_actions
|