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