Rev 6524: per_tree re-uses the per_workingtree scenarios. in http://bazaar.launchpad.net/~jameinel/bzr/2.5-remote-wt-tests-1046697

John Arbash Meinel john at arbash-meinel.com
Fri Sep 7 07:51:47 UTC 2012


At http://bazaar.launchpad.net/~jameinel/bzr/2.5-remote-wt-tests-1046697

------------------------------------------------------------
revno: 6524
revision-id: john at arbash-meinel.com-20120907075117-zmj7gxpq6dqxnnif
parent: john at arbash-meinel.com-20120907062843-papmaad6wk5i8izn
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: 2.5-remote-wt-tests-1046697
timestamp: Fri 2012-09-07 11:51:17 +0400
message:
  per_tree re-uses the per_workingtree scenarios.
  
  Which means we have to update the per_tree tests to handle the new model,
  as well as update the test_selftest code that explicitly tested the
  permutation code.
-------------- next part --------------
=== modified file 'bzrlib/tests/per_tree/__init__.py'
--- a/bzrlib/tests/per_tree/__init__.py	2011-06-14 01:26:41 +0000
+++ b/bzrlib/tests/per_tree/__init__.py	2012-09-07 07:51:17 +0000
@@ -29,6 +29,7 @@
     errors,
     tests,
     transform,
+    transport,
     )
 from bzrlib.tests.per_controldir.test_controldir import TestCaseWithControlDir
 from bzrlib.tests.per_workingtree import (
@@ -99,11 +100,24 @@
 class TestCaseWithTree(TestCaseWithControlDir):
 
     def make_branch_and_tree(self, relpath):
-        made_control = self.make_bzrdir(relpath, format=
-            self.workingtree_format._matchingbzrdir)
+        bzrdir_format = self.workingtree_format.get_controldir_for_branch()
+        made_control = self.make_bzrdir(relpath, format=bzrdir_format)
         made_control.create_repository()
-        made_control.create_branch()
-        return self.workingtree_format.initialize(made_control)
+        b = made_control.create_branch()
+        if self.repo_is_remote:
+            # If the repo is remote, then we just create a local lightweight
+            # checkout
+            # XXX: This duplicates a lot of Branch.create_checkout, but we know
+            #      we want a) lightweight, and b) a specific WT format. We also
+            #      know that nothing should already exist, etc.
+            t = transport.get_transport(relpath)
+            t.ensure_base()
+            wt_dir = bzrdir_format.initialize_on_transport(t)
+            branch_ref = wt_dir.set_branch_reference(b)
+            wt = wt_dir.create_workingtree(None, from_branch=branch_ref)
+        else:
+            wt = self.workingtree_format.initialize(made_control)
+        return wt
 
     def workingtree_to_test_tree(self, tree):
         return self._workingtree_to_test_tree(self, tree)

=== modified file 'bzrlib/tests/per_workingtree/__init__.py'
--- a/bzrlib/tests/per_workingtree/__init__.py	2012-09-06 08:05:21 +0000
+++ b/bzrlib/tests/per_workingtree/__init__.py	2012-09-07 07:51:17 +0000
@@ -35,7 +35,9 @@
     )
 
 
-def make_scenarios(transport_server, transport_readonly_server, formats):
+def make_scenarios(transport_server, transport_readonly_server, formats,
+                   remote_server=None, remote_readonly_server=None,
+                   remote_backing_server=None):
     result = []
     for workingtree_format in formats:
         result.append((workingtree_format.__class__.__name__,
@@ -43,11 +45,16 @@
                                      transport_readonly_server,
                                      workingtree_format)))
     default_wt_format = workingtree.format_registry.get_default()
-    scenario = make_scenario(test_server.SmartTCPServer_for_testing,
-                      test_server.ReadonlySmartTCPServer_for_testing,
-                      default_wt_format)
+    if remote_server is None:
+        remote_server = test_server.SmartTCPServer_for_testing
+    if remote_readonly_server is None:
+        remote_readonly_server = test_server.ReadonlySmartTCPServer_for_testing
+    if remote_backing_server is None:
+        remote_backing_server = memory.MemoryServer
+    scenario = make_scenario(remote_server, remote_readonly_server,
+                             default_wt_format)
     scenario['repo_is_remote'] = True;
-    scenario['vfs_transport_factory'] = memory.MemoryServer
+    scenario['vfs_transport_factory'] = remote_backing_server
     result.append((default_wt_format.__class__.__name__ + ',remote', scenario))
     return result
 

=== modified file 'bzrlib/tests/test_selftest.py'
--- a/bzrlib/tests/test_selftest.py	2011-11-08 17:07:23 +0000
+++ b/bzrlib/tests/test_selftest.py	2012-09-07 07:51:17 +0000
@@ -334,31 +334,51 @@
         server1 = "a"
         server2 = "b"
         formats = [workingtree_4.WorkingTreeFormat4(),
-                   workingtree_3.WorkingTreeFormat3(),]
-        scenarios = make_scenarios(server1, server2, formats)
+                   workingtree_3.WorkingTreeFormat3(),
+                   workingtree_4.WorkingTreeFormat6()]
+        scenarios = make_scenarios(server1, server2, formats,
+            remote_server='c', remote_readonly_server='d',
+            remote_backing_server='e')
         self.assertEqual([
             ('WorkingTreeFormat4',
              {'bzrdir_format': formats[0]._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': formats[0]}),
             ('WorkingTreeFormat3',
              {'bzrdir_format': formats[1]._matchingbzrdir,
-              'transport_readonly_server': 'b',
-              'transport_server': 'a',
-              'workingtree_format': formats[1]})],
-            scenarios)
+              'repo_is_remote': False,
+              'transport_readonly_server': 'b',
+              'transport_server': 'a',
+              'workingtree_format': formats[1]}),
+            ('WorkingTreeFormat6',
+             {'bzrdir_format': formats[2]._matchingbzrdir,
+              'repo_is_remote': False,
+              'transport_readonly_server': 'b',
+              'transport_server': 'a',
+              'workingtree_format': formats[2]}),
+            ('WorkingTreeFormat6,remote',
+             {'bzrdir_format': formats[2]._matchingbzrdir,
+              'repo_is_remote': True,
+              'transport_readonly_server': 'd',
+              'transport_server': 'c',
+              'vfs_transport_factory': 'e',
+              'workingtree_format': formats[2]}),
+            ], scenarios)
 
 
 class TestTreeScenarios(tests.TestCase):
 
     def test_scenarios(self):
         # the tree implementation scenario generator is meant to setup one
-        # instance for each working tree format, and one additional instance
+        # instance for each working tree format, one additional instance
         # that will use the default wt format, but create a revision tree for
-        # the tests.  this means that the wt ones should have the
-        # workingtree_to_test_tree attribute set to 'return_parameter' and the
-        # revision one set to revision_tree_from_workingtree.
+        # the tests, and one more that uses the default wt format as a
+        # lightweight checkout of a remote repository.  This means that the wt
+        # ones should have the workingtree_to_test_tree attribute set to
+        # 'return_parameter' and the revision one set to
+        # revision_tree_from_workingtree.
 
         from bzrlib.tests.per_tree import (
             _dirstate_tree_from_workingtree,
@@ -370,16 +390,21 @@
             )
         server1 = "a"
         server2 = "b"
+        smart_server = test_server.SmartTCPServer_for_testing
+        smart_readonly_server = test_server.ReadonlySmartTCPServer_for_testing
+        mem_server = memory.MemoryServer
         formats = [workingtree_4.WorkingTreeFormat4(),
                    workingtree_3.WorkingTreeFormat3(),]
         scenarios = make_scenarios(server1, server2, formats)
-        self.assertEqual(7, len(scenarios))
+        self.assertEqual(8, len(scenarios))
         default_wt_format = workingtree.format_registry.get_default()
         wt4_format = workingtree_4.WorkingTreeFormat4()
         wt5_format = workingtree_4.WorkingTreeFormat5()
+        wt6_format = workingtree_4.WorkingTreeFormat6()
         expected_scenarios = [
             ('WorkingTreeFormat4',
              {'bzrdir_format': formats[0]._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': formats[0],
@@ -387,14 +412,25 @@
               }),
             ('WorkingTreeFormat3',
              {'bzrdir_format': formats[1]._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': formats[1],
               '_workingtree_to_test_tree': return_parameter,
              }),
+            ('WorkingTreeFormat6,remote',
+             {'bzrdir_format': wt6_format._matchingbzrdir,
+              'repo_is_remote': True,
+              'transport_readonly_server': smart_readonly_server,
+              'transport_server': smart_server,
+              'vfs_transport_factory': mem_server,
+              'workingtree_format': wt6_format,
+              '_workingtree_to_test_tree': return_parameter,
+             }),
             ('RevisionTree',
              {'_workingtree_to_test_tree': revision_tree_from_workingtree,
               'bzrdir_format': default_wt_format._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': default_wt_format,
@@ -402,6 +438,7 @@
             ('DirStateRevisionTree,WT4',
              {'_workingtree_to_test_tree': _dirstate_tree_from_workingtree,
               'bzrdir_format': wt4_format._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': wt4_format,
@@ -409,6 +446,7 @@
             ('DirStateRevisionTree,WT5',
              {'_workingtree_to_test_tree': _dirstate_tree_from_workingtree,
               'bzrdir_format': wt5_format._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': wt5_format,
@@ -416,12 +454,14 @@
             ('PreviewTree',
              {'_workingtree_to_test_tree': preview_tree_pre,
               'bzrdir_format': default_wt_format._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': default_wt_format}),
             ('PreviewTreePost',
              {'_workingtree_to_test_tree': preview_tree_post,
               'bzrdir_format': default_wt_format._matchingbzrdir,
+              'repo_is_remote': False,
               'transport_readonly_server': 'b',
               'transport_server': 'a',
               'workingtree_format': default_wt_format}),



More information about the bazaar-commits mailing list