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