58
59
'dir3/', 'dir3/baz'])
59
60
self.run_bzr(['ignore', 'dir1', 'dir2/', 'dir4\\'])
60
61
self.check_file_contents('.bzrignore', 'dir1\ndir2\ndir4\n')
61
self.assertEqual(self.run_bzr('unknowns')[0], 'dir3\n')
62
self.assertEquals(self.run_bzr('unknowns')[0], 'dir3\n')
63
64
def test_ignore_patterns(self):
64
65
tree = self.make_branch_and_tree('.')
66
self.assertEqual(list(tree.unknowns()), [])
67
self.assertEquals(list(tree.unknowns()), [])
68
69
# is_ignored() will now create the user global ignore file
69
70
# if it doesn't exist, so make sure we ignore it in our tests
72
73
self.build_tree_contents(
73
74
[('foo.tmp', '.tmp files are ignored by default')])
74
self.assertEqual(list(tree.unknowns()), [])
75
self.assertEquals(list(tree.unknowns()), [])
76
77
self.build_tree_contents([('foo.c', 'int main() {}')])
77
self.assertEqual(list(tree.unknowns()), ['foo.c'])
78
self.assertEquals(list(tree.unknowns()), ['foo.c'])
80
self.assertEqual(list(tree.unknowns()), [])
81
self.assertEquals(list(tree.unknowns()), [])
82
83
# 'ignore' works when creating the .bzrignore file
83
84
self.build_tree_contents([('foo.blah', 'blah')])
84
self.assertEqual(list(tree.unknowns()), ['foo.blah'])
85
self.assertEquals(list(tree.unknowns()), ['foo.blah'])
85
86
self.run_bzr('ignore *.blah')
86
self.assertEqual(list(tree.unknowns()), [])
87
self.assertEquals(list(tree.unknowns()), [])
87
88
self.check_file_contents('.bzrignore', '*.blah\n')
89
90
# 'ignore' works when then .bzrignore file already exists
90
91
self.build_tree_contents([('garh', 'garh')])
91
self.assertEqual(list(tree.unknowns()), ['garh'])
92
self.assertEquals(list(tree.unknowns()), ['garh'])
92
93
self.run_bzr('ignore garh')
93
self.assertEqual(list(tree.unknowns()), [])
94
self.assertEquals(list(tree.unknowns()), [])
94
95
self.check_file_contents('.bzrignore', '*.blah\ngarh\n')
96
97
def test_ignore_multiple_arguments(self):
97
98
"""'ignore' works with multiple arguments"""
98
99
tree = self.make_branch_and_tree('.')
99
100
self.build_tree(['a','b','c','d'])
100
self.assertEqual(list(tree.unknowns()), ['a', 'b', 'c', 'd'])
101
self.assertEquals(list(tree.unknowns()), ['a', 'b', 'c', 'd'])
101
102
self.run_bzr('ignore a b c')
102
self.assertEqual(list(tree.unknowns()), ['d'])
103
self.assertEquals(list(tree.unknowns()), ['d'])
103
104
self.check_file_contents('.bzrignore', 'a\nb\nc\n')
105
106
def test_ignore_no_arguments(self):
106
107
"""'ignore' with no arguments returns an error"""
107
108
self.make_branch_and_tree('.')
108
109
self.run_bzr_error(('bzr: ERROR: ignore requires at least one '
109
'NAME_PATTERN or --default-rules.\n',),
110
'NAME_PATTERN or --old-default-rules\n',),
112
def test_ignore_default_rules(self):
113
out, err = self.run_bzr(['ignore', '--default-rules'])
114
reference_set = set(ignores.USER_DEFAULTS)
115
output_set = set(out.rstrip().split('\n'))
116
self.assertEqual(reference_set, output_set)
113
def test_ignore_old_defaults(self):
114
out, err = self.run_bzr('ignore --old-default-rules')
115
self.assertContainsRe(out, 'CVS')
117
116
self.assertEqual('', err)
119
118
def test_ignore_versioned_file(self):
151
146
# If only the given pattern is used then only 'b' should match in
153
148
out, err = self.run_bzr('ignore b')
154
self.assertEqual(out,
149
self.assertEqual(out,
155
150
"Warning: the following files are version controlled"\
156
" and match your ignore pattern:\nb\n"\
157
"These files will continue to be version controlled"\
158
" unless you 'bzr remove' them.\n")
160
def test_ignore_directory(self):
161
"""Test --directory option"""
162
tree = self.make_branch_and_tree('a')
163
self.run_bzr(['ignore', '--directory=a', 'README'])
164
self.check_file_contents('a/.bzrignore', 'README\n')
166
def test_ignored_invalid_pattern(self):
167
"""Ensure graceful handling for invalid ignore pattern.
169
Test case for #300062.
170
Invalid pattern should show clear error message.
171
Invalid pattern should not be added to .bzrignore file.
173
tree = self.make_branch_and_tree('.')
174
out, err = self.run_bzr(['ignore', 'RE:*.cpp', 'foo', 'RE:['], 3)
175
self.assertEqual(out, '')
176
self.assertContainsRe(err,
177
'Invalid ignore pattern.*RE:\*\.cpp.*RE:\[', re.DOTALL)
178
self.assertNotContainsRe(err, 'foo', re.DOTALL)
179
self.assertFalse(os.path.isfile('.bzrignore'))
151
" and match your ignore pattern:\nb\n")