mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-26 09:47:58 +00:00
check: handle repo w/o objects gracefully
normal check would complete, --repair would crash when trying to write the rebuilt (empty) manifest out, since self.key was None
This commit is contained in:
parent
64a3fa8e73
commit
2261709e78
2 changed files with 10 additions and 0 deletions
|
@ -833,6 +833,9 @@ def check(self, repository, repair=False, archive=None, last=None, prefix=None,
|
|||
self.repair = repair
|
||||
self.repository = repository
|
||||
self.init_chunks()
|
||||
if not self.chunks:
|
||||
logger.error('Repository contains no apparent data at all, cannot continue check/repair.')
|
||||
return False
|
||||
self.key = self.identify_key(repository)
|
||||
if Manifest.MANIFEST_ID not in self.chunks:
|
||||
logger.error("Repository manifest not found!")
|
||||
|
|
|
@ -1444,6 +1444,13 @@ def test_extra_chunks(self):
|
|||
self.cmd('check', self.repository_location, exit_code=0)
|
||||
self.cmd('extract', '--dry-run', self.repository_location + '::archive1', exit_code=0)
|
||||
|
||||
def test_empty_repository(self):
|
||||
with Repository(self.repository_location, exclusive=True) as repository:
|
||||
for id_ in repository.list():
|
||||
repository.delete(id_)
|
||||
repository.commit()
|
||||
self.cmd('check', self.repository_location, exit_code=1)
|
||||
|
||||
|
||||
@pytest.mark.skipif(sys.platform == 'cygwin', reason='remote is broken on cygwin and hangs')
|
||||
class RemoteArchiverTestCase(ArchiverTestCase):
|
||||
|
|
Loading…
Reference in a new issue