Rev 2258: Restore old InterWeave tests in file:///home/mbp/bzr/Work/repoformats/

Martin Pool mbp at sourcefrog.net
Mon Feb 12 07:14:49 GMT 2007


------------------------------------------------------------
revno: 2258
revision-id: mbp at sourcefrog.net-20070212071448-0jvjfcc44wlaraw8
parent: mbp at sourcefrog.net-20070212065850-6i7a2btsua2b86tw
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: repoformats
timestamp: Mon 2007-02-12 18:14:48 +1100
message:
  Restore old InterWeave tests
modified:
  bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py	2007-02-12 05:09:55 +0000
+++ b/bzrlib/tests/test_repository.py	2007-02-12 07:14:48 +0000
@@ -394,16 +394,36 @@
         # now we should get the default InterRepository object again.
         self.assertGetsDefaultInterRepository(dummy_a, dummy_b)
 
-    def test_interweave_registered(self):
-        # optimized conversion between weave repos is (still) present
-        t = self.get_transport()
-        t.mkdir('r1')
-        t.mkdir('r2')
-        r1 = bzrdir.BzrDirFormat6().initialize('r1')
-        r2 = bzrdir.BzrDirFormat6().initialize('r2')
-        inter_repo = repository.InterRepository.get(r1.open_repository(), 
-                r2.open_repository())
-        self.assertIsInstance(inter_repo, repository.InterWeaveRepo)
+
+class TestInterWeaveRepo(TestCaseWithTransport):
+
+    def test_is_compatible_and_registered(self):
+        # InterWeaveRepo is compatible when either side
+        # is a format 5/6/7 branch
+        formats = [repository.RepositoryFormat5(),
+                   repository.RepositoryFormat6(),
+                   repository.RepositoryFormat7()]
+        incompatible_formats = [repository.RepositoryFormat4(),
+                                repository.RepositoryFormatKnit1(),
+                                ]
+        repo_a = self.make_repository('a')
+        repo_b = self.make_repository('b')
+        is_compatible = repository.InterWeaveRepo.is_compatible
+        for source in incompatible_formats:
+            # force incompatible left then right
+            repo_a._format = source
+            repo_b._format = formats[0]
+            self.assertFalse(is_compatible(repo_a, repo_b))
+            self.assertFalse(is_compatible(repo_b, repo_a))
+        for source in formats:
+            repo_a._format = source
+            for target in formats:
+                repo_b._format = target
+                self.assertTrue(is_compatible(repo_a, repo_b))
+        self.assertEqual(repository.InterWeaveRepo,
+                         repository.InterRepository.get(repo_a,
+                                                        repo_b).__class__)
+
 
 class TestRepositoryConverter(TestCaseWithTransport):
 




More information about the bazaar-commits mailing list