1
# Copyright (C) 2006 Canonical Ltd
1
# Copyright (C) 2006-2010 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
17
"""Tests for handling of ignore files"""
46
50
def test_parse_empty(self):
47
51
ignored = ignores.parse_ignore_file(StringIO(''))
48
52
self.assertEqual(set([]), ignored)
54
def test_parse_non_utf8(self):
55
"""Lines with non utf 8 characters should be discarded."""
56
ignored = ignores.parse_ignore_file(StringIO(
61
self.assertEqual(set([
51
67
class TestUserIgnores(TestCaseInTempDir):
53
69
def test_create_if_missing(self):
54
70
# $HOME should be set to '.'
55
71
ignore_path = config.user_ignore_config_filename()
118
134
added = ignores.add_unique_user_ignores(
119
135
['xxx', './bar', 'xxx', 'dir1/', 'dir2/', 'dir3\\'])
120
136
self.assertEqual(['xxx', 'dir2'], added)
121
self.assertEqual(set(['foo', './bar', u'b\xe5z',
137
self.assertEqual(set(['foo', './bar', u'b\xe5z',
122
138
'xxx', 'dir1', 'dir2', 'dir3']),
123
139
ignores.get_user_ignores())
129
145
TestCase.setUp(self)
131
orig = ignores._runtime_ignores
133
ignores._runtime_ignores = orig
134
self.addCleanup(restore)
135
147
# For the purposes of these tests, we must have no
136
148
# runtime ignores
137
ignores._runtime_ignores = set()
149
self.overrideAttr(ignores, '_runtime_ignores', set())
139
151
def test_add(self):
140
152
"""Test that we can add an entry to the list."""
158
170
tree = self.make_branch_and_tree(".")
159
171
ignores.tree_ignores_add_patterns(tree, ["myentry"])
160
172
self.assertTrue(tree.has_filename(".bzrignore"))
161
self.assertEquals("myentry\n",
173
self.assertEquals("myentry\n",
162
174
open(".bzrignore", 'r').read())
164
176
def test_add_to_existing(self):
165
177
tree = self.make_branch_and_tree(".")
166
self.build_tree_contents([('.bzrignore', "myentry1\n")])
178
self.build_tree_contents([('.bzrignore', "myentry1\n")])
167
179
tree.add([".bzrignore"])
168
180
ignores.tree_ignores_add_patterns(tree, ["myentry2", "foo"])
169
self.assertEquals("myentry1\nmyentry2\nfoo\n",
181
self.assertEquals("myentry1\nmyentry2\nfoo\n",
170
182
open(".bzrignore", 'r').read())
172
184
def test_adds_ending_newline(self):
173
185
tree = self.make_branch_and_tree(".")
174
self.build_tree_contents([('.bzrignore', "myentry1")])
186
self.build_tree_contents([('.bzrignore', "myentry1")])
175
187
tree.add([".bzrignore"])
176
188
ignores.tree_ignores_add_patterns(tree, ["myentry2"])
177
self.assertEquals("myentry1\nmyentry2\n",
189
self.assertEquals("myentry1\nmyentry2\n",
178
190
open(".bzrignore", 'r').read())