/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_transform.py

merge Parth's work into Breezy

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
import codecs
18
18
import errno
 
19
from io import BytesIO, StringIO
19
20
import os
20
21
import sys
21
22
import time
799
800
                            u'\N{Euro Sign}wizard2',
800
801
                            u'b\N{Euro Sign}hind_curtain')
801
802
 
802
 
    def test_unable_create_symlink(self):
 
803
    def test_unsupported_symlink_no_conflict(self):
803
804
        def tt_helper():
804
805
            wt = self.make_branch_and_tree('.')
805
 
            tt = TreeTransform(wt)  # TreeTransform obtains write lock
806
 
            try:
807
 
                tt.new_symlink('foo', tt.root, 'bar')
808
 
                tt.apply()
809
 
            finally:
810
 
                wt.unlock()
 
806
            tt = TreeTransform(wt)
 
807
            self.addCleanup(tt.finalize)
 
808
            tt.new_symlink('foo', tt.root, 'bar')
 
809
            result = tt.find_conflicts()
 
810
            self.assertEqual([], result)
811
811
        os_symlink = getattr(os, 'symlink', None)
812
812
        os.symlink = None
813
813
        try:
814
 
            err = self.assertRaises(errors.UnableCreateSymlink, tt_helper)
815
 
            self.assertEqual(
816
 
                "Unable to create symlink 'foo' on this platform",
817
 
                str(err))
 
814
            tt_helper()
818
815
        finally:
819
816
            if os_symlink:
820
817
                os.symlink = os_symlink
1567
1564
        self.addCleanup(wt.unlock)
1568
1565
        self.assertEqual(wt.kind("foo"), "symlink")
1569
1566
 
 
1567
    def test_file_to_symlink_unsupported(self):
 
1568
        wt = self.make_branch_and_tree('.')
 
1569
        self.build_tree(['foo'])
 
1570
        wt.add(['foo'])
 
1571
        wt.commit("one")
 
1572
        tt = TreeTransform(wt)
 
1573
        self.addCleanup(tt.finalize)
 
1574
        foo_trans_id = tt.trans_id_tree_path("foo")
 
1575
        tt.delete_contents(foo_trans_id)
 
1576
        log = BytesIO()
 
1577
        trace.push_log_file(log)
 
1578
        os_symlink = getattr(os, 'symlink', None)
 
1579
        os.symlink = None
 
1580
        try:
 
1581
            tt.create_symlink("bar", foo_trans_id)
 
1582
            tt.apply()
 
1583
        finally:
 
1584
            if os_symlink:
 
1585
                os.symlink = os_symlink
 
1586
        self.assertContainsRe(
 
1587
            log.getvalue(),
 
1588
            'bzr: warning: Unable to create symlink "foo" '
 
1589
            'on this platform')
 
1590
 
1570
1591
    def test_dir_to_file(self):
1571
1592
        wt = self.make_branch_and_tree('.')
1572
1593
        self.build_tree(['foo/', 'foo/bar'])
2759
2780
        # 3 lines of diff administrivia
2760
2781
        self.assertEqual(lines[4], b"+content B")
2761
2782
 
 
2783
    def test_unsupported_symlink_diff(self):
 
2784
        self.requireFeature(SymlinkFeature)
 
2785
        tree = self.make_branch_and_tree('.')
 
2786
        self.build_tree_contents([('a', 'content 1')])
 
2787
        tree.set_root_id('TREE_ROOT')
 
2788
        tree.add('a', 'a-id')
 
2789
        os.symlink('a', 'foo')
 
2790
        tree.add('foo', 'foo-id')
 
2791
        tree.commit('rev1', rev_id='rev1')
 
2792
        revision_tree = tree.branch.repository.revision_tree('rev1')
 
2793
        preview = TransformPreview(revision_tree)
 
2794
        self.addCleanup(preview.finalize)
 
2795
        preview.delete_versioned(preview.trans_id_tree_path('foo'))
 
2796
        preview_tree = preview.get_preview_tree()
 
2797
        out = StringIO()
 
2798
        log = BytesIO()
 
2799
        trace.push_log_file(log)
 
2800
        os_symlink = getattr(os, 'symlink', None)
 
2801
        os.symlink = None
 
2802
        try:
 
2803
            show_diff_trees(revision_tree, preview_tree, out)
 
2804
            lines = out.getvalue().splitlines()
 
2805
        finally:
 
2806
            if os_symlink:
 
2807
                os.symlink = os_symlink
 
2808
        self.assertContainsRe(
 
2809
            log.getvalue(),
 
2810
            'bzr: warning: Ignoring "foo" as symlinks are not supported '
 
2811
            'on this platform')
 
2812
 
2762
2813
    def test_transform_conflicts(self):
2763
2814
        revision_tree = self.create_tree()
2764
2815
        preview = TransformPreview(revision_tree)