~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_read_bundle.py

  • Committer: John Arbash Meinel
  • Date: 2008-07-11 21:41:24 UTC
  • mto: This revision was merged to the branch mainline in revision 3543.
  • Revision ID: john@arbash-meinel.com-20080711214124-qi09irlj7pd5cuzg
Shortcut the case when one revision is in the ancestry of the other.

At the cost of a heads() check, when one parent supersedes, we don't have to extract
the text for the other. Changes merge time from 3m37s => 3m21s. Using a
CachingParentsProvider would drop the time down to 3m11s.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
from bzrlib.bundle.serializer import write_bundle
24
24
import bzrlib.bzrdir
25
25
import bzrlib.errors as errors
26
 
from bzrlib.symbol_versioning import deprecated_in
27
26
from bzrlib import tests
28
27
from bzrlib.tests.test_transport import TestTransportImplementation
29
28
from bzrlib.tests.test_transport_implementations import TransportTestProviderAdapter
35
34
def load_tests(standard_tests, module, loader):
36
35
    """Multiply tests for tranport implementations."""
37
36
    result = loader.suiteClass()
38
 
    transport_tests, remaining_tests = tests.split_suite_by_condition(
39
 
        standard_tests, tests.condition_isinstance((TestReadBundleFromURL)))
40
 
 
41
37
    adapter = TransportTestProviderAdapter()
42
 
    tests.adapt_tests(transport_tests, adapter, result)
43
 
 
44
 
    # No parametrization for the remaining tests
45
 
    result.addTests(remaining_tests)
46
 
 
 
38
    for test in tests.iter_suite_tests(standard_tests):
 
39
        result.addTests(adapter.adapt(test))
47
40
    return result
48
41
 
49
42
 
67
60
    return out, wt
68
61
 
69
62
 
70
 
class TestDeprecations(tests.TestCaseInTempDir):
71
 
 
72
 
    def create_test_bundle(self):
73
 
        out, wt = create_bundle_file(self)
74
 
        f = open('test_bundle', 'wb')
75
 
        f.write(out.getvalue())
76
 
        f.close()
77
 
        return wt
78
 
 
79
 
    def test_read_bundle_from_url_deprecated(self):
80
 
        wt = self.create_test_bundle()
81
 
        t = bzrlib.transport.get_transport(self.test_dir)
82
 
        url = t.abspath('test_bundle')
83
 
        self.callDeprecated([deprecated_in((1, 12, 0))
84
 
                             % 'bzrlib.bundle.read_bundle_from_url'],
85
 
                            bzrlib.bundle.read_bundle_from_url,
86
 
                            url)
87
 
 
88
 
 
89
63
class TestReadBundleFromURL(TestTransportImplementation):
90
64
    """Test that read_bundle works properly across multiple transports"""
91
65
 
103
77
            self.log('Put to: %s', self.get_url('test_bundle'))
104
78
        return wt
105
79
 
106
 
    def test_read_mergeable_from_url(self):
 
80
    def test_read_bundle_from_url(self):
107
81
        self._captureVar('BZR_NO_SMART_VFS', None)
108
82
        wt = self.create_test_bundle()
109
83
        if wt is None:
110
84
            return
111
 
        # read_mergeable_from_url will invoke get_transport which may *not*
112
 
        # respect self._transport (i.e. returns a transport that is different
113
 
        # from the one we want to test, so we must inject a correct transport
114
 
        # into possible_transports first.
115
 
        t = self.get_transport('test_bundle')
116
 
        possible_transports = [t]
117
 
        info = bzrlib.bundle.read_mergeable_from_url(
118
 
                    unicode(self.get_url('test_bundle')),
119
 
                    possible_transports=possible_transports)
 
85
        info = bzrlib.bundle.read_bundle_from_url(
 
86
                    unicode(self.get_url('test_bundle')))
120
87
        revision = info.real_revisions[-1]
121
88
        self.assertEqual('commit-1', revision.revision_id)
122
89
 
128
95
        if wt is None:
129
96
            return
130
97
 
131
 
        self.assertRaises(errors.NotABundle,
132
 
            bzrlib.bundle.read_mergeable_from_url,
 
98
        self.assertRaises(errors.NotABundle, 
 
99
            bzrlib.bundle.read_bundle_from_url, 
133
100
            self.get_url('tree'))
134
 
        self.assertRaises(errors.NotABundle,
135
 
            bzrlib.bundle.read_mergeable_from_url,
 
101
        self.assertRaises(errors.NotABundle, 
 
102
            bzrlib.bundle.read_bundle_from_url, 
136
103
            self.get_url('tree/a'))
137
104
 
138
 
    def test_read_mergeable_respects_possible_transports(self):
139
 
        t = self.get_transport('test_bundle')
140
 
        if not isinstance(t, bzrlib.transport.ConnectedTransport):
141
 
            # There is no point testing transport reuse for not connected
142
 
            # transports (the test will fail even).
143
 
            return
 
105
    def test_read_mergeable_populates_possible_transports(self):
144
106
        self._captureVar('BZR_NO_SMART_VFS', None)
145
107
        wt = self.create_test_bundle()
146
108
        if wt is None:
147
109
            return
148
 
        # read_mergeable_from_url will invoke get_transport which may *not*
149
 
        # respect self._transport (i.e. returns a transport that is different
150
 
        # from the one we want to test, so we must inject a correct transport
151
 
        # into possible_transports first.
152
 
        possible_transports = [t]
 
110
        possible_transports = []
153
111
        url = unicode(self.get_url('test_bundle'))
154
112
        info = bzrlib.bundle.read_mergeable_from_url(url,
155
113
            possible_transports=possible_transports)