19
19
from cStringIO import StringIO
21
21
from bzrlib import config, errors, ignores
22
from bzrlib.tests import TestCase, TestCaseInTempDir
22
from bzrlib.tests import TestCase, TestCaseInTempDir, TestCaseWithTransport
25
25
class TestParseIgnoreFile(TestCase):
99
99
self.assertEqual(patterns, added)
100
100
self.assertEqual(set(patterns), ignores.get_user_ignores())
102
def test_add_directory(self):
103
"""Test that adding a directory will strip any trailing slash"""
104
# Create an empty file
105
ignores._set_user_ignores([])
107
in_patterns = ['foo/', 'bar/', 'baz\\']
108
added = ignores.add_unique_user_ignores(in_patterns)
109
out_patterns = [ x.rstrip('/\\') for x in in_patterns ]
110
self.assertEqual(out_patterns, added)
111
self.assertEqual(set(out_patterns), ignores.get_user_ignores())
102
113
def test_add_unique(self):
103
114
"""Test that adding will not duplicate ignores"""
104
ignores._set_user_ignores(['foo', './bar', u'b\xe5z'])
115
ignores._set_user_ignores(
116
['foo', './bar', u'b\xe5z', 'dir1/', 'dir3\\'])
106
added = ignores.add_unique_user_ignores(['xxx', './bar', 'xxx'])
107
self.assertEqual(['xxx'], added)
108
self.assertEqual(set(['foo', './bar', u'b\xe5z', 'xxx']),
118
added = ignores.add_unique_user_ignores(
119
['xxx', './bar', 'xxx', 'dir1/', 'dir2/', 'dir3\\'])
120
self.assertEqual(['xxx', 'dir2'], added)
121
self.assertEqual(set(['foo', './bar', u'b\xe5z',
122
'xxx', 'dir1', 'dir2', 'dir3']),
109
123
ignores.get_user_ignores())
137
151
ignores.add_runtime_ignores(['bar'])
138
152
self.assertEqual(set(['foo', 'bar']), ignores.get_runtime_ignores())
155
class TestTreeIgnores(TestCaseWithTransport):
157
def test_new_file(self):
158
tree = self.make_branch_and_tree(".")
159
ignores.tree_ignores_add_patterns(tree, ["myentry"])
160
self.assertTrue(tree.has_filename(".bzrignore"))
161
self.assertEquals("myentry\n",
162
open(".bzrignore", 'r').read())
164
def test_add_to_existing(self):
165
tree = self.make_branch_and_tree(".")
166
self.build_tree_contents([('.bzrignore', "myentry1\n")])
167
tree.add([".bzrignore"])
168
ignores.tree_ignores_add_patterns(tree, ["myentry2", "foo"])
169
self.assertEquals("myentry1\nmyentry2\nfoo\n",
170
open(".bzrignore", 'r').read())
172
def test_adds_ending_newline(self):
173
tree = self.make_branch_and_tree(".")
174
self.build_tree_contents([('.bzrignore', "myentry1")])
175
tree.add([".bzrignore"])
176
ignores.tree_ignores_add_patterns(tree, ["myentry2"])
177
self.assertEquals("myentry1\nmyentry2\n",
178
open(".bzrignore", 'r').read())