~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_fetch.py

Got the bzrdir api straightened out, plenty of refactoring to use it pending, but the api is up and running.

Show diffs side-by-side

added added

removed removed

Lines of Context:
34
34
 
35
35
def fetch_steps(self, br_a, br_b, writable_a):
36
36
    """A foreign test method for testing fetch locally and remotely."""
37
 
    def new_branch(name):
38
 
        os.mkdir(name)
39
 
        return WorkingTree.create_standalone(name).branch
40
37
     
41
38
    # TODO RBC 20060201 make this a repository test.
42
39
    repo_b = br_b.repository
44
41
    self.assertTrue(repo_b.has_revision(br_a.revision_history()[2]))
45
42
    self.assertEquals(len(br_b.revision_history()), 7)
46
43
    self.assertEquals(greedy_fetch(br_b, br_a, br_a.revision_history()[2])[0], 0)
47
 
 
48
44
    # greedy_fetch is not supposed to alter the revision history
49
45
    self.assertEquals(len(br_b.revision_history()), 7)
50
46
    self.assertFalse(repo_b.has_revision(br_a.revision_history()[3]))
51
47
 
52
 
    self.assertEquals(len(br_b.revision_history()), 7)
 
48
    # fetching the next revision up in sample data copies one revision
53
49
    self.assertEquals(greedy_fetch(br_b, br_a, br_a.revision_history()[3])[0], 1)
54
50
    self.assertTrue(repo_b.has_revision(br_a.revision_history()[3]))
55
51
    self.assertFalse(has_revision(br_a, br_b.revision_history()[6]))
57
53
 
58
54
    # When a non-branch ancestor is missing, it should be unlisted...
59
55
    # as its not reference from the inventory weave.
60
 
    br_b4 = new_branch('br_4')
 
56
    br_b4 = self.make_branch('br_4')
61
57
    count, failures = greedy_fetch(br_b4, br_b)
62
58
    self.assertEqual(count, 7)
63
59
    self.assertEqual(failures, [])
66
62
    self.assertTrue(has_revision(br_a, br_b.revision_history()[3]))
67
63
    self.assertTrue(has_revision(br_a, br_b.revision_history()[4]))
68
64
        
69
 
    br_b2 = new_branch('br_b2')
 
65
    br_b2 = self.make_branch('br_b2')
70
66
    self.assertEquals(greedy_fetch(br_b2, br_b)[0], 7)
71
67
    self.assertTrue(has_revision(br_b2, br_b.revision_history()[4]))
72
68
    self.assertTrue(has_revision(br_b2, br_a.revision_history()[2]))
73
69
    self.assertFalse(has_revision(br_b2, br_a.revision_history()[3]))
74
70
 
75
 
    br_a2 = new_branch('br_a2')
 
71
    br_a2 = self.make_branch('br_a2')
76
72
    self.assertEquals(greedy_fetch(br_a2, br_a)[0], 9)
77
73
    self.assertTrue(has_revision(br_a2, br_b.revision_history()[4]))
78
74
    self.assertTrue(has_revision(br_a2, br_a.revision_history()[3]))
79
75
    self.assertTrue(has_revision(br_a2, br_a.revision_history()[2]))
80
76
 
81
 
    br_a3 = new_branch('br_a3')
 
77
    br_a3 = self.make_branch('br_a3')
82
78
    # pulling a branch with no revisions grabs nothing, regardless of 
83
79
    # whats in the inventory.
84
80
    self.assertEquals(greedy_fetch(br_a3, br_a2)[0], 0)
131
127
        wt1 = self.make_branch_and_tree('br1')
132
128
        br1 = wt1.branch
133
129
        wt1.commit(message='rev 1-1', rev_id='1-1')
134
 
        br2 = br1.clone('br2')
 
130
        dir_2 = br1.bzrdir.sprout('br2')
 
131
        br2 = dir_2.open_branch()
135
132
        wt1.commit(message='rev 1-2', rev_id='1-2')
136
 
        WorkingTree.create(br2, 'br2').commit(message='rev 2-1', rev_id='2-1')
 
133
        dir_2.open_workingtree().commit(message='rev 2-1', rev_id='2-1')
137
134
        merge(other_revision=['br1', -1], base_revision=[None, None], 
138
135
              this_dir='br2')
139
136
        self._check_revs_present(br2)
155
152
        self.build_tree_contents([('br1/file', 'original contents\n')])
156
153
        wt1.add('file', 'this-file-id')
157
154
        wt1.commit(message='rev 1-1', rev_id='1-1')
158
 
        br2 = br1.clone('br2')
159
 
        wt2 = WorkingTree('br2', br2)
 
155
        dir_2 = br1.bzrdir.sprout('br2')
 
156
        br2 = dir_2.open_branch()
 
157
        wt2 = dir_2.open_workingtree()
160
158
        self.build_tree_contents([('br1/file', 'original from 1\n')])
161
159
        wt1.commit(message='rev 1-2', rev_id='1-2')
162
160
        self.build_tree_contents([('br1/file', 'agreement\n')])
187
185
 
188
186
    def test_fetch(self):
189
187
        #highest indices a: 5, b: 7
190
 
        print "TestHttpFetch.test_fetch disabled during transition."
191
 
        return
192
188
        br_a, br_b = make_branches(self)
193
 
        br_rem_a = Branch.open(self.get_remote_url(br_a.base))
 
189
        br_rem_a = Branch.open(self.get_readonly_url('branch1'))
194
190
        fetch_steps(self, br_rem_a, br_b, br_a)
195
191
 
196
192
    def test_weaves_are_retrieved_once(self):
197
193
        self.build_tree(("source/", "source/file", "target/"))
198
 
        wt = WorkingTree.create_standalone('source')
 
194
        wt = self.make_branch_and_tree('source')
199
195
        branch = wt.branch
200
196
        wt.add(["file"], ["id"])
201
197
        wt.commit("added file")
202
198
        print >>open("source/file", 'w'), "blah"
203
199
        wt.commit("changed file")
204
200
        target = BzrDir.create_branch_and_repo("target/")
205
 
        source = Branch.open(self.get_remote_url("source/"))
 
201
        source = Branch.open(self.get_readonly_url("source/"))
206
202
        self.assertEqual(greedy_fetch(target, source), (2, []))
207
203
        # this is the path to the literal file. As format changes 
208
204
        # occur it needs to be updated. FIXME: ask the store for the
209
205
        # path.
210
206
        weave_suffix = 'weaves/ce/id.weave HTTP/1.1" 200 -'
211
207
        self.assertEqual(1,
212
 
            len([log for log in self.server.logs if log.endswith(weave_suffix)]))
 
208
            len([log for log in self.get_readonly_server().logs if log.endswith(weave_suffix)]))
213
209
        inventory_weave_suffix = 'inventory.weave HTTP/1.1" 200 -'
214
210
        self.assertEqual(1,
215
 
            len([log for log in self.server.logs if log.endswith(
 
211
            len([log for log in self.get_readonly_server().logs if log.endswith(
216
212
                inventory_weave_suffix)]))
217
213
        # this r-h check test will prevent regressions, but it currently already 
218
214
        # passes, before the patch to cache-rh is applied :[
219
215
        revision_history_suffix = 'revision-history HTTP/1.1" 200 -'
220
216
        self.assertEqual(1,
221
 
            len([log for log in self.server.logs if log.endswith(
 
217
            len([log for log in self.get_readonly_server().logs if log.endswith(
222
218
                revision_history_suffix)]))
223
219
        # FIXME naughty poking in there.
224
 
        self.server.logs = []
 
220
        self.get_readonly_server().logs = []
225
221
        # check there is nothing more to fetch
226
 
        source = Branch.open(self.get_remote_url("source/"))
 
222
        source = Branch.open(self.get_readonly_url("source/"))
227
223
        self.assertEqual(greedy_fetch(target, source), (0, []))
228
 
        self.failUnless(self.server.logs[0].endswith('branch-format HTTP/1.1" 200 -'))
229
 
        self.failUnless(self.server.logs[1].endswith('revision-history HTTP/1.1" 200 -'))
230
 
        self.assertEqual(2, len(self.server.logs))
 
224
        self.failUnless(self.get_readonly_server().logs[0].endswith('branch-format HTTP/1.1" 200 -'))
 
225
        self.failUnless(self.get_readonly_server().logs[1].endswith('revision-history HTTP/1.1" 200 -'))
 
226
        self.assertEqual(2, len(self.get_readonly_server().logs))