366
361
def make_branch_and_tree(self, path, format=None):
367
362
if format is None:
368
363
format = self.bzrdir_format()
369
return TestCaseWithTransport.make_branch_and_tree(self, path, format)
364
return tests.TestCaseWithTransport.make_branch_and_tree(
371
367
def make_branch(self, path, format=None):
372
368
if format is None:
373
369
format = self.bzrdir_format()
374
return TestCaseWithTransport.make_branch(self, path, format)
370
return tests.TestCaseWithTransport.make_branch(self, path, format)
376
372
def create_bundle_text(self, base_rev_id, rev_id):
377
373
bundle_txt = StringIO()
521
517
self.assert_(not repository.has_revision(rev.revision_id),
522
518
'Revision {%s} present before applying bundle'
523
519
% rev.revision_id)
524
merge_bundle(info, to_tree, True, Merge3Merger, False, False)
520
merge_bundle(info, to_tree, True, merge.Merge3Merger, False, False)
526
522
for rev in info.real_revisions:
527
523
self.assert_(repository.has_revision(rev.revision_id),
662
658
bundle = self.get_valid_bundle('a@cset-0-6', 'a@cset-0-7')
664
def test_symlink_bundle(self):
665
self.requireFeature(SymlinkFeature)
660
def _test_symlink_bundle(self, link_name, link_target, new_link_target):
663
self.requireFeature(tests.SymlinkFeature)
666
664
self.tree1 = self.make_branch_and_tree('b1')
667
665
self.b1 = self.tree1.branch
668
667
tt = TreeTransform(self.tree1)
669
tt.new_symlink('link', tt.root, 'bar/foo', 'link-1')
668
tt.new_symlink(link_name, tt.root, link_target, link_id)
671
670
self.tree1.commit('add symlink', rev_id='l@cset-0-1')
672
self.get_valid_bundle('null:', 'l@cset-0-1')
671
bundle = self.get_valid_bundle('null:', 'l@cset-0-1')
672
if getattr(bundle ,'revision_tree', None) is not None:
673
# Not all bundle formats supports revision_tree
674
bund_tree = bundle.revision_tree(self.b1.repository, 'l@cset-0-1')
675
self.assertEqual(link_target, bund_tree.get_symlink_target(link_id))
673
677
tt = TreeTransform(self.tree1)
674
trans_id = tt.trans_id_tree_file_id('link-1')
678
trans_id = tt.trans_id_tree_file_id(link_id)
675
679
tt.adjust_path('link2', tt.root, trans_id)
676
680
tt.delete_contents(trans_id)
677
tt.create_symlink('mars', trans_id)
681
tt.create_symlink(new_link_target, trans_id)
679
683
self.tree1.commit('rename and change symlink', rev_id='l@cset-0-2')
680
self.get_valid_bundle('l@cset-0-1', 'l@cset-0-2')
684
bundle = self.get_valid_bundle('l@cset-0-1', 'l@cset-0-2')
685
if getattr(bundle ,'revision_tree', None) is not None:
686
# Not all bundle formats supports revision_tree
687
bund_tree = bundle.revision_tree(self.b1.repository, 'l@cset-0-2')
688
self.assertEqual(new_link_target,
689
bund_tree.get_symlink_target(link_id))
681
691
tt = TreeTransform(self.tree1)
682
trans_id = tt.trans_id_tree_file_id('link-1')
692
trans_id = tt.trans_id_tree_file_id(link_id)
683
693
tt.delete_contents(trans_id)
684
694
tt.create_symlink('jupiter', trans_id)
686
696
self.tree1.commit('just change symlink target', rev_id='l@cset-0-3')
687
self.get_valid_bundle('l@cset-0-2', 'l@cset-0-3')
697
bundle = self.get_valid_bundle('l@cset-0-2', 'l@cset-0-3')
688
699
tt = TreeTransform(self.tree1)
689
trans_id = tt.trans_id_tree_file_id('link-1')
700
trans_id = tt.trans_id_tree_file_id(link_id)
690
701
tt.delete_contents(trans_id)
692
703
self.tree1.commit('Delete symlink', rev_id='l@cset-0-4')
693
self.get_valid_bundle('l@cset-0-3', 'l@cset-0-4')
704
bundle = self.get_valid_bundle('l@cset-0-3', 'l@cset-0-4')
706
def test_symlink_bundle(self):
707
self._test_symlink_bundle('link', 'bar/foo', 'mars')
709
def test_unicode_symlink_bundle(self):
710
self.requireFeature(tests.UnicodeFilenameFeature)
711
self._test_symlink_bundle(u'\N{Euro Sign}link',
712
u'bar/\N{Euro Sign}foo',
713
u'mars\N{Euro Sign}')
695
715
def test_binary_bundle(self):
696
716
self.tree1 = self.make_branch_and_tree('b1')
1067
1085
bundle = read_bundle(self.create_bundle_text('null:', 'rev1')[0])
1068
1086
except errors.IncompatibleBundleFormat:
1069
raise TestSkipped("Format 0.8 doesn't work with knit3")
1087
raise tests.TestSkipped("Format 0.8 doesn't work with knit3")
1070
1088
if isinstance(bundle, v09.BundleInfo09):
1071
raise TestSkipped("Format 0.9 doesn't work with subtrees")
1089
raise tests.TestSkipped("Format 0.9 doesn't work with subtrees")
1072
1090
repo = self.make_repository('repo', format='knit')
1073
1091
self.assertRaises(errors.IncompatibleRevision,
1074
1092
bundle.install_revisions, repo)