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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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, TestCaseWithTransport
22
from bzrlib.tests import TestCase, TestCaseInTempDir
25
25
class TestParseIgnoreFile(TestCase):
104
104
# Create an empty file
105
105
ignores._set_user_ignores([])
107
in_patterns = ['foo/', 'bar/', 'baz\\']
107
in_patterns = ['foo/', 'bar/']
108
108
added = ignores.add_unique_user_ignores(in_patterns)
109
out_patterns = [ x.rstrip('/\\') for x in in_patterns ]
109
out_patterns = [ x.rstrip('/') for x in in_patterns ]
110
110
self.assertEqual(out_patterns, added)
111
111
self.assertEqual(set(out_patterns), ignores.get_user_ignores())
113
113
def test_add_unique(self):
114
114
"""Test that adding will not duplicate ignores"""
115
ignores._set_user_ignores(
116
['foo', './bar', u'b\xe5z', 'dir1/', 'dir3\\'])
115
ignores._set_user_ignores(['foo', './bar', u'b\xe5z', 'dir1/'])
118
117
added = ignores.add_unique_user_ignores(
119
['xxx', './bar', 'xxx', 'dir1/', 'dir2/', 'dir3\\'])
118
['xxx', './bar', 'xxx', 'dir1/', 'dir2/'])
120
119
self.assertEqual(['xxx', 'dir2'], added)
121
self.assertEqual(set(['foo', './bar', u'b\xe5z',
122
'xxx', 'dir1', 'dir2', 'dir3']),
120
self.assertEqual(set(['foo', './bar', u'b\xe5z',
121
'xxx', 'dir1', 'dir2']),
123
122
ignores.get_user_ignores())
151
150
ignores.add_runtime_ignores(['bar'])
152
151
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())