Rev 5101: Implement reload() and test that it also notifies about updates. in http://bzr.arbash-meinel.com/branches/bzr/lp/2.2.0b2-contained-pack

John Arbash Meinel john at arbash-meinel.com
Mon Mar 8 21:59:32 GMT 2010


At http://bzr.arbash-meinel.com/branches/bzr/lp/2.2.0b2-contained-pack

------------------------------------------------------------
revno: 5101
revision-id: john at arbash-meinel.com-20100308215925-or3lq7hnateakrju
parent: john at arbash-meinel.com-20100308211511-jmk25089ymoiwcl8
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: 2.2.0b2-contained-pack
timestamp: Mon 2010-03-08 15:59:25 -0600
message:
  Implement reload() and test that it also notifies about updates.
-------------- next part --------------
=== modified file 'bzrlib/pack_collection.py'
--- a/bzrlib/pack_collection.py	2010-03-08 21:15:11 +0000
+++ b/bzrlib/pack_collection.py	2010-03-08 21:59:25 +0000
@@ -250,6 +250,8 @@
         if self._memos is not None:
             result = False
         else:
+            # TODO: Should we call 'add_memo' or 'init_memo' for all memos that
+            #       are already present?
             memos = set(self.index_policy.read_index())
             self._memos = dict(memos)
             self._last_read_memos = memos
@@ -261,7 +263,6 @@
 
         :return: Information about what content has changed.
         """
-        assert False # We haven't tested this yet
         if self._ensure_loaded():
             # We haven't read anything before, so obviously the memory
             # structures changed..

=== modified file 'bzrlib/tests/test_pack_collection.py'
--- a/bzrlib/tests/test_pack_collection.py	2010-03-08 21:15:11 +0000
+++ b/bzrlib/tests/test_pack_collection.py	2010-03-08 21:59:25 +0000
@@ -384,3 +384,50 @@
                                 d_added=[self._m4],
                                 m_removed=[self._m2],
                                 m_added=[self._m5])
+
+    def test_reload_not_loaded(self):
+        self.tracker.add_memo(*self._m1)
+        self.tracker.save()
+        tracker2 = self.make_tracker()
+        self.assertTrue(tracker2.reload())
+
+    def test_reload_nothing_changed(self):
+        self.tracker.add_memo(*self._m1)
+        self.tracker.save()
+        self.assertFalse(self.tracker.reload())
+
+    def test_reload_disk_added(self):
+        self.tracker.add_memo(*self._m1)
+        self.tracker.save()
+        tracker2 = self.make_tracker()
+        tracker2.add_memo(*self._m2)
+        tracker2.save()
+        policy = LoggingUpdatePolicy()
+        self.tracker.update_policy = policy
+        self.assertTrue(self.tracker.reload())
+        self.assertEqual([('added', 'name2', 'content2')], policy.log)
+
+    def test_reload_disk_removed(self):
+        self.tracker.add_memo(*self._m1)
+        self.tracker.save()
+        tracker2 = self.make_tracker()
+        tracker2.remove_memo(*self._m1)
+        tracker2.save()
+        policy = LoggingUpdatePolicy()
+        self.tracker.update_policy = policy
+        self.assertTrue(self.tracker.reload())
+        self.assertEqual([('removed', 'name1', 'content1')], policy.log)
+
+    def test_reload_disk_modified(self):
+        self.tracker.add_memo(*self._m1)
+        self.tracker.save()
+        tracker2 = self.make_tracker()
+        tracker2.remove_memo(*self._m1)
+        tracker2.add_memo('name1', 'alternate-content')
+        tracker2.save()
+        policy = LoggingUpdatePolicy()
+        self.tracker.update_policy = policy
+        self.assertTrue(self.tracker.reload())
+        self.assertEqual([('removed', 'name1', 'content1'),
+                          ('added', 'name1', 'alternate-content'),
+                         ], policy.log)



More information about the bazaar-commits mailing list