36
36
' xx \n' # whitespace
40
self.assertEqual(set(['./rootdir',
38
self.assertEqual(['./rootdir', 'randomfile*'
50
43
def test_parse_empty(self):
51
44
ignored = ignores.parse_ignore_file(StringIO(''))
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([
45
self.assertEqual([], ignored)
67
48
class TestUserIgnores(TestCaseInTempDir):
69
50
def test_create_if_missing(self):
70
51
# $HOME should be set to '.'
71
52
ignore_path = config.user_ignore_config_filename()
72
53
self.failIfExists(ignore_path)
73
54
user_ignores = ignores.get_user_ignores()
74
self.assertEqual(set(ignores.USER_DEFAULTS), user_ignores)
55
self.assertEqual(ignores.USER_DEFAULTS, user_ignores)
76
57
self.failUnlessExists(ignore_path)
77
58
f = open(ignore_path, 'rb')
79
60
entries = ignores.parse_ignore_file(f)
82
self.assertEqual(set(ignores.USER_DEFAULTS), entries)
63
self.assertEqual(ignores.USER_DEFAULTS, user_ignores)
84
65
def test_use_existing(self):
85
66
patterns = ['*.o', '*.py[co]', u'\xe5*']
86
ignores._set_user_ignores(patterns)
67
ignores.set_user_ignores(patterns)
88
69
user_ignores = ignores.get_user_ignores()
89
self.assertEqual(set(patterns), user_ignores)
70
self.assertEqual(patterns, user_ignores)
91
72
def test_use_empty(self):
92
ignores._set_user_ignores([])
73
ignores.set_user_ignores([])
93
74
ignore_path = config.user_ignore_config_filename()
94
75
self.check_file_contents(ignore_path, '')
96
self.assertEqual(set([]), ignores.get_user_ignores())
77
self.assertEqual([], ignores.get_user_ignores())
98
79
def test_set(self):
99
80
patterns = ['*.py[co]', '*.py[oc]']
100
ignores._set_user_ignores(patterns)
81
ignores.set_user_ignores(patterns)
102
self.assertEqual(set(patterns), ignores.get_user_ignores())
83
self.assertEqual(patterns, ignores.get_user_ignores())
104
85
patterns = ['vim', '*.swp']
105
ignores._set_user_ignores(patterns)
106
self.assertEqual(set(patterns), ignores.get_user_ignores())
86
ignores.set_user_ignores(patterns)
87
self.assertEqual(patterns, ignores.get_user_ignores())
108
89
def test_add(self):
109
90
"""Test that adding will not duplicate ignores"""
110
91
# Create an empty file
111
ignores._set_user_ignores([])
92
ignores.set_user_ignores([])
113
94
patterns = ['foo', './bar', u'b\xe5z']
114
95
added = ignores.add_unique_user_ignores(patterns)
115
96
self.assertEqual(patterns, added)
116
self.assertEqual(set(patterns), ignores.get_user_ignores())
118
def test_add_directory(self):
119
"""Test that adding a directory will strip any trailing slash"""
120
# Create an empty file
121
ignores._set_user_ignores([])
123
in_patterns = ['foo/', 'bar/', 'baz\\']
124
added = ignores.add_unique_user_ignores(in_patterns)
125
out_patterns = [ x.rstrip('/\\') for x in in_patterns ]
126
self.assertEqual(out_patterns, added)
127
self.assertEqual(set(out_patterns), ignores.get_user_ignores())
97
self.assertEqual(patterns, ignores.get_user_ignores())
129
99
def test_add_unique(self):
130
100
"""Test that adding will not duplicate ignores"""
131
ignores._set_user_ignores(
132
['foo', './bar', u'b\xe5z', 'dir1/', 'dir3\\'])
101
ignores.set_user_ignores(['foo', './bar', u'b\xe5z'])
134
added = ignores.add_unique_user_ignores(
135
['xxx', './bar', 'xxx', 'dir1/', 'dir2/', 'dir3\\'])
136
self.assertEqual(['xxx', 'dir2'], added)
137
self.assertEqual(set(['foo', './bar', u'b\xe5z',
138
'xxx', 'dir1', 'dir2', 'dir3']),
103
added = ignores.add_unique_user_ignores(['xxx', './bar', 'xxx'])
104
self.assertEqual(['xxx'], added)
105
self.assertEqual(['foo', './bar', u'b\xe5z', 'xxx'],
139
106
ignores.get_user_ignores())
142
class TestRuntimeIgnores(TestCase):
147
# For the purposes of these tests, we must have no
149
self.overrideAttr(ignores, '_runtime_ignores', set())
152
"""Test that we can add an entry to the list."""
153
self.assertEqual(set(), ignores.get_runtime_ignores())
155
ignores.add_runtime_ignores(['foo'])
156
self.assertEqual(set(['foo']), ignores.get_runtime_ignores())
158
def test_add_duplicate(self):
159
"""Adding the same ignore twice shouldn't add a new entry."""
160
ignores.add_runtime_ignores(['foo', 'bar'])
161
self.assertEqual(set(['foo', 'bar']), ignores.get_runtime_ignores())
163
ignores.add_runtime_ignores(['bar'])
164
self.assertEqual(set(['foo', 'bar']), ignores.get_runtime_ignores())
167
class TestTreeIgnores(TestCaseWithTransport):
169
def test_new_file(self):
170
tree = self.make_branch_and_tree(".")
171
ignores.tree_ignores_add_patterns(tree, ["myentry"])
172
self.assertTrue(tree.has_filename(".bzrignore"))
173
self.assertEquals("myentry\n",
174
open(".bzrignore", 'r').read())
176
def test_add_to_existing(self):
177
tree = self.make_branch_and_tree(".")
178
self.build_tree_contents([('.bzrignore', "myentry1\n")])
179
tree.add([".bzrignore"])
180
ignores.tree_ignores_add_patterns(tree, ["myentry2", "foo"])
181
self.assertEquals("myentry1\nmyentry2\nfoo\n",
182
open(".bzrignore", 'r').read())
184
def test_adds_ending_newline(self):
185
tree = self.make_branch_and_tree(".")
186
self.build_tree_contents([('.bzrignore', "myentry1")])
187
tree.add([".bzrignore"])
188
ignores.tree_ignores_add_patterns(tree, ["myentry2"])
189
self.assertEquals("myentry1\nmyentry2\n",
190
open(".bzrignore", 'r').read())