/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_clean_tree.py

  • Committer: Breezy landing bot
  • Author(s): Colin Watson
  • Date: 2020-11-16 21:47:08 UTC
  • mfrom: (7521.1.1 remove-lp-workaround)
  • Revision ID: breezy.the.bot@gmail.com-20201116214708-jos209mgxi41oy15
Remove breezy.git workaround for bazaar.launchpad.net.

Merged from https://code.launchpad.net/~cjwatson/brz/remove-lp-workaround/+merge/393710

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import shutil
21
21
import sys
22
22
 
23
 
from bzrlib import tests, ui
24
 
from bzrlib.controldir import (
 
23
from .. import tests, ui
 
24
from ..controldir import (
25
25
    ControlDir,
26
26
    )
27
 
from bzrlib.clean_tree import (
 
27
from ..clean_tree import (
28
28
    clean_tree,
29
29
    iter_deletables,
30
30
    )
31
 
from bzrlib.osutils import (
 
31
from ..osutils import (
32
32
    has_symlinks,
33
33
    )
34
 
from bzrlib.tests import (
 
34
from . import (
35
35
    TestCaseInTempDir,
36
36
    )
37
37
 
56
56
        """Files are selected for deletion appropriately"""
57
57
        os.mkdir('branch')
58
58
        tree = ControlDir.create_standalone_workingtree('branch')
59
 
        transport = tree.bzrdir.root_transport
60
 
        transport.put_bytes('.bzrignore', '*~\n*.pyc\n.bzrignore\n')
61
 
        transport.put_bytes('file.BASE', 'contents')
62
 
        tree.lock_write()
63
 
        try:
 
59
        transport = tree.controldir.root_transport
 
60
        transport.put_bytes('.bzrignore', b'*~\n*.pyc\n.bzrignore\n')
 
61
        transport.put_bytes('file.BASE', b'contents')
 
62
        with tree.lock_write():
64
63
            self.assertEqual(len(list(iter_deletables(tree, unknown=True))), 1)
65
 
            transport.put_bytes('file', 'contents')
66
 
            transport.put_bytes('file~', 'contents')
67
 
            transport.put_bytes('file.pyc', 'contents')
68
 
            dels = sorted([r for a,r in iter_deletables(tree, unknown=True)])
 
64
            transport.put_bytes('file', b'contents')
 
65
            transport.put_bytes('file~', b'contents')
 
66
            transport.put_bytes('file.pyc', b'contents')
 
67
            dels = sorted([r for a, r in iter_deletables(tree, unknown=True)])
69
68
            self.assertEqual(['file', 'file.BASE'], dels)
70
69
 
71
 
            dels = [r for a,r in iter_deletables(tree, detritus=True)]
 
70
            dels = [r for a, r in iter_deletables(tree, detritus=True)]
72
71
            self.assertEqual(sorted(['file~', 'file.BASE']), dels)
73
72
 
74
 
            dels = [r for a,r in iter_deletables(tree, ignored=True)]
 
73
            dels = [r for a, r in iter_deletables(tree, ignored=True)]
75
74
            self.assertEqual(sorted(['file~', 'file.pyc', '.bzrignore']),
76
75
                             dels)
77
76
 
78
 
            dels = [r for a,r in iter_deletables(tree, unknown=False)]
 
77
            dels = [r for a, r in iter_deletables(tree, unknown=False)]
79
78
            self.assertEqual([], dels)
80
 
        finally:
81
 
            tree.unlock()
82
79
 
83
80
    def test_delete_items_warnings(self):
84
81
        """Ensure delete_items issues warnings on EACCES. (bug #430785)
103
100
            # proper excinfo that needs to be passed to onerror
104
101
            try:
105
102
                raise OSError
106
 
            except OSError, e:
 
103
            except OSError as e:
107
104
                e.errno = errno.EACCES
108
105
                excinfo = sys.exc_info()
109
106
                function = os.remove
113
110
                    # be shown to the user.
114
111
                    function = os.listdir
115
112
                onerror(function=function,
116
 
                    path=path, excinfo=excinfo)
 
113
                        path=path, excinfo=excinfo)
117
114
 
118
115
        self.overrideAttr(os, 'unlink', _dummy_unlink)
119
116
        self.overrideAttr(shutil, 'rmtree', _dummy_rmtree)
120
 
        stdout = tests.StringIOWrapper()
121
 
        stderr = tests.StringIOWrapper()
122
 
        ui.ui_factory = tests.TestUIFactory(stdout=stdout, stderr=stderr)
 
117
        ui.ui_factory = tests.TestUIFactory()
 
118
        stderr = ui.ui_factory.stderr
123
119
 
124
120
        ControlDir.create_standalone_workingtree('.')
125
121
        self.build_tree(['0foo', '1bar', '2baz', 'subdir0/'])
126
122
        clean_tree('.', unknown=True, no_prompt=True)
127
123
        self.assertContainsRe(stderr.getvalue(),
128
 
            'bzr: warning: unable to remove.*0foo')
 
124
                              'bzr: warning: unable to remove.*0foo')
129
125
        self.assertContainsRe(stderr.getvalue(),
130
 
            'bzr: warning: unable to remove.*subdir0')
 
126
                              'bzr: warning: unable to remove.*subdir0')
131
127
 
132
128
        # Ensure that error other than EACCES during os.remove are
133
129
        # not turned into warnings.
134
130
        self.build_tree(['subdir1/'])
135
131
        self.assertRaises(OSError, clean_tree, '.',
136
 
            unknown=True, no_prompt=True)
137
 
 
 
132
                          unknown=True, no_prompt=True)