31
32
def has_revision(branch, revision_id):
33
branch.repository.get_revision_xml_file(revision_id)
35
except bzrlib.errors.NoSuchRevision:
33
return branch.repository.has_revision(revision_id)
39
35
def fetch_steps(self, br_a, br_b, writable_a):
40
36
"""A foreign test method for testing fetch locally and remotely."""
41
37
def new_branch(name):
43
39
return WorkingTree.create_standalone(name).branch
45
self.assertFalse(has_revision(br_b, br_a.revision_history()[3]))
46
self.assert_(has_revision(br_b, br_a.revision_history()[2]))
41
# TODO RBC 20060201 make this a repository test.
42
repo_b = br_b.repository
43
self.assertFalse(repo_b.has_revision(br_a.revision_history()[3]))
44
self.assertTrue(repo_b.has_revision(br_a.revision_history()[2]))
47
45
self.assertEquals(len(br_b.revision_history()), 7)
48
46
self.assertEquals(greedy_fetch(br_b, br_a, br_a.revision_history()[2])[0], 0)
50
48
# greedy_fetch is not supposed to alter the revision history
51
49
self.assertEquals(len(br_b.revision_history()), 7)
52
self.assertFalse(has_revision(br_b, br_a.revision_history()[3]))
50
self.assertFalse(repo_b.has_revision(br_a.revision_history()[3]))
54
52
self.assertEquals(len(br_b.revision_history()), 7)
55
53
self.assertEquals(greedy_fetch(br_b, br_a, br_a.revision_history()[3])[0], 1)
56
self.assert_(has_revision(br_b, br_a.revision_history()[3]))
54
self.assertTrue(repo_b.has_revision(br_a.revision_history()[3]))
57
55
self.assertFalse(has_revision(br_a, br_b.revision_history()[6]))
58
self.assert_(has_revision(br_a, br_b.revision_history()[5]))
56
self.assertTrue(br_a.repository.has_revision(br_b.revision_history()[5]))
60
58
# When a non-branch ancestor is missing, it should be unlisted...
61
59
# as its not reference from the inventory weave.
65
63
self.assertEqual(failures, [])
67
65
self.assertEqual(greedy_fetch(writable_a, br_b)[0], 1)
68
self.assert_(has_revision(br_a, br_b.revision_history()[3]))
69
self.assert_(has_revision(br_a, br_b.revision_history()[4]))
66
self.assertTrue(has_revision(br_a, br_b.revision_history()[3]))
67
self.assertTrue(has_revision(br_a, br_b.revision_history()[4]))
71
69
br_b2 = new_branch('br_b2')
72
70
self.assertEquals(greedy_fetch(br_b2, br_b)[0], 7)
73
self.assert_(has_revision(br_b2, br_b.revision_history()[4]))
74
self.assert_(has_revision(br_b2, br_a.revision_history()[2]))
71
self.assertTrue(has_revision(br_b2, br_b.revision_history()[4]))
72
self.assertTrue(has_revision(br_b2, br_a.revision_history()[2]))
75
73
self.assertFalse(has_revision(br_b2, br_a.revision_history()[3]))
77
75
br_a2 = new_branch('br_a2')
78
76
self.assertEquals(greedy_fetch(br_a2, br_a)[0], 9)
79
self.assert_(has_revision(br_a2, br_b.revision_history()[4]))
80
self.assert_(has_revision(br_a2, br_a.revision_history()[3]))
81
self.assert_(has_revision(br_a2, br_a.revision_history()[2]))
77
self.assertTrue(has_revision(br_a2, br_b.revision_history()[4]))
78
self.assertTrue(has_revision(br_a2, br_a.revision_history()[3]))
79
self.assertTrue(has_revision(br_a2, br_a.revision_history()[2]))
83
81
br_a3 = new_branch('br_a3')
82
# pulling a branch with no revisions grabs nothing, regardless of
83
# whats in the inventory.
84
84
self.assertEquals(greedy_fetch(br_a3, br_a2)[0], 0)
85
85
for revno in range(4):
86
self.assertFalse(has_revision(br_a3, br_a.revision_history()[revno]))
87
br_a3.repository.has_revision(br_a.revision_history()[revno]))
87
88
self.assertEqual(greedy_fetch(br_a3, br_a2, br_a.revision_history()[2])[0], 3)
89
# pull the 3 revisions introduced by a@u-0-3
88
90
fetched = greedy_fetch(br_a3, br_a2, br_a.revision_history()[3])[0]
89
self.assertEquals(fetched, 6, "fetched %d instead of 6" % fetched)
91
self.assertEquals(fetched, 3, "fetched %d instead of 3" % fetched)
90
92
# InstallFailed should be raised if the branch is missing the revision
91
93
# that was requested.
92
94
self.assertRaises(bzrlib.errors.InstallFailed, greedy_fetch, br_a3,
198
201
wt.commit("added file")
199
202
print >>open("source/file", 'w'), "blah"
200
203
wt.commit("changed file")
201
target = Branch.create("target/")
204
target = BzrDir.create_branch_and_repo("target/")
202
205
source = Branch.open(self.get_remote_url("source/"))
203
206
self.assertEqual(greedy_fetch(target, source), (2, []))
204
207
# this is the path to the literal file. As format changes