227
228
def test_pull_remember(self):
228
229
"""Pull changes from one branch to another and test parent location."""
232
self.example_branch()
233
self.runbzr('branch . ../b')
234
self.runbzr('branch . ../c')
235
file('bottles', 'wt').write('99 bottles of beer on the wall')
236
self.runbzr('add bottles')
237
self.runbzr('commit -m 99_bottles')
240
parent = b.get_parent()
230
transport = self.get_transport()
231
tree_a = self.make_branch_and_tree('branch_a')
232
branch_a = tree_a.branch
233
self.build_tree(['branch_a/a'])
235
tree_a.commit('commit a')
236
branch_b = branch_a.bzrdir.sprout('branch_b').open_branch()
237
tree_b = branch_b.bzrdir.open_workingtree()
238
branch_c = branch_a.bzrdir.sprout('branch_c').open_branch()
239
tree_c = branch_c.bzrdir.open_workingtree()
240
self.build_tree(['branch_a/b'])
242
tree_a.commit('commit b')
243
self.assertEqual(None, b.get_parent())
244
parent = branch_b.get_parent()
245
branch_b.set_parent(None)
246
self.assertEqual(None, branch_b.get_parent())
244
247
# test pull for failure without parent set
245
249
out = self.runbzr('pull', retcode=3)
246
250
self.assertEquals(out,
247
251
('','bzr: ERROR: No pull location known or specified.\n'))
248
252
# test implicit --remember when no parent set, this pull conflicts
249
file('bottles', 'wt').write('98 bottles of beer on the wall')
250
self.runbzr('add bottles')
251
self.runbzr('commit -m 98_bottles')
252
out = self.runbzr('pull ../a', retcode=3)
253
self.build_tree(['d'])
255
tree_b.commit('commit d')
256
out = self.runbzr('pull ../branch_a', retcode=3)
253
257
self.assertEquals(out,
254
258
('','bzr: ERROR: These branches have diverged. Try merge.\n'))
255
self.assertEquals(abspath(b.get_parent()), abspath(parent))
259
self.assertEquals(abspath(branch_b.get_parent()), abspath(parent))
256
260
# test implicit --remember after resolving previous failure
257
self.runbzr('uncommit --force')
261
uncommit(branch=branch_b, tree=tree_b)
262
transport.delete('branch_b/d')
258
263
self.runbzr('pull')
259
self.assertEquals(abspath(b.get_parent()), abspath(parent))
264
self.assertEquals(abspath(branch_b.get_parent()), abspath(parent))
260
265
# test explicit --remember
261
self.runbzr('pull ../c --remember')
262
self.assertEquals(abspath(b.get_parent()), abspath('../c'))
266
self.runbzr('pull ../branch_c --remember')
267
self.assertEquals(abspath(branch_b.get_parent()),
268
abspath(branch_c.bzrdir.root_transport.base))