36
36
' xx \n' # whitespace
40
self.assertEqual(set(['./rootdir',
38
self.assertEqual(['./rootdir',
50
46
def test_parse_empty(self):
51
47
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([
48
self.assertEqual([], ignored)
67
51
class TestUserIgnores(TestCaseInTempDir):
69
53
def test_create_if_missing(self):
70
54
# $HOME should be set to '.'
71
55
ignore_path = config.user_ignore_config_filename()
72
56
self.failIfExists(ignore_path)
73
57
user_ignores = ignores.get_user_ignores()
74
self.assertEqual(set(ignores.USER_DEFAULTS), user_ignores)
58
self.assertEqual(ignores.USER_DEFAULTS, user_ignores)
76
60
self.failUnlessExists(ignore_path)
77
61
f = open(ignore_path, 'rb')
79
63
entries = ignores.parse_ignore_file(f)
82
self.assertEqual(set(ignores.USER_DEFAULTS), entries)
66
self.assertEqual(ignores.USER_DEFAULTS, user_ignores)
84
68
def test_use_existing(self):
85
69
patterns = ['*.o', '*.py[co]', u'\xe5*']
86
ignores._set_user_ignores(patterns)
70
ignores.set_user_ignores(patterns)
88
72
user_ignores = ignores.get_user_ignores()
89
self.assertEqual(set(patterns), user_ignores)
73
self.assertEqual(patterns, user_ignores)
91
75
def test_use_empty(self):
92
ignores._set_user_ignores([])
76
ignores.set_user_ignores([])
93
77
ignore_path = config.user_ignore_config_filename()
94
78
self.check_file_contents(ignore_path, '')
96
self.assertEqual(set([]), ignores.get_user_ignores())
80
self.assertEqual([], ignores.get_user_ignores())
98
82
def test_set(self):
99
83
patterns = ['*.py[co]', '*.py[oc]']
100
ignores._set_user_ignores(patterns)
84
ignores.set_user_ignores(patterns)
102
self.assertEqual(set(patterns), ignores.get_user_ignores())
86
self.assertEqual(patterns, ignores.get_user_ignores())
104
88
patterns = ['vim', '*.swp']
105
ignores._set_user_ignores(patterns)
106
self.assertEqual(set(patterns), ignores.get_user_ignores())
89
ignores.set_user_ignores(patterns)
90
self.assertEqual(patterns, ignores.get_user_ignores())
108
92
def test_add(self):
109
93
"""Test that adding will not duplicate ignores"""
110
94
# Create an empty file
111
ignores._set_user_ignores([])
95
ignores.set_user_ignores([])
113
97
patterns = ['foo', './bar', u'b\xe5z']
114
98
added = ignores.add_unique_user_ignores(patterns)
115
99
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())
100
self.assertEqual(patterns, ignores.get_user_ignores())
129
102
def test_add_unique(self):
130
103
"""Test that adding will not duplicate ignores"""
131
ignores._set_user_ignores(
132
['foo', './bar', u'b\xe5z', 'dir1/', 'dir3\\'])
104
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']),
106
added = ignores.add_unique_user_ignores(['xxx', './bar', 'xxx'])
107
self.assertEqual(['xxx'], added)
108
self.assertEqual(['foo', './bar', u'b\xe5z', 'xxx'],
139
109
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())