305
307
self.assertContainsRe(out, 'bar')
306
308
self.assertNotContainsRe(out, 'added:')
307
309
self.assertNotContainsRe(out, 'foo')
311
def test_pull_quiet(self):
312
"""Check that bzr pull --quiet does not print anything"""
313
tree_a = self.make_branch_and_tree('tree_a')
314
self.build_tree(['tree_a/foo'])
316
revision_id = tree_a.commit('bar')
317
tree_b = tree_a.bzrdir.sprout('tree_b').open_workingtree()
318
out, err = self.run_bzr('pull --quiet -d tree_b')
319
self.assertEqual(out, '')
320
self.assertEqual(err, '')
321
self.assertEqual(tree_b.last_revision(), revision_id)
322
self.build_tree(['tree_a/moo'])
324
revision_id = tree_a.commit('quack')
325
out, err = self.run_bzr('pull --quiet -d tree_b')
326
self.assertEqual(out, '')
327
self.assertEqual(err, '')
328
self.assertEqual(tree_b.last_revision(), revision_id)
330
def test_pull_from_directory_service(self):
331
source = self.make_branch_and_tree('source')
332
source.commit('commit 1')
333
target = source.bzrdir.sprout('target').open_workingtree()
334
source_last = source.commit('commit 2')
335
class FooService(object):
336
"""A directory service that always returns source"""
338
def look_up(self, name, url):
340
directories.register('foo:', FooService, 'Testing directory service')
341
self.addCleanup(lambda: directories.remove('foo:'))
342
self.run_bzr('pull foo:bar -d target')
343
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')