/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
2052.3.2 by John Arbash Meinel
Change Copyright .. by Canonical to Copyright ... Canonical
1
# Copyright (C) 2005 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1115 by Martin Pool
- split fetch tests into a separate file
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1115 by Martin Pool
- split fetch tests into a separate file
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1115 by Martin Pool
- split fetch tests into a separate file
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
1238 by Martin Pool
- remove a lot of dead code from fetch
16
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
17
import os
2004.1.22 by v.ladeuil+lp at free
Implements Range header handling for GET requests. Fix a test.
18
import re
1238 by Martin Pool
- remove a lot of dead code from fetch
19
import sys
20
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
21
from bzrlib.branch import Branch
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
22
from bzrlib.bzrdir import BzrDir
1534.1.16 by Robert Collins
Merge from jam-integration.
23
from bzrlib.builtins import merge
1115 by Martin Pool
- split fetch tests into a separate file
24
import bzrlib.errors
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
25
from bzrlib.tests import TestCaseWithTransport
1185.31.25 by John Arbash Meinel
Renamed all of the tests from selftest/foo.py to tests/test_foo.py
26
from bzrlib.tests.HTTPTestUtil import TestCaseWithWebserver
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
27
from bzrlib.tests.test_revision import make_branches
28
from bzrlib.trace import mutter
29
from bzrlib.workingtree import WorkingTree
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
30
1115 by Martin Pool
- split fetch tests into a separate file
31
1238 by Martin Pool
- remove a lot of dead code from fetch
32
def has_revision(branch, revision_id):
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
33
    return branch.repository.has_revision(revision_id)
1534.4.5 by Robert Collins
Turn branch format.open into a factory.
34
1393 by Robert Collins
reenable remotebranch tests
35
def fetch_steps(self, br_a, br_b, writable_a):
36
    """A foreign test method for testing fetch locally and remotely."""
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
37
     
38
    # TODO RBC 20060201 make this a repository test.
39
    repo_b = br_b.repository
40
    self.assertFalse(repo_b.has_revision(br_a.revision_history()[3]))
41
    self.assertTrue(repo_b.has_revision(br_a.revision_history()[2]))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
42
    self.assertEquals(len(br_b.revision_history()), 7)
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
43
    self.assertEquals(br_b.fetch(br_a, br_a.revision_history()[2])[0], 0)
44
    # branch.fetch is not supposed to alter the revision history
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
45
    self.assertEquals(len(br_b.revision_history()), 7)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
46
    self.assertFalse(repo_b.has_revision(br_a.revision_history()[3]))
1393 by Robert Collins
reenable remotebranch tests
47
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
48
    # fetching the next revision up in sample data copies one revision
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
49
    self.assertEquals(br_b.fetch(br_a, br_a.revision_history()[3])[0], 1)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
50
    self.assertTrue(repo_b.has_revision(br_a.revision_history()[3]))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
51
    self.assertFalse(has_revision(br_a, br_b.revision_history()[6]))
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
52
    self.assertTrue(br_a.repository.has_revision(br_b.revision_history()[5]))
1393 by Robert Collins
reenable remotebranch tests
53
1092.2.28 by Robert Collins
reenable test of fetching a branch with ghosts
54
    # When a non-branch ancestor is missing, it should be unlisted...
1415 by Robert Collins
remove the ancestry weave file
55
    # as its not reference from the inventory weave.
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
56
    br_b4 = self.make_branch('br_4')
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
57
    count, failures = br_b4.fetch(br_b)
1092.2.28 by Robert Collins
reenable test of fetching a branch with ghosts
58
    self.assertEqual(count, 7)
59
    self.assertEqual(failures, [])
1393 by Robert Collins
reenable remotebranch tests
60
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
61
    self.assertEqual(writable_a.fetch(br_b)[0], 1)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
62
    self.assertTrue(has_revision(br_a, br_b.revision_history()[3]))
63
    self.assertTrue(has_revision(br_a, br_b.revision_history()[4]))
1393 by Robert Collins
reenable remotebranch tests
64
        
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
65
    br_b2 = self.make_branch('br_b2')
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
66
    self.assertEquals(br_b2.fetch(br_b)[0], 7)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
67
    self.assertTrue(has_revision(br_b2, br_b.revision_history()[4]))
68
    self.assertTrue(has_revision(br_b2, br_a.revision_history()[2]))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
69
    self.assertFalse(has_revision(br_b2, br_a.revision_history()[3]))
1393 by Robert Collins
reenable remotebranch tests
70
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
71
    br_a2 = self.make_branch('br_a2')
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
72
    self.assertEquals(br_a2.fetch(br_a)[0], 9)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
73
    self.assertTrue(has_revision(br_a2, br_b.revision_history()[4]))
74
    self.assertTrue(has_revision(br_a2, br_a.revision_history()[3]))
75
    self.assertTrue(has_revision(br_a2, br_a.revision_history()[2]))
1393 by Robert Collins
reenable remotebranch tests
76
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
77
    br_a3 = self.make_branch('br_a3')
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
78
    # pulling a branch with no revisions grabs nothing, regardless of 
79
    # whats in the inventory.
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
80
    self.assertEquals(br_a3.fetch(br_a2)[0], 0)
1393 by Robert Collins
reenable remotebranch tests
81
    for revno in range(4):
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
82
        self.assertFalse(
83
            br_a3.repository.has_revision(br_a.revision_history()[revno]))
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
84
    self.assertEqual(br_a3.fetch(br_a2, br_a.revision_history()[2])[0], 3)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
85
    # pull the 3 revisions introduced by a@u-0-3
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
86
    fetched = br_a3.fetch(br_a2, br_a.revision_history()[3])[0]
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
87
    self.assertEquals(fetched, 3, "fetched %d instead of 3" % fetched)
1393 by Robert Collins
reenable remotebranch tests
88
    # InstallFailed should be raised if the branch is missing the revision
89
    # that was requested.
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
90
    self.assertRaises(bzrlib.errors.InstallFailed, br_a3.fetch, br_a2, 'pizza')
1393 by Robert Collins
reenable remotebranch tests
91
    # InstallFailed should be raised if the branch is missing a revision
92
    # from its own revision history
93
    br_a2.append_revision('a-b-c')
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
94
    self.assertRaises(bzrlib.errors.InstallFailed, br_a3.fetch, br_a2)
1638.1.2 by Robert Collins
Change the basis-inventory file to not have the revision-id in the file name.
95
96
    # TODO: jam 20051218 Branch should no longer allow append_revision for revisions
97
    #       which don't exist. So this test needs to be rewritten
98
    #       RBC 20060403 the way to do this is to uncommit the revision from the
99
    #           repository after the commit
100
1185.13.4 by Robert Collins
make reweave visible as a weave method, and quickly integrate into fetch
101
    #TODO: test that fetch correctly does reweaving when needed. RBC 20051008
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
102
    # Note that this means - updating the weave when ghosts are filled in to 
103
    # add the right parents.
104
1185.13.4 by Robert Collins
make reweave visible as a weave method, and quickly integrate into fetch
105
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
106
class TestFetch(TestCaseWithTransport):
1392 by Robert Collins
reinstate testfetch test case
107
108
    def test_fetch(self):
1115 by Martin Pool
- split fetch tests into a separate file
109
        #highest indices a: 5, b: 7
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
110
        br_a, br_b = make_branches(self)
1393 by Robert Collins
reenable remotebranch tests
111
        fetch_steps(self, br_a, br_b, br_a)
1404 by Robert Collins
only pull remote text weaves once per fetch operation
112
1558.4.11 by Aaron Bentley
Allow merge against self, make fetching self a noop
113
    def test_fetch_self(self):
114
        wt = self.make_branch_and_tree('br')
115
        self.assertEqual(wt.branch.fetch(wt.branch), (0, []))
116
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
117
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
118
class TestMergeFetch(TestCaseWithTransport):
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
119
120
    def test_merge_fetches_unrelated(self):
121
        """Merge brings across history from unrelated source"""
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
122
        wt1 = self.make_branch_and_tree('br1')
123
        br1 = wt1.branch
124
        wt1.commit(message='rev 1-1', rev_id='1-1')
125
        wt1.commit(message='rev 1-2', rev_id='1-2')
126
        wt2 = self.make_branch_and_tree('br2')
127
        br2 = wt2.branch
128
        wt2.commit(message='rev 2-1', rev_id='2-1')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
129
        merge(other_revision=['br1', -1], base_revision=['br1', 0],
130
              this_dir='br2')
131
        self._check_revs_present(br2)
132
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
133
    def test_merge_fetches(self):
134
        """Merge brings across history from source"""
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
135
        wt1 = self.make_branch_and_tree('br1')
136
        br1 = wt1.branch
137
        wt1.commit(message='rev 1-1', rev_id='1-1')
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
138
        dir_2 = br1.bzrdir.sprout('br2')
139
        br2 = dir_2.open_branch()
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
140
        wt1.commit(message='rev 1-2', rev_id='1-2')
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
141
        dir_2.open_workingtree().commit(message='rev 2-1', rev_id='2-1')
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
142
        merge(other_revision=['br1', -1], base_revision=[None, None], 
143
              this_dir='br2')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
144
        self._check_revs_present(br2)
145
146
    def _check_revs_present(self, br2):
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
147
        for rev_id in '1-1', '1-2', '2-1':
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
148
            self.assertTrue(br2.repository.has_revision(rev_id))
149
            rev = br2.repository.get_revision(rev_id)
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
150
            self.assertEqual(rev.revision_id, rev_id)
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
151
            self.assertTrue(br2.repository.get_inventory(rev_id))
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
152
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
153
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
154
class TestMergeFileHistory(TestCaseWithTransport):
155
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
156
    def setUp(self):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
157
        super(TestMergeFileHistory, self).setUp()
158
        wt1 = self.make_branch_and_tree('br1')
159
        br1 = wt1.branch
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
160
        self.build_tree_contents([('br1/file', 'original contents\n')])
1534.4.28 by Robert Collins
first cut at merge from integration.
161
        wt1.add('file', 'this-file-id')
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
162
        wt1.commit(message='rev 1-1', rev_id='1-1')
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
163
        dir_2 = br1.bzrdir.sprout('br2')
164
        br2 = dir_2.open_branch()
165
        wt2 = dir_2.open_workingtree()
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
166
        self.build_tree_contents([('br1/file', 'original from 1\n')])
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
167
        wt1.commit(message='rev 1-2', rev_id='1-2')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
168
        self.build_tree_contents([('br1/file', 'agreement\n')])
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
169
        wt1.commit(message='rev 1-3', rev_id='1-3')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
170
        self.build_tree_contents([('br2/file', 'contents in 2\n')])
1534.4.28 by Robert Collins
first cut at merge from integration.
171
        wt2.commit(message='rev 2-1', rev_id='2-1')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
172
        self.build_tree_contents([('br2/file', 'agreement\n')])
1534.4.28 by Robert Collins
first cut at merge from integration.
173
        wt2.commit(message='rev 2-2', rev_id='2-2')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
174
175
    def test_merge_fetches_file_history(self):
176
        """Merge brings across file histories"""
177
        br2 = Branch.open('br2')
178
        merge(other_revision=['br1', -1], base_revision=[None, None], 
179
              this_dir='br2')
180
        for rev_id, text in [('1-2', 'original from 1\n'),
181
                             ('1-3', 'agreement\n'),
182
                             ('2-1', 'contents in 2\n'),
183
                             ('2-2', 'agreement\n')]:
1185.65.1 by Aaron Bentley
Refactored out ControlFiles and RevisionStore from _Branch
184
            self.assertEqualDiff(
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
185
                br2.repository.revision_tree(
1185.65.1 by Aaron Bentley
Refactored out ControlFiles and RevisionStore from _Branch
186
                    rev_id).get_file_text('this-file-id'), text)
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
187
188
1404 by Robert Collins
only pull remote text weaves once per fetch operation
189
class TestHttpFetch(TestCaseWithWebserver):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
190
    # FIXME RBC 20060124 this really isn't web specific, perhaps an
191
    # instrumented readonly transport? Can we do an instrumented
192
    # adapter and use self.get_readonly_url ?
1404 by Robert Collins
only pull remote text weaves once per fetch operation
193
194
    def test_fetch(self):
195
        #highest indices a: 5, b: 7
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
196
        br_a, br_b = make_branches(self)
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
197
        br_rem_a = Branch.open(self.get_readonly_url('branch1'))
1404 by Robert Collins
only pull remote text weaves once per fetch operation
198
        fetch_steps(self, br_rem_a, br_b, br_a)
199
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
200
    def _count_log_matches(self, target, logs):
201
        """Count the number of times the target file pattern was fetched in an http log"""
2004.1.22 by v.ladeuil+lp at free
Implements Range header handling for GET requests. Fix a test.
202
        get_succeeds_re = re.compile(
203
            '.*"GET .*%s HTTP/1.1" 20[06] - "-" "bzr/%s' %
204
            (     target,                    bzrlib.__version__))
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
205
        c = 0
206
        for line in logs:
2004.1.22 by v.ladeuil+lp at free
Implements Range header handling for GET requests. Fix a test.
207
            if get_succeeds_re.match(line):
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
208
                c += 1
209
        return c
210
1404 by Robert Collins
only pull remote text weaves once per fetch operation
211
    def test_weaves_are_retrieved_once(self):
212
        self.build_tree(("source/", "source/file", "target/"))
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
213
        wt = self.make_branch_and_tree('source')
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
214
        branch = wt.branch
215
        wt.add(["file"], ["id"])
216
        wt.commit("added file")
1404 by Robert Collins
only pull remote text weaves once per fetch operation
217
        print >>open("source/file", 'w'), "blah"
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
218
        wt.commit("changed file")
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
219
        target = BzrDir.create_branch_and_repo("target/")
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
220
        source = Branch.open(self.get_readonly_url("source/"))
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
221
        self.assertEqual(target.fetch(source), (2, []))
1430 by Robert Collins
touchup the prefixed-store patch
222
        # this is the path to the literal file. As format changes 
223
        # occur it needs to be updated. FIXME: ask the store for the
224
        # path.
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
225
        self.log("web server logs are:")
226
        http_logs = self.get_readonly_server().logs
227
        self.log('\n'.join(http_logs))
1666.1.6 by Robert Collins
Make knit the default format.
228
        # unfortunately this log entry is branch format specific. We could 
229
        # factor out the 'what files does this format use' to a method on the 
230
        # repository, which would let us to this generically. RBC 20060419
231
        self.assertEqual(1, self._count_log_matches('/ce/id.kndx', http_logs))
232
        self.assertEqual(1, self._count_log_matches('/ce/id.knit', http_logs))
233
        self.assertEqual(1, self._count_log_matches('inventory.kndx', http_logs))
1417.1.12 by Robert Collins
cache revision history during read transactions
234
        # this r-h check test will prevent regressions, but it currently already 
235
        # passes, before the patch to cache-rh is applied :[
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
236
        self.assertEqual(1, self._count_log_matches('revision-history', http_logs))
1530.1.18 by Robert Collins
unbreak test_fetch
237
        # FIXME naughty poking in there.
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
238
        self.get_readonly_server().logs = []
1417.1.13 by Robert Collins
do not download remote ancestry.weave if the target revision we are stopping at is in our local store
239
        # check there is nothing more to fetch
1534.4.50 by Robert Collins
Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.
240
        source = Branch.open(self.get_readonly_url("source/"))
1534.1.31 by Robert Collins
Deprecated fetch.fetch and fetch.greedy_fetch for branch.fetch, and move the Repository.fetch internals to InterRepo and InterWeaveRepo.
241
        self.assertEqual(target.fetch(source), (0, []))
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
242
        # should make just two requests
243
        http_logs = self.get_readonly_server().logs
244
        self.log("web server logs are:")
245
        self.log('\n'.join(http_logs))
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
246
        self.assertEqual(1, self._count_log_matches('branch-format', http_logs))
247
        self.assertEqual(1, self._count_log_matches('branch/format', http_logs))
248
        self.assertEqual(1, self._count_log_matches('repository/format', http_logs))
249
        self.assertEqual(1, self._count_log_matches('revision-history', http_logs))
250
        self.assertEqual(4, len(http_logs))