13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
18
"""Black-box tests for bzr pull."""
239
239
out = self.run_bzr('pull ../branch_a', retcode=3)
240
240
self.assertEqual(out,
241
241
('','bzr: ERROR: These branches have diverged.'
242
' Use the missing command to see how.\n'
243
'Use the merge command to reconcile them.\n'))
242
' Use the merge command to reconcile them.\n'))
244
243
self.assertEqual(branch_b.get_parent(), parent)
245
244
# test implicit --remember after resolving previous failure
246
245
uncommit(branch=branch_b, tree=tree_b)
341
340
self.addCleanup(lambda: directories.remove('foo:'))
342
341
self.run_bzr('pull foo:bar -d target')
343
342
self.assertEqual(source_last, target.last_revision())
345
def test_pull_verbose_defaults_to_long(self):
346
tree = self.example_branch('source')
347
target = self.make_branch_and_tree('target')
348
out = self.run_bzr('pull -v source -d target')[0]
349
self.assertContainsRe(out,
350
r'revno: 1\ncommitter: .*\nbranch nick: source')
351
self.assertNotContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
353
def test_pull_verbose_uses_default_log(self):
354
tree = self.example_branch('source')
355
target = self.make_branch_and_tree('target')
356
target_config = target.branch.get_config()
357
target_config.set_user_option('log_format', 'short')
358
out = self.run_bzr('pull -v source -d target')[0]
359
self.assertContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
360
self.assertNotContainsRe(
361
out, r'revno: 1\ncommitter: .*\nbranch nick: source')
363
def test_pull_smart_stacked_streaming_acceptance(self):
364
"""'bzr pull -r 123' works on stacked, smart branches, even when the
365
revision specified by the revno is only present in the fallback
368
See <https://launchpad.net/bugs/380314>
370
self.setup_smart_server_with_call_log()
371
# Make a stacked-on branch with two commits so that the
372
# revision-history can't be determined just by looking at the parent
373
# field in the revision in the stacked repo.
374
parent = self.make_branch_and_tree('parent', format='1.9')
375
parent.commit(message='first commit')
376
parent.commit(message='second commit')
377
local = parent.bzrdir.sprout('local').open_workingtree()
378
local.commit(message='local commit')
379
local.branch.create_clone_on_transport(
380
self.get_transport('stacked'), stacked_on=self.get_url('parent'))
381
empty = self.make_branch_and_tree('empty', format='1.9')
382
self.reset_smart_call_log()
383
self.run_bzr(['pull', '-r', '1', self.get_url('stacked')],
385
# This figure represent the amount of work to perform this use case. It
386
# is entirely ok to reduce this number if a test fails due to rpc_count
387
# being too low. If rpc_count increases, more network roundtrips have
388
# become necessary for this use case. Please do not adjust this number
389
# upwards without agreement from bzr's network support maintainers.
390
self.assertLength(18, self.hpss_calls)
391
remote = Branch.open('stacked')
392
self.assertEndsWith(remote.get_stacked_on_url(), '/parent')