/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
1115 by Martin Pool
- split fetch tests into a separate file
1
# Copyright (C) 2005 by 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
1238 by Martin Pool
- remove a lot of dead code from fetch
18
import sys
19
1551.8.42 by Aaron Bentley
Ensure that fetch properly updates inventory root knit
20
from bzrlib import bzrdir, repository
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
1551.8.42 by Aaron Bentley
Ensure that fetch properly updates inventory root knit
29
from bzrlib.upgrade import Convert
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
30
from bzrlib.workingtree import WorkingTree
1185.1.41 by Robert Collins
massive patch from Alexander Belchenko - many PEP8 fixes, removes unused function uuid
31
1115 by Martin Pool
- split fetch tests into a separate file
32
1238 by Martin Pool
- remove a lot of dead code from fetch
33
def has_revision(branch, revision_id):
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
34
    return branch.repository.has_revision(revision_id)
1534.4.5 by Robert Collins
Turn branch format.open into a factory.
35
1393 by Robert Collins
reenable remotebranch tests
36
def fetch_steps(self, br_a, br_b, writable_a):
37
    """A foreign test method for testing fetch locally and remotely."""
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
38
     
39
    # TODO RBC 20060201 make this a repository test.
40
    repo_b = br_b.repository
41
    self.assertFalse(repo_b.has_revision(br_a.revision_history()[3]))
42
    self.assertTrue(repo_b.has_revision(br_a.revision_history()[2]))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
43
    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.
44
    self.assertEquals(br_b.fetch(br_a, br_a.revision_history()[2])[0], 0)
45
    # branch.fetch is not supposed to alter the revision history
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
46
    self.assertEquals(len(br_b.revision_history()), 7)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
47
    self.assertFalse(repo_b.has_revision(br_a.revision_history()[3]))
1393 by Robert Collins
reenable remotebranch tests
48
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.
49
    # 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.
50
    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.
51
    self.assertTrue(repo_b.has_revision(br_a.revision_history()[3]))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
52
    self.assertFalse(has_revision(br_a, br_b.revision_history()[6]))
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
53
    self.assertTrue(br_a.repository.has_revision(br_b.revision_history()[5]))
1393 by Robert Collins
reenable remotebranch tests
54
1092.2.28 by Robert Collins
reenable test of fetching a branch with ghosts
55
    # When a non-branch ancestor is missing, it should be unlisted...
1415 by Robert Collins
remove the ancestry weave file
56
    # 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.
57
    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.
58
    count, failures = br_b4.fetch(br_b)
1092.2.28 by Robert Collins
reenable test of fetching a branch with ghosts
59
    self.assertEqual(count, 7)
60
    self.assertEqual(failures, [])
1393 by Robert Collins
reenable remotebranch tests
61
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.
62
    self.assertEqual(writable_a.fetch(br_b)[0], 1)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
63
    self.assertTrue(has_revision(br_a, br_b.revision_history()[3]))
64
    self.assertTrue(has_revision(br_a, br_b.revision_history()[4]))
1393 by Robert Collins
reenable remotebranch tests
65
        
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.
66
    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.
67
    self.assertEquals(br_b2.fetch(br_b)[0], 7)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
68
    self.assertTrue(has_revision(br_b2, br_b.revision_history()[4]))
69
    self.assertTrue(has_revision(br_b2, br_a.revision_history()[2]))
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
70
    self.assertFalse(has_revision(br_b2, br_a.revision_history()[3]))
1393 by Robert Collins
reenable remotebranch tests
71
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.
72
    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.
73
    self.assertEquals(br_a2.fetch(br_a)[0], 9)
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
74
    self.assertTrue(has_revision(br_a2, br_b.revision_history()[4]))
75
    self.assertTrue(has_revision(br_a2, br_a.revision_history()[3]))
76
    self.assertTrue(has_revision(br_a2, br_a.revision_history()[2]))
1393 by Robert Collins
reenable remotebranch tests
77
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.
78
    br_a3 = self.make_branch('br_a3')
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
79
    # pulling a branch with no revisions grabs nothing, regardless of 
80
    # 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.
81
    self.assertEquals(br_a3.fetch(br_a2)[0], 0)
1393 by Robert Collins
reenable remotebranch tests
82
    for revno in range(4):
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
83
        self.assertFalse(
84
            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.
85
    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.
86
    # 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.
87
    fetched = br_a3.fetch(br_a2, br_a.revision_history()[3])[0]
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
88
    self.assertEquals(fetched, 3, "fetched %d instead of 3" % fetched)
1393 by Robert Collins
reenable remotebranch tests
89
    # InstallFailed should be raised if the branch is missing the revision
90
    # 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.
91
    self.assertRaises(bzrlib.errors.InstallFailed, br_a3.fetch, br_a2, 'pizza')
1393 by Robert Collins
reenable remotebranch tests
92
    # InstallFailed should be raised if the branch is missing a revision
93
    # from its own revision history
94
    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.
95
    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.
96
97
    # TODO: jam 20051218 Branch should no longer allow append_revision for revisions
98
    #       which don't exist. So this test needs to be rewritten
99
    #       RBC 20060403 the way to do this is to uncommit the revision from the
100
    #           repository after the commit
101
1185.13.4 by Robert Collins
make reweave visible as a weave method, and quickly integrate into fetch
102
    #TODO: test that fetch correctly does reweaving when needed. RBC 20051008
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
103
    # Note that this means - updating the weave when ghosts are filled in to 
104
    # add the right parents.
105
1185.13.4 by Robert Collins
make reweave visible as a weave method, and quickly integrate into fetch
106
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
107
class TestFetch(TestCaseWithTransport):
1392 by Robert Collins
reinstate testfetch test case
108
109
    def test_fetch(self):
1115 by Martin Pool
- split fetch tests into a separate file
110
        #highest indices a: 5, b: 7
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
111
        br_a, br_b = make_branches(self)
1393 by Robert Collins
reenable remotebranch tests
112
        fetch_steps(self, br_a, br_b, br_a)
1404 by Robert Collins
only pull remote text weaves once per fetch operation
113
1558.4.11 by Aaron Bentley
Allow merge against self, make fetching self a noop
114
    def test_fetch_self(self):
115
        wt = self.make_branch_and_tree('br')
116
        self.assertEqual(wt.branch.fetch(wt.branch), (0, []))
117
1551.8.42 by Aaron Bentley
Ensure that fetch properly updates inventory root knit
118
    def test_fetch_root_knit(self):
119
        """Ensure that knit2 updates the root knit
120
        
121
        This tests the case where the root has been changed
122
        """
123
        knit1 = bzrdir.BzrDirMetaFormat1()
124
        knit1.repository_format = repository.RepositoryFormatKnit1()
125
        knit2 = bzrdir.BzrDirMetaFormat1()
126
        knit2.repository_format = repository.RepositoryFormatKnit2()
127
        tree = self.make_branch_and_tree('tree', knit1)
128
        tree.set_root_id('tree-root')
129
        tree.commit('rev1', rev_id='rev1')
130
        tree.commit('rev2', rev_id='rev2')
131
        Convert(tree.basedir, knit2)
132
        tree = WorkingTree.open(tree.basedir)
133
        branch = self.make_branch('branch', format=knit2)
134
        branch.pull(tree.branch, stop_revision='rev1')
135
        repo = branch.repository
136
        root_weave = repo.weave_store.get_weave('tree-root',
137
                                                repo.get_transaction())
138
        self.assertTrue('rev1' in root_weave)
139
        self.assertTrue('rev2' not in root_weave)
140
        branch.pull(tree.branch)
141
        root_weave = repo.weave_store.get_weave('tree-root',
142
                                                repo.get_transaction())
143
        self.assertTrue('rev2' in root_weave)
144
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
145
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
146
class TestMergeFetch(TestCaseWithTransport):
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
147
148
    def test_merge_fetches_unrelated(self):
149
        """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.
150
        wt1 = self.make_branch_and_tree('br1')
151
        br1 = wt1.branch
152
        wt1.commit(message='rev 1-1', rev_id='1-1')
153
        wt1.commit(message='rev 1-2', rev_id='1-2')
154
        wt2 = self.make_branch_and_tree('br2')
155
        br2 = wt2.branch
156
        wt2.commit(message='rev 2-1', rev_id='2-1')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
157
        merge(other_revision=['br1', -1], base_revision=['br1', 0],
158
              this_dir='br2')
159
        self._check_revs_present(br2)
160
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
161
    def test_merge_fetches(self):
162
        """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.
163
        wt1 = self.make_branch_and_tree('br1')
164
        br1 = wt1.branch
165
        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.
166
        dir_2 = br1.bzrdir.sprout('br2')
167
        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.
168
        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.
169
        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
170
        merge(other_revision=['br1', -1], base_revision=[None, None], 
171
              this_dir='br2')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
172
        self._check_revs_present(br2)
173
174
    def _check_revs_present(self, br2):
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
175
        for rev_id in '1-1', '1-2', '2-1':
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
176
            self.assertTrue(br2.repository.has_revision(rev_id))
177
            rev = br2.repository.get_revision(rev_id)
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
178
            self.assertEqual(rev.revision_id, rev_id)
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
179
            self.assertTrue(br2.repository.get_inventory(rev_id))
1185.16.94 by mbp at sourcefrog
New test that merge fetches revisions from source
180
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
181
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
182
class TestMergeFileHistory(TestCaseWithTransport):
183
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
184
    def setUp(self):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
185
        super(TestMergeFileHistory, self).setUp()
186
        wt1 = self.make_branch_and_tree('br1')
187
        br1 = wt1.branch
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
188
        self.build_tree_contents([('br1/file', 'original contents\n')])
1534.4.28 by Robert Collins
first cut at merge from integration.
189
        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.
190
        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.
191
        dir_2 = br1.bzrdir.sprout('br2')
192
        br2 = dir_2.open_branch()
193
        wt2 = dir_2.open_workingtree()
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
194
        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.
195
        wt1.commit(message='rev 1-2', rev_id='1-2')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
196
        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.
197
        wt1.commit(message='rev 1-3', rev_id='1-3')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
198
        self.build_tree_contents([('br2/file', 'contents in 2\n')])
1534.4.28 by Robert Collins
first cut at merge from integration.
199
        wt2.commit(message='rev 2-1', rev_id='2-1')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
200
        self.build_tree_contents([('br2/file', 'agreement\n')])
1534.4.28 by Robert Collins
first cut at merge from integration.
201
        wt2.commit(message='rev 2-2', rev_id='2-2')
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
202
203
    def test_merge_fetches_file_history(self):
204
        """Merge brings across file histories"""
205
        br2 = Branch.open('br2')
206
        merge(other_revision=['br1', -1], base_revision=[None, None], 
207
              this_dir='br2')
208
        for rev_id, text in [('1-2', 'original from 1\n'),
209
                             ('1-3', 'agreement\n'),
210
                             ('2-1', 'contents in 2\n'),
211
                             ('2-2', 'agreement\n')]:
1185.65.1 by Aaron Bentley
Refactored out ControlFiles and RevisionStore from _Branch
212
            self.assertEqualDiff(
1185.67.2 by Aaron Bentley
Renamed Branch.storage to Branch.repository
213
                br2.repository.revision_tree(
1185.65.1 by Aaron Bentley
Refactored out ControlFiles and RevisionStore from _Branch
214
                    rev_id).get_file_text('this-file-id'), text)
1185.16.96 by mbp at sourcefrog
More merge/fetch tests
215
216
1404 by Robert Collins
only pull remote text weaves once per fetch operation
217
class TestHttpFetch(TestCaseWithWebserver):
1534.4.26 by Robert Collins
Move working tree initialisation out from Branch.initialize, deprecated Branch.initialize to Branch.create.
218
    # FIXME RBC 20060124 this really isn't web specific, perhaps an
219
    # instrumented readonly transport? Can we do an instrumented
220
    # adapter and use self.get_readonly_url ?
1404 by Robert Collins
only pull remote text weaves once per fetch operation
221
222
    def test_fetch(self):
223
        #highest indices a: 5, b: 7
1185.16.145 by Martin Pool
Remove all assert statements from test cases.
224
        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.
225
        br_rem_a = Branch.open(self.get_readonly_url('branch1'))
1404 by Robert Collins
only pull remote text weaves once per fetch operation
226
        fetch_steps(self, br_rem_a, br_b, br_a)
227
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
228
    def _count_log_matches(self, target, logs):
229
        """Count the number of times the target file pattern was fetched in an http log"""
230
        log_pattern = '%s HTTP/1.1" 200 - "-" "bzr/%s' % \
231
            (target, bzrlib.__version__)
232
        c = 0
233
        for line in logs:
234
            # TODO: perhaps use a regexp instead so we can match more
235
            # precisely?
236
            if line.find(log_pattern) > -1:
237
                c += 1
238
        return c
239
1404 by Robert Collins
only pull remote text weaves once per fetch operation
240
    def test_weaves_are_retrieved_once(self):
241
        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.
242
        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.
243
        branch = wt.branch
244
        wt.add(["file"], ["id"])
245
        wt.commit("added file")
1404 by Robert Collins
only pull remote text weaves once per fetch operation
246
        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.
247
        wt.commit("changed file")
1534.4.41 by Robert Collins
Branch now uses BzrDir reasonably sanely.
248
        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.
249
        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.
250
        self.assertEqual(target.fetch(source), (2, []))
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
251
        log_pattern = '%%s HTTP/1.1" 200 - "-" "bzr/%s' % bzrlib.__version__
1430 by Robert Collins
touchup the prefixed-store patch
252
        # this is the path to the literal file. As format changes 
253
        # occur it needs to be updated. FIXME: ask the store for the
254
        # path.
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
255
        self.log("web server logs are:")
256
        http_logs = self.get_readonly_server().logs
257
        self.log('\n'.join(http_logs))
1666.1.6 by Robert Collins
Make knit the default format.
258
        # unfortunately this log entry is branch format specific. We could 
259
        # factor out the 'what files does this format use' to a method on the 
260
        # repository, which would let us to this generically. RBC 20060419
261
        self.assertEqual(1, self._count_log_matches('/ce/id.kndx', http_logs))
262
        self.assertEqual(1, self._count_log_matches('/ce/id.knit', http_logs))
263
        self.assertEqual(1, self._count_log_matches('inventory.kndx', http_logs))
1417.1.12 by Robert Collins
cache revision history during read transactions
264
        # this r-h check test will prevent regressions, but it currently already 
265
        # passes, before the patch to cache-rh is applied :[
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
266
        self.assertEqual(1, self._count_log_matches('revision-history', http_logs))
1530.1.18 by Robert Collins
unbreak test_fetch
267
        # 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.
268
        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
269
        # 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.
270
        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.
271
        self.assertEqual(target.fetch(source), (0, []))
1540.3.15 by Martin Pool
[merge] large merge to sync with bzr.dev
272
        # should make just two requests
273
        http_logs = self.get_readonly_server().logs
274
        self.log("web server logs are:")
275
        self.log('\n'.join(http_logs))
1666.1.4 by Robert Collins
* 'Metadir' is now the default disk format. This improves behaviour in
276
        self.assertEqual(1, self._count_log_matches('branch-format', http_logs))
277
        self.assertEqual(1, self._count_log_matches('branch/format', http_logs))
278
        self.assertEqual(1, self._count_log_matches('repository/format', http_logs))
279
        self.assertEqual(1, self._count_log_matches('revision-history', http_logs))
280
        self.assertEqual(4, len(http_logs))