瀏覽代碼

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.
Thomas Waldmann 2 年之前
父節點
當前提交
fbf287f825
共有 1 個文件被更改,包括 37 次插入47 次删除
  1. 37 47
      src/borg/testsuite/repository.py

+ 37 - 47
src/borg/testsuite/repository.py

@@ -41,8 +41,9 @@ class RepositoryTestCaseBase(BaseTestCase):
         shutil.rmtree(self.tmppath)
         shutil.rmtree(self.tmppath)
 
 
     def reopen(self, exclusive=UNSPECIFIED):
     def reopen(self, exclusive=UNSPECIFIED):
-        self.repository.close()
+        self.repository.__exit__(None, None, None)
         self.repository = self.open(exclusive=exclusive)
         self.repository = self.open(exclusive=exclusive)
+        self.repository.__enter__()
 
 
     def add_keys(self):
     def add_keys(self):
         self.repository.put(H(0), b'foo')
         self.repository.put(H(0), b'foo')
@@ -246,9 +247,8 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
             if name.startswith('index.'):
             if name.startswith('index.'):
                 os.unlink(os.path.join(self.repository.path, name))
                 os.unlink(os.path.join(self.repository.path, name))
         self.reopen()
         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):
     def test_crash_before_compact_segments(self):
         self.add_keys()
         self.add_keys()
@@ -258,9 +258,8 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
         except TypeError:
         except TypeError:
             pass
             pass
         self.reopen()
         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):
     def test_crash_before_write_index(self):
         self.add_keys()
         self.add_keys()
@@ -270,9 +269,8 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
         except TypeError:
         except TypeError:
             pass
             pass
         self.reopen()
         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):
     def test_replay_lock_upgrade_old(self):
         self.add_keys()
         self.add_keys()
@@ -308,17 +306,15 @@ class RepositoryCommitTestCase(RepositoryTestCaseBase):
         except TypeError:
         except TypeError:
             pass
             pass
         self.reopen()
         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):
     def test_ignores_commit_tag_in_data(self):
         self.repository.put(H(0), LoggedIO.COMMIT)
         self.repository.put(H(0), LoggedIO.COMMIT)
         self.reopen()
         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):
     def test_moved_deletes_are_tracked(self):
         self.repository.put(H(1), b'1')
         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.config.set('repository', 'additional_free_space', '1000T')
         self.repository.save_key(b'shortcut to save_config')
         self.repository.save_key(b'shortcut to save_config')
         self.reopen()
         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)
         assert os.path.exists(self.repository.path)
 
 
     def test_create_free_space(self):
     def test_create_free_space(self):
@@ -466,13 +460,12 @@ class QuotaTestCase(RepositoryTestCaseBase):
         self.repository.commit(compact=False)
         self.repository.commit(compact=False)
         assert self.repository.storage_quota_use == 1234 + 5678 + 2 * 41  # we have not compacted yet
         assert self.repository.storage_quota_use == 1234 + 5678 + 2 * 41  # we have not compacted yet
         self.reopen()
         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):
     def test_exceed_quota(self):
         assert self.repository.storage_quota_use == 0
         assert self.repository.storage_quota_use == 0
@@ -487,13 +480,12 @@ class QuotaTestCase(RepositoryTestCaseBase):
             self.repository.commit(compact=False)
             self.repository.commit(compact=False)
         assert self.repository.storage_quota_use == 82
         assert self.repository.storage_quota_use == 82
         self.reopen()
         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):
 class NonceReservation(RepositoryTestCaseBase):
@@ -811,9 +803,8 @@ class RepositoryCheckTestCase(RepositoryTestCaseBase):
             self.repository.commit(compact=True)
             self.repository.commit(compact=True)
             compact.assert_called_once_with(0.1)
             compact.assert_called_once_with(0.1)
         self.reopen()
         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):
 class RepositoryHintsTestCase(RepositoryTestCaseBase):
@@ -828,14 +819,13 @@ class RepositoryHintsTestCase(RepositoryTestCaseBase):
         # close and re-open the repository (create fresh Repository instance) to
         # close and re-open the repository (create fresh Repository instance) to
         # check whether hints were persisted to / reloaded from disk
         # check whether hints were persisted to / reloaded from disk
         self.reopen()
         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):
     def test_hints_behaviour(self):
         self.repository.put(H(0), b'data')
         self.repository.put(H(0), b'data')