37
38
yield tree.abspath(subp), subp
39
def clean_tree(directory, ignored=False, detrius=False, dry_run=False):
40
def clean_tree(directory, ignored=False, detrius=False, dry_run=False,
40
42
br = Branch.open_containing(directory)
41
43
tree = br.working_tree()
42
44
deletables = iter_deletables(tree, ignored=ignored, detrius=detrius)
43
delete_items(deletables, dry_run=dry_run)
45
delete_items(deletables, dry_run=dry_run, to_file=to_file)
45
def delete_items(deletables, dry_run=False):
47
def delete_items(deletables, dry_run=False, to_file=sys.stdout):
46
48
"""Delete files in the deletables iterable"""
48
50
for path, subp in deletables:
50
print "deleting paths:"
52
print >> to_file, "deleting paths:"
54
print >> to_file, ' ', subp
55
57
shutil.rmtree(path)
61
print >> to_file, "No files deleted."
59
63
from bzrlib.selftest import TestCaseInTempDir
60
64
from unittest import makeSuite
66
from StringIO import StringIO
62
67
class TestCleanTree(TestCaseInTempDir):
63
68
def test_symlinks(self):
64
69
if has_symlinks() is False:
69
74
os.mkdir('no-die-please')
70
75
assert os.path.exists('branch/die-please')
71
76
os.mkdir('no-die-please/child')
78
clean_tree('branch', to_file=StringIO())
73
79
assert os.path.exists('no-die-please')
74
80
assert os.path.exists('no-die-please/child')