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"""
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())