~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/blackbox/test_pull.py

  • Committer: John Arbash Meinel
  • Date: 2009-06-04 17:38:30 UTC
  • mto: This revision was merged to the branch mainline in revision 4410.
  • Revision ID: john@arbash-meinel.com-20090604173830-e9j1rpv4euxkmzqr
Change how schemas are validated (down to 1.02s)
_vaidate_properties now avoids creating a new dict, but decodes the items 'in place'.
We don't copy the schema dict and then pop items out, instead we just
check that we have a valid entry for every item.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005, 2006 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
20
20
import os
21
21
import sys
22
22
 
23
 
from bzrlib import (
24
 
    debug,
25
 
    remote,
26
 
    urlutils,
27
 
    )
28
 
 
29
23
from bzrlib.branch import Branch
30
24
from bzrlib.directory_service import directories
31
25
from bzrlib.osutils import pathjoin
32
 
from bzrlib.tests import TestCaseWithTransport
 
26
from bzrlib.tests.blackbox import ExternalBase
33
27
from bzrlib.uncommit import uncommit
34
28
from bzrlib.workingtree import WorkingTree
35
 
 
36
 
 
37
 
class TestPull(TestCaseWithTransport):
 
29
from bzrlib import urlutils
 
30
 
 
31
 
 
32
class TestPull(ExternalBase):
38
33
 
39
34
    def example_branch(self, path='.'):
40
35
        tree = self.make_branch_and_tree(path)
343
338
            def look_up(self, name, url):
344
339
                return 'source'
345
340
        directories.register('foo:', FooService, 'Testing directory service')
346
 
        self.addCleanup(directories.remove, 'foo:')
 
341
        self.addCleanup(lambda: directories.remove('foo:'))
347
342
        self.run_bzr('pull foo:bar -d target')
348
343
        self.assertEqual(source_last, target.last_revision())
349
344
 
364
359
        self.assertContainsRe(out, r'\n {4}1 .*\n {6}setup\n')
365
360
        self.assertNotContainsRe(
366
361
            out, r'revno: 1\ncommitter: .*\nbranch nick: source')
367
 
 
368
 
    def test_pull_smart_stacked_streaming_acceptance(self):
369
 
        """'bzr pull -r 123' works on stacked, smart branches, even when the
370
 
        revision specified by the revno is only present in the fallback
371
 
        repository.
372
 
 
373
 
        See <https://launchpad.net/bugs/380314>
374
 
        """
375
 
        self.setup_smart_server_with_call_log()
376
 
        # Make a stacked-on branch with two commits so that the
377
 
        # revision-history can't be determined just by looking at the parent
378
 
        # field in the revision in the stacked repo.
379
 
        parent = self.make_branch_and_tree('parent', format='1.9')
380
 
        parent.commit(message='first commit')
381
 
        parent.commit(message='second commit')
382
 
        local = parent.bzrdir.sprout('local').open_workingtree()
383
 
        local.commit(message='local commit')
384
 
        local.branch.create_clone_on_transport(
385
 
            self.get_transport('stacked'), stacked_on=self.get_url('parent'))
386
 
        empty = self.make_branch_and_tree('empty', format='1.9')
387
 
        self.reset_smart_call_log()
388
 
        self.run_bzr(['pull', '-r', '1', self.get_url('stacked')],
389
 
            working_dir='empty')
390
 
        # This figure represent the amount of work to perform this use case. It
391
 
        # is entirely ok to reduce this number if a test fails due to rpc_count
392
 
        # being too low. If rpc_count increases, more network roundtrips have
393
 
        # become necessary for this use case. Please do not adjust this number
394
 
        # upwards without agreement from bzr's network support maintainers.
395
 
        self.assertLength(18, self.hpss_calls)
396
 
        remote = Branch.open('stacked')
397
 
        self.assertEndsWith(remote.get_stacked_on_url(), '/parent')
398
 
    
399
 
    def test_pull_cross_format_warning(self):
400
 
        """You get a warning for probably slow cross-format pulls.
401
 
        """
402
 
        # this is assumed to be going through InterDifferingSerializer
403
 
        from_tree = self.make_branch_and_tree('from', format='2a')
404
 
        to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
405
 
        from_tree.commit(message='first commit')
406
 
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
407
 
        self.assertContainsRe(err,
408
 
            "(?m)Doing on-the-fly conversion")
409
 
 
410
 
    def test_pull_cross_format_warning_no_IDS(self):
411
 
        """You get a warning for probably slow cross-format pulls.
412
 
        """
413
 
        # this simulates what would happen across the network, where
414
 
        # interdifferingserializer is not active
415
 
 
416
 
        debug.debug_flags.add('IDS_never')
417
 
        # TestCase take care of restoring them
418
 
 
419
 
        from_tree = self.make_branch_and_tree('from', format='2a')
420
 
        to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
421
 
        from_tree.commit(message='first commit')
422
 
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
423
 
        self.assertContainsRe(err,
424
 
            "(?m)Doing on-the-fly conversion")
425
 
 
426
 
    def test_pull_cross_format_from_network(self):
427
 
        self.setup_smart_server_with_call_log()
428
 
        from_tree = self.make_branch_and_tree('from', format='2a')
429
 
        to_tree = self.make_branch_and_tree('to', format='1.14-rich-root')
430
 
        self.assertIsInstance(from_tree.branch, remote.RemoteBranch)
431
 
        from_tree.commit(message='first commit')
432
 
        out, err = self.run_bzr(['pull', '-d', 'to',
433
 
            from_tree.branch.bzrdir.root_transport.base])
434
 
        self.assertContainsRe(err,
435
 
            "(?m)Doing on-the-fly conversion")
436
 
 
437
 
    def test_pull_to_experimental_format_warning(self):
438
 
        """You get a warning for pulling into experimental formats.
439
 
        """
440
 
        from_tree = self.make_branch_and_tree('from', format='development-subtree')
441
 
        to_tree = self.make_branch_and_tree('to', format='development-subtree')
442
 
        from_tree.commit(message='first commit')
443
 
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
444
 
        self.assertContainsRe(err,
445
 
            "(?m)Fetching into experimental format")
446
 
 
447
 
    def test_pull_cross_to_experimental_format_warning(self):
448
 
        """You get a warning for pulling into experimental formats.
449
 
        """
450
 
        from_tree = self.make_branch_and_tree('from', format='2a')
451
 
        to_tree = self.make_branch_and_tree('to', format='development-subtree')
452
 
        from_tree.commit(message='first commit')
453
 
        out, err = self.run_bzr(['pull', '-d', 'to', 'from'])
454
 
        self.assertContainsRe(err,
455
 
            "(?m)Fetching into experimental format")