mirror of
https://github.com/borgbackup/borg.git
synced 2025-03-10 06:03:38 +00:00
RepositoryTestCaseBase: remove need for "with" after reopen()
setUp enters the context manager, so let's .reopen() leave it. then create a fresh Repository instance in self.repository and enter the context manager again. tearDown then will leave that.
This commit is contained in:
parent
0ac07b7a3f
commit
fbf287f825
1 changed files with 37 additions and 47 deletions
|
@ -41,8 +41,9 @@ class RepositoryTestCaseBase(BaseTestCase):
|
|||
shutil.rmtree(self.tmppath)
|
||||
|
||||
def reopen(self, exclusive=UNSPECIFIED):
|
||||
self.repository.close()
|
||||
self.repository.__exit__(None, None, None)
|
||||
self.repository = self.open(exclusive=exclusive)
|
||||
self.repository.__enter__()
|
||||
|
||||
def add_keys(self):
|
||||
self.repository.put(H(0), b'foo')
|
||||
|
@ -246,9 +247,8 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
|
|||
if name.startswith('index.'):
|
||||
os.unlink(os.path.join(self.repository.path, name))
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
|
||||
def test_crash_before_compact_segments(self):
|
||||
self.add_keys()
|
||||
|
@ -258,9 +258,8 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
|
|||
except TypeError:
|
||||
pass
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
|
||||
def test_crash_before_write_index(self):
|
||||
self.add_keys()
|
||||
|
@ -270,9 +269,8 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
|
|||
except TypeError:
|
||||
pass
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
|
||||
def test_replay_lock_upgrade_old(self):
|
||||
self.add_keys()
|
||||
|
@ -308,17 +306,15 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
|
|||
except TypeError:
|
||||
pass
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
self.assert_equal(self.repository.check(), True)
|
||||
self.assert_equal(len(self.repository), 3)
|
||||
|
||||
def test_ignores_commit_tag_in_data(self):
|
||||
self.repository.put(H(0), LoggedIO.COMMIT)
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
io = self.repository.io
|
||||
assert not io.is_committed_segment(io.get_latest_segment())
|
||||
io = self.repository.io
|
||||
assert not io.is_committed_segment(io.get_latest_segment())
|
||||
|
||||
def test_moved_deletes_are_tracked(self):
|
||||
self.repository.put(H(1), b'1')
|
||||
|
@ -440,11 +436,9 @@ class RepositoryFreeSpaceTestCase(RepositoryTestCaseBase):
|
|||
self.repository.config.set('repository', 'additional_free_space', '1000T')
|
||||
self.repository.save_key(b'shortcut to save_config')
|
||||
self.reopen()
|
||||
|
||||
with self.repository:
|
||||
self.repository.put(H(0), b'foobar')
|
||||
with pytest.raises(Repository.InsufficientFreeSpaceError):
|
||||
self.repository.commit(compact=False)
|
||||
self.repository.put(H(0), b'foobar')
|
||||
with pytest.raises(Repository.InsufficientFreeSpaceError):
|
||||
self.repository.commit(compact=False)
|
||||
assert os.path.exists(self.repository.path)
|
||||
|
||||
def test_create_free_space(self):
|
||||
|
@ -466,13 +460,12 @@ class QuotaTestCase(RepositoryTestCaseBase):
|
|||
self.repository.commit(compact=False)
|
||||
assert self.repository.storage_quota_use == 1234 + 5678 + 2 * 41 # we have not compacted yet
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
# Open new transaction; hints and thus quota data is not loaded unless needed.
|
||||
self.repository.put(H(3), b'')
|
||||
self.repository.delete(H(3))
|
||||
assert self.repository.storage_quota_use == 1234 + 5678 + 3 * 41 # we have not compacted yet
|
||||
self.repository.commit(compact=True)
|
||||
assert self.repository.storage_quota_use == 5678 + 41
|
||||
# Open new transaction; hints and thus quota data is not loaded unless needed.
|
||||
self.repository.put(H(3), b'')
|
||||
self.repository.delete(H(3))
|
||||
assert self.repository.storage_quota_use == 1234 + 5678 + 3 * 41 # we have not compacted yet
|
||||
self.repository.commit(compact=True)
|
||||
assert self.repository.storage_quota_use == 5678 + 41
|
||||
|
||||
def test_exceed_quota(self):
|
||||
assert self.repository.storage_quota_use == 0
|
||||
|
@ -487,13 +480,12 @@ class QuotaTestCase(RepositoryTestCaseBase):
|
|||
self.repository.commit(compact=False)
|
||||
assert self.repository.storage_quota_use == 82
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
self.repository.storage_quota = 100
|
||||
# Open new transaction; hints and thus quota data is not loaded unless needed.
|
||||
self.repository.put(H(1), b'')
|
||||
assert self.repository.storage_quota_use == 82 # we have 2 puts for H(1) here and not yet compacted.
|
||||
self.repository.commit(compact=True)
|
||||
assert self.repository.storage_quota_use == 41 # now we have compacted.
|
||||
self.repository.storage_quota = 100
|
||||
# Open new transaction; hints and thus quota data is not loaded unless needed.
|
||||
self.repository.put(H(1), b'')
|
||||
assert self.repository.storage_quota_use == 82 # we have 2 puts for H(1) here and not yet compacted.
|
||||
self.repository.commit(compact=True)
|
||||
assert self.repository.storage_quota_use == 41 # now we have compacted.
|
||||
|
||||
|
||||
class NonceReservation(RepositoryTestCaseBase):
|
||||
|
@ -811,9 +803,8 @@ class RepositoryCheckTestCase(RepositoryTestCaseBase):
|
|||
self.repository.commit(compact=True)
|
||||
compact.assert_called_once_with(0.1)
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
self.check(repair=True)
|
||||
self.assert_equal(self.repository.get(H(0)), b'data2')
|
||||
self.check(repair=True)
|
||||
self.assert_equal(self.repository.get(H(0)), b'data2')
|
||||
|
||||
|
||||
class RepositoryHintsTestCase(RepositoryTestCaseBase):
|
||||
|
@ -828,14 +819,13 @@ class RepositoryHintsTestCase(RepositoryTestCaseBase):
|
|||
# close and re-open the repository (create fresh Repository instance) to
|
||||
# check whether hints were persisted to / reloaded from disk
|
||||
self.reopen()
|
||||
with self.repository:
|
||||
# see also do_compact()
|
||||
self.repository.put(H(42), b'foobar') # this will call prepare_txn() and load the hints data
|
||||
# check if hints persistence worked:
|
||||
self.assert_equal(shadow_index_expected, self.repository.shadow_index)
|
||||
self.assert_equal(compact_expected, self.repository.compact)
|
||||
del self.repository.segments[2] # ignore the segment created by put(H(42), ...)
|
||||
self.assert_equal(segments_expected, self.repository.segments)
|
||||
# see also do_compact()
|
||||
self.repository.put(H(42), b'foobar') # this will call prepare_txn() and load the hints data
|
||||
# check if hints persistence worked:
|
||||
self.assert_equal(shadow_index_expected, self.repository.shadow_index)
|
||||
self.assert_equal(compact_expected, self.repository.compact)
|
||||
del self.repository.segments[2] # ignore the segment created by put(H(42), ...)
|
||||
self.assert_equal(segments_expected, self.repository.segments)
|
||||
|
||||
def test_hints_behaviour(self):
|
||||
self.repository.put(H(0), b'data')
|
||||
|
|
Loading…
Add table
Reference in a new issue