123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- from flexmock import flexmock
- from borgmatic.commands import arguments as module
- def test_parse_subparser_arguments_consumes_subparser_arguments_before_subparser_name():
- action_namespace = flexmock(foo=True)
- subparsers = {
- 'action': flexmock(parse_known_args=lambda arguments: (action_namespace, ['action'])),
- 'other': flexmock(),
- }
- arguments, remaining_arguments = module.parse_subparser_arguments(
- ('--foo', 'true', 'action'), subparsers
- )
- assert arguments == {'action': action_namespace}
- assert remaining_arguments == []
- def test_parse_subparser_arguments_consumes_subparser_arguments_after_subparser_name():
- action_namespace = flexmock(foo=True)
- subparsers = {
- 'action': flexmock(parse_known_args=lambda arguments: (action_namespace, ['action'])),
- 'other': flexmock(),
- }
- arguments, remaining_arguments = module.parse_subparser_arguments(
- ('action', '--foo', 'true'), subparsers
- )
- assert arguments == {'action': action_namespace}
- assert remaining_arguments == []
- def test_parse_subparser_arguments_consumes_subparser_arguments_with_alias():
- action_namespace = flexmock(foo=True)
- action_subparser = flexmock(parse_known_args=lambda arguments: (action_namespace, ['action']))
- subparsers = {
- 'action': action_subparser,
- '-a': action_subparser,
- 'other': flexmock(),
- '-o': flexmock(),
- }
- flexmock(module).SUBPARSER_ALIASES = {'action': ['-a'], 'other': ['-o']}
- arguments, remaining_arguments = module.parse_subparser_arguments(
- ('-a', '--foo', 'true'), subparsers
- )
- assert arguments == {'action': action_namespace}
- assert remaining_arguments == []
- def test_parse_subparser_arguments_consumes_multiple_subparser_arguments():
- action_namespace = flexmock(foo=True)
- other_namespace = flexmock(bar=3)
- subparsers = {
- 'action': flexmock(
- parse_known_args=lambda arguments: (action_namespace, ['action', '--bar', '3'])
- ),
- 'other': flexmock(parse_known_args=lambda arguments: (other_namespace, [])),
- }
- arguments, remaining_arguments = module.parse_subparser_arguments(
- ('action', '--foo', 'true', 'other', '--bar', '3'), subparsers
- )
- assert arguments == {'action': action_namespace, 'other': other_namespace}
- assert remaining_arguments == []
- def test_parse_subparser_arguments_applies_default_subparsers():
- prune_namespace = flexmock()
- create_namespace = flexmock(progress=True)
- check_namespace = flexmock()
- subparsers = {
- 'prune': flexmock(
- parse_known_args=lambda arguments: (prune_namespace, ['prune', '--progress'])
- ),
- 'create': flexmock(parse_known_args=lambda arguments: (create_namespace, [])),
- 'check': flexmock(parse_known_args=lambda arguments: (check_namespace, [])),
- 'other': flexmock(),
- }
- arguments, remaining_arguments = module.parse_subparser_arguments(('--progress'), subparsers)
- assert arguments == {
- 'prune': prune_namespace,
- 'create': create_namespace,
- 'check': check_namespace,
- }
- assert remaining_arguments == []
- def test_parse_subparser_arguments_passes_through_unknown_arguments_before_subparser_name():
- action_namespace = flexmock()
- subparsers = {
- 'action': flexmock(
- parse_known_args=lambda arguments: (action_namespace, ['action', '--verbosity', 'lots'])
- ),
- 'other': flexmock(),
- }
- arguments, remaining_arguments = module.parse_subparser_arguments(
- ('--verbosity', 'lots', 'action'), subparsers
- )
- assert arguments == {'action': action_namespace}
- assert remaining_arguments == ['--verbosity', 'lots']
- def test_parse_subparser_arguments_passes_through_unknown_arguments_after_subparser_name():
- action_namespace = flexmock()
- subparsers = {
- 'action': flexmock(
- parse_known_args=lambda arguments: (action_namespace, ['action', '--verbosity', 'lots'])
- ),
- 'other': flexmock(),
- }
- arguments, remaining_arguments = module.parse_subparser_arguments(
- ('action', '--verbosity', 'lots'), subparsers
- )
- assert arguments == {'action': action_namespace}
- assert remaining_arguments == ['--verbosity', 'lots']
- def test_parse_subparser_arguments_parses_borg_options_and_skips_other_subparsers():
- action_namespace = flexmock(options=[])
- subparsers = {
- 'borg': flexmock(parse_known_args=lambda arguments: (action_namespace, ['borg', 'list'])),
- 'list': flexmock(),
- }
- arguments, remaining_arguments = module.parse_subparser_arguments(('borg', 'list'), subparsers)
- assert arguments == {'borg': action_namespace}
- assert arguments['borg'].options == ['list']
- assert remaining_arguments == []
|