Fix a traceback when the "data" consistency check is used (#854).

This commit is contained in:
Dan Helfman 2024-04-21 14:55:02 -07:00
parent 058af95d70
commit f926055e67
3 changed files with 13 additions and 12 deletions

1
NEWS
View file

@ -1,6 +1,7 @@
1.8.11.dev0 1.8.11.dev0
* #851: Fix lack of file extraction when using "extract --strip-components all" on a path with a * #851: Fix lack of file extraction when using "extract --strip-components all" on a path with a
leading slash. leading slash.
* #854: Fix a traceback when the "data" consistency check is used.
1.8.10 1.8.10
* #656 (beta): Add a "spot" consistency check that compares file counts and contents between your * #656 (beta): Add a "spot" consistency check that compares file counts and contents between your

View file

@ -52,8 +52,8 @@ def make_archive_filter_flags(local_borg_version, config, checks, check_argument
def make_check_flags(checks, archive_filter_flags): def make_check_flags(checks, archive_filter_flags):
''' '''
Given a parsed sequence of checks and a sequence of flags to filter archives, transform the Given a parsed checks set and a sequence of flags to filter archives,
checks into tuple of command-line check flags. transform the checks into tuple of command-line check flags.
For example, given parsed checks of: For example, given parsed checks of:
@ -68,13 +68,13 @@ def make_check_flags(checks, archive_filter_flags):
''' '''
if 'data' in checks: if 'data' in checks:
data_flags = ('--verify-data',) data_flags = ('--verify-data',)
checks += ('archives',) checks.update({'archives'})
else: else:
data_flags = () data_flags = ()
common_flags = (archive_filter_flags if 'archives' in checks else ()) + data_flags common_flags = (archive_filter_flags if 'archives' in checks else ()) + data_flags
if {'repository', 'archives'}.issubset(set(checks)): if {'repository', 'archives'}.issubset(checks):
return common_flags return common_flags
return ( return (

View file

@ -223,25 +223,25 @@ def test_make_archive_filter_flags_with_default_checks_and_prefix_includes_match
def test_make_check_flags_with_repository_check_returns_flag(): def test_make_check_flags_with_repository_check_returns_flag():
flags = module.make_check_flags(('repository',), ()) flags = module.make_check_flags({'repository'}, ())
assert flags == ('--repository-only',) assert flags == ('--repository-only',)
def test_make_check_flags_with_archives_check_returns_flag(): def test_make_check_flags_with_archives_check_returns_flag():
flags = module.make_check_flags(('archives',), ()) flags = module.make_check_flags({'archives'}, ())
assert flags == ('--archives-only',) assert flags == ('--archives-only',)
def test_make_check_flags_with_archives_check_and_archive_filter_flags_includes_those_flags(): def test_make_check_flags_with_archives_check_and_archive_filter_flags_includes_those_flags():
flags = module.make_check_flags(('archives',), ('--match-archives', 'sh:foo-*')) flags = module.make_check_flags({'archives'}, ('--match-archives', 'sh:foo-*'))
assert flags == ('--archives-only', '--match-archives', 'sh:foo-*') assert flags == ('--archives-only', '--match-archives', 'sh:foo-*')
def test_make_check_flags_without_archives_check_and_with_archive_filter_flags_includes_those_flags(): def test_make_check_flags_without_archives_check_and_with_archive_filter_flags_includes_those_flags():
flags = module.make_check_flags(('repository',), ('--match-archives', 'sh:foo-*')) flags = module.make_check_flags({'repository'}, ('--match-archives', 'sh:foo-*'))
assert flags == ('--repository-only',) assert flags == ('--repository-only',)
@ -250,7 +250,7 @@ def test_make_check_flags_with_data_check_returns_flag_and_implies_archives():
flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.feature).should_receive('available').and_return(True)
flexmock(module.flags).should_receive('make_match_archives_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').and_return(())
flags = module.make_check_flags(('data',), ()) flags = module.make_check_flags({'data'}, ())
assert flags == ( assert flags == (
'--archives-only', '--archives-only',
@ -262,7 +262,7 @@ def test_make_check_flags_with_extract_omits_extract_flag():
flexmock(module.feature).should_receive('available').and_return(True) flexmock(module.feature).should_receive('available').and_return(True)
flexmock(module.flags).should_receive('make_match_archives_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').and_return(())
flags = module.make_check_flags(('extract',), ()) flags = module.make_check_flags({'extract'}, ())
assert flags == () assert flags == ()
@ -272,10 +272,10 @@ def test_make_check_flags_with_repository_and_data_checks_does_not_return_reposi
flexmock(module.flags).should_receive('make_match_archives_flags').and_return(()) flexmock(module.flags).should_receive('make_match_archives_flags').and_return(())
flags = module.make_check_flags( flags = module.make_check_flags(
( {
'repository', 'repository',
'data', 'data',
), },
(), (),
) )