/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

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2019-06-04 00:08:59 UTC
  • mfrom: (7122.6.12 win-symlink-warning)
  • Revision ID: breezy.the.bot@gmail.com-20190604000859-2xwms4tkctrj83dm
Allow symbolic links to exist when checking out trees on Windows.

Merged from https://code.launchpad.net/~jelmer/brz/win-symlink-warning/+merge/363900

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
806
807
                            u'\N{Euro Sign}wizard2',
807
808
                            u'b\N{Euro Sign}hind_curtain')
808
809
 
809
 
    def test_unable_create_symlink(self):
 
810
    def test_unsupported_symlink_no_conflict(self):
810
811
        def tt_helper():
811
812
            wt = self.make_branch_and_tree('.')
812
 
            tt = TreeTransform(wt)  # TreeTransform obtains write lock
813
 
            try:
814
 
                tt.new_symlink('foo', tt.root, 'bar')
815
 
                tt.apply()
816
 
            finally:
817
 
                wt.unlock()
 
813
            tt = TreeTransform(wt)
 
814
            self.addCleanup(tt.finalize)
 
815
            tt.new_symlink('foo', tt.root, 'bar')
 
816
            result = tt.find_conflicts()
 
817
            self.assertEqual([], result)
818
818
        os_symlink = getattr(os, 'symlink', None)
819
819
        os.symlink = None
820
820
        try:
821
 
            err = self.assertRaises(errors.UnableCreateSymlink, tt_helper)
822
 
            self.assertEqual(
823
 
                "Unable to create symlink 'foo' on this platform",
824
 
                str(err))
 
821
            tt_helper()
825
822
        finally:
826
823
            if os_symlink:
827
824
                os.symlink = os_symlink
1598
1595
        self.addCleanup(wt.unlock)
1599
1596
        self.assertEqual(wt.kind("foo"), "symlink")
1600
1597
 
 
1598
    def test_file_to_symlink_unsupported(self):
 
1599
        wt = self.make_branch_and_tree('.')
 
1600
        self.build_tree(['foo'])
 
1601
        wt.add(['foo'])
 
1602
        wt.commit("one")
 
1603
        self.overrideAttr(osutils, 'supports_symlinks', lambda p: False)
 
1604
        tt = TreeTransform(wt)
 
1605
        self.addCleanup(tt.finalize)
 
1606
        foo_trans_id = tt.trans_id_tree_path("foo")
 
1607
        tt.delete_contents(foo_trans_id)
 
1608
        log = BytesIO()
 
1609
        trace.push_log_file(log)
 
1610
        tt.create_symlink("bar", foo_trans_id)
 
1611
        tt.apply()
 
1612
        self.assertContainsRe(
 
1613
            log.getvalue(),
 
1614
            b'Unable to create symlink "foo" on this filesystem')
 
1615
 
1601
1616
    def test_dir_to_file(self):
1602
1617
        wt = self.make_branch_and_tree('.')
1603
1618
        self.build_tree(['foo/', 'foo/bar'])
2809
2824
        # 3 lines of diff administrivia
2810
2825
        self.assertEqual(lines[4], b"+content B")
2811
2826
 
 
2827
    def test_unsupported_symlink_diff(self):
 
2828
        self.requireFeature(SymlinkFeature)
 
2829
        tree = self.make_branch_and_tree('.')
 
2830
        self.build_tree_contents([('a', 'content 1')])
 
2831
        tree.set_root_id(b'TREE_ROOT')
 
2832
        tree.add('a', b'a-id')
 
2833
        os.symlink('a', 'foo')
 
2834
        tree.add('foo', b'foo-id')
 
2835
        tree.commit('rev1', rev_id=b'rev1')
 
2836
        revision_tree = tree.branch.repository.revision_tree(b'rev1')
 
2837
        preview = TransformPreview(revision_tree)
 
2838
        self.addCleanup(preview.finalize)
 
2839
        preview.delete_versioned(preview.trans_id_tree_path('foo'))
 
2840
        preview_tree = preview.get_preview_tree()
 
2841
        out = StringIO()
 
2842
        log = BytesIO()
 
2843
        trace.push_log_file(log)
 
2844
        os_symlink = getattr(os, 'symlink', None)
 
2845
        os.symlink = None
 
2846
        try:
 
2847
            show_diff_trees(revision_tree, preview_tree, out)
 
2848
            lines = out.getvalue().splitlines()
 
2849
        finally:
 
2850
            if os_symlink:
 
2851
                os.symlink = os_symlink
 
2852
        self.assertContainsRe(
 
2853
            log.getvalue(),
 
2854
            b'Ignoring "foo" as symlinks are not supported on this filesystem')
 
2855
 
2812
2856
    def test_transform_conflicts(self):
2813
2857
        revision_tree = self.create_tree()
2814
2858
        preview = TransformPreview(revision_tree)