Rev 4113: (andrew) Fix false 'does not support stacking' warning when pushing in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Wed Mar 11 08:25:47 GMT 2009
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 4113
revision-id: pqm at pqm.ubuntu.com-20090311082542-mgvtmiodx227pin4
parent: pqm at pqm.ubuntu.com-20090311072239-dm56af7pf1j4i1nq
parent: andrew.bennetts at canonical.com-20090311074105-fkj4btkmiqop33ry
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2009-03-11 08:25:42 +0000
message:
(andrew) Fix false 'does not support stacking' warning when pushing
via HPSS.
added:
bzrlib/tests/per_repository_reference/test_default_stacking.py test_default_stackin-20090311055345-9ajahgm58oq3wh6h-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/branch_implementations/test_stacking.py test_stacking.py-20080214020755-msjlkb7urobwly0f-1
bzrlib/tests/per_repository_reference/__init__.py __init__.py-20080220025549-nnm2s80it1lvcwnc-2
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
------------------------------------------------------------
revno: 4103.2.4
revision-id: andrew.bennetts at canonical.com-20090311074105-fkj4btkmiqop33ry
parent: andrew.bennetts at canonical.com-20090311065016-3dcl01o0pptwvtrk
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: fix-stackable-source
timestamp: Wed 2009-03-11 17:41:05 +1000
message:
Add NEWS entry.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 4103.2.3
revision-id: andrew.bennetts at canonical.com-20090311065016-3dcl01o0pptwvtrk
parent: andrew.bennetts at canonical.com-20090311065004-53lanoigc84wc2i3
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: fix-stackable-source
timestamp: Wed 2009-03-11 16:50:16 +1000
message:
Other tests for good luck.
added:
bzrlib/tests/per_repository_reference/test_default_stacking.py test_default_stackin-20090311055345-9ajahgm58oq3wh6h-1
modified:
bzrlib/tests/branch_implementations/test_stacking.py test_stacking.py-20080214020755-msjlkb7urobwly0f-1
bzrlib/tests/per_repository_reference/__init__.py __init__.py-20080220025549-nnm2s80it1lvcwnc-2
------------------------------------------------------------
revno: 4103.2.2
revision-id: andrew.bennetts at canonical.com-20090311065004-53lanoigc84wc2i3
parent: andrew.bennetts at canonical.com-20090310062815-234tf98y1fcnduwd
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: fix-stackable-source
timestamp: Wed 2009-03-11 16:50:04 +1000
message:
Fix RemoteBranchFormat.supports_stacking()
modified:
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
------------------------------------------------------------
revno: 4103.2.1
revision-id: andrew.bennetts at canonical.com-20090310062815-234tf98y1fcnduwd
parent: pqm at pqm.ubuntu.com-20090310052823-5h4znt0j8j5ak38o
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: fix-stackable-source
timestamp: Tue 2009-03-10 16:28:15 +1000
message:
Make clone/sprout stacking policy tests a little more precise.
modified:
bzrlib/tests/branch_implementations/test_stacking.py test_stacking.py-20080214020755-msjlkb7urobwly0f-1
=== modified file 'NEWS'
--- a/NEWS 2009-03-11 03:13:03 +0000
+++ b/NEWS 2009-03-11 08:25:42 +0000
@@ -118,6 +118,9 @@
* Export now handles files that are not present in the tree.
(James Westby, #174539)
+ * Fixed incorrect "Source format does not support stacking" warning
+ when pushing to a smart server. (Andrew Bennetts, #334114)
+
* Fixed "sprout() got an unexpected keyword argument 'source_branch'"
error branching from old repositories.
(Martin Pool, #321695)
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2009-03-09 05:56:10 +0000
+++ b/bzrlib/remote.py 2009-03-11 06:50:04 +0000
@@ -1700,6 +1700,10 @@
self._ensure_real()
return self._custom_format.supports_tags()
+ def supports_stacking(self):
+ self._ensure_real()
+ return self._custom_format.supports_stacking()
+
class RemoteBranch(branch.Branch, _RpcHelper):
"""Branch stored on a server accessed by HPSS RPC.
=== modified file 'bzrlib/tests/branch_implementations/test_stacking.py'
--- a/bzrlib/tests/branch_implementations/test_stacking.py 2009-01-08 21:07:18 +0000
+++ b/bzrlib/tests/branch_implementations/test_stacking.py 2009-03-11 06:50:16 +0000
@@ -58,7 +58,9 @@
except unstackable_format_errors:
# if the set failed, so must the get
self.assertRaises(unstackable_format_errors, branch.get_stacked_on_url)
+ self.assertFalse(branch._format.supports_stacking())
return
+ self.assertTrue(branch._format.supports_stacking())
# now we have a stacked branch:
self.assertEqual(target.base, branch.get_stacked_on_url())
branch.set_stacked_on_url(None)
@@ -252,10 +254,11 @@
parent_bzrdir.get_config().set_default_stack_on('stack-on')
source = self.make_branch('source')
target = source.bzrdir.sprout('target').open_branch()
- try:
+ if self.branch_format.supports_stacking():
self.assertEqual('../stack-on', target.get_stacked_on_url())
- except errors.UnstackableBranchFormat:
- pass
+ else:
+ self.assertRaises(
+ errors.UnstackableBranchFormat, target.get_stacked_on_url)
def test_clone_stacking_policy_handling(self):
"""Obey policy where possible, ignore otherwise."""
@@ -264,10 +267,27 @@
parent_bzrdir.get_config().set_default_stack_on('stack-on')
source = self.make_branch('source')
target = source.bzrdir.clone('target').open_branch()
- try:
- self.assertEqual('../stack-on', target.get_stacked_on_url())
- except errors.UnstackableBranchFormat:
- pass
+ if self.branch_format.supports_stacking():
+ self.assertEqual('../stack-on', target.get_stacked_on_url())
+ else:
+ self.assertRaises(
+ errors.UnstackableBranchFormat, target.get_stacked_on_url)
+
+ def test_sprout_to_smart_server_stacking_policy_handling(self):
+ """Obey policy where possible, ignore otherwise."""
+ if isinstance(self.branch_format, branch.BzrBranchFormat4):
+ raise TestNotApplicable('Branch format 4 is not usable via HPSS.')
+ stack_on = self.make_branch('stack-on')
+ parent_bzrdir = self.make_bzrdir('.', format='default')
+ parent_bzrdir.get_config().set_default_stack_on('stack-on')
+ source = self.make_branch('source')
+ url = self.make_smart_server('target').base
+ target = source.bzrdir.sprout(url).open_branch()
+ if self.branch_format.supports_stacking():
+ self.assertEqual('../stack-on', target.get_stacked_on_url())
+ else:
+ self.assertRaises(
+ errors.UnstackableBranchFormat, target.get_stacked_on_url)
def prepare_stacked_on_fetch(self):
stack_on = self.make_branch_and_tree('stack-on')
=== modified file 'bzrlib/tests/per_repository_reference/__init__.py'
--- a/bzrlib/tests/per_repository_reference/__init__.py 2009-03-07 06:58:17 +0000
+++ b/bzrlib/tests/per_repository_reference/__init__.py 2009-03-11 06:50:16 +0000
@@ -86,6 +86,7 @@
'bzrlib.tests.per_repository_reference.test_all_revision_ids',
'bzrlib.tests.per_repository_reference.test_break_lock',
'bzrlib.tests.per_repository_reference.test_check',
+ 'bzrlib.tests.per_repository_reference.test_default_stacking',
]
# Parameterize per_repository_reference test modules by format.
standard_tests.addTests(loader.loadTestsFromModuleNames(module_list))
=== added file 'bzrlib/tests/per_repository_reference/test_default_stacking.py'
--- a/bzrlib/tests/per_repository_reference/test_default_stacking.py 1970-01-01 00:00:00 +0000
+++ b/bzrlib/tests/per_repository_reference/test_default_stacking.py 2009-03-11 06:50:16 +0000
@@ -0,0 +1,41 @@
+# Copyright (C) 2009 Canonical Ltd
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+from bzrlib.smart import server
+from bzrlib.tests.per_repository import TestCaseWithRepository
+
+
+class TestDefaultStackingPolicy(TestCaseWithRepository):
+
+ # XXX: this helper probably belongs on TestCaseWithTransport
+ def make_smart_server(self, path):
+ smart_server = server.SmartTCPServer_for_testing()
+ smart_server.setUp(self.get_server())
+ return smart_server.get_url() + path
+
+ def test_sprout_to_smart_server_stacking_policy_handling(self):
+ """Obey policy where possible, ignore otherwise."""
+ stack_on = self.make_branch('stack-on')
+ parent_bzrdir = self.make_bzrdir('.', format='default')
+ parent_bzrdir.get_config().set_default_stack_on('stack-on')
+ source = self.make_branch('source')
+ url = self.make_smart_server('target')
+ target = source.bzrdir.sprout(url).open_branch()
+ self.assertEqual('../stack-on', target.get_stacked_on_url())
+ self.assertEqual(
+ source._format.network_name(), target._format.network_name())
+
=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py 2009-03-06 04:38:56 +0000
+++ b/bzrlib/tests/test_remote.py 2009-03-11 06:50:04 +0000
@@ -114,6 +114,15 @@
b = BzrDir.open_from_transport(self.transport).open_branch()
self.assertStartsWith(str(b), 'RemoteBranch(')
+ def test_remote_branch_format_supports_stacking(self):
+ t = self.transport
+ self.make_branch('unstackable', format='pack-0.92')
+ b = BzrDir.open_from_transport(t.clone('unstackable')).open_branch()
+ self.assertFalse(b._format.supports_stacking())
+ self.make_branch('stackable', format='1.9')
+ b = BzrDir.open_from_transport(t.clone('stackable')).open_branch()
+ self.assertTrue(b._format.supports_stacking())
+
class FakeProtocol(object):
"""Lookalike SmartClientRequestProtocolOne allowing body reading tests."""
More information about the bazaar-commits
mailing list