~bzr/ubuntu/lucid/bzr/beta-ppa

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_ignores.py

  • Committer: Martin Pool
  • Date: 2010-08-18 04:26:39 UTC
  • mfrom: (129.1.8 packaging-karmic)
  • Revision ID: mbp@sourcefrog.net-20100818042639-mjoxtngyjwiu05fo
* PPA rebuild for lucid.
* PPA rebuild for karmic.
* PPA rebuild onto jaunty.
* New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
    def test_parse_empty(self):
51
51
        ignored = ignores.parse_ignore_file(StringIO(''))
52
52
        self.assertEqual(set([]), ignored)
 
53
        
 
54
    def test_parse_non_utf8(self):
 
55
        """Lines with non utf 8 characters should be discarded."""
 
56
        ignored = ignores.parse_ignore_file(StringIO(
 
57
                'utf8filename_a\n'
 
58
                'invalid utf8\x80\n'
 
59
                'utf8filename_b\n'
 
60
                ))
 
61
        self.assertEqual(set([
 
62
                        'utf8filename_a',
 
63
                        'utf8filename_b',
 
64
                       ]), ignored)
53
65
 
54
66
 
55
67
class TestUserIgnores(TestCaseInTempDir):
132
144
    def setUp(self):
133
145
        TestCase.setUp(self)
134
146
 
135
 
        orig = ignores._runtime_ignores
136
 
        def restore():
137
 
            ignores._runtime_ignores = orig
138
 
        self.addCleanup(restore)
139
147
        # For the purposes of these tests, we must have no
140
148
        # runtime ignores
141
 
        ignores._runtime_ignores = set()
 
149
        self.overrideAttr(ignores, '_runtime_ignores', set())
142
150
 
143
151
    def test_add(self):
144
152
        """Test that we can add an entry to the list."""
157
165
 
158
166
 
159
167
class TestTreeIgnores(TestCaseWithTransport):
 
168
    
 
169
    def assertPatternsEquals(self, patterns):
 
170
        contents = open(".bzrignore", 'rU').read().strip().split('\n')
 
171
        self.assertEquals(sorted(patterns), sorted(contents))
160
172
 
161
173
    def test_new_file(self):
162
174
        tree = self.make_branch_and_tree(".")
163
175
        ignores.tree_ignores_add_patterns(tree, ["myentry"])
164
176
        self.assertTrue(tree.has_filename(".bzrignore"))
165
 
        self.assertEquals("myentry\n",
166
 
                          open(".bzrignore", 'r').read())
 
177
        self.assertPatternsEquals(["myentry"])
167
178
 
168
179
    def test_add_to_existing(self):
169
180
        tree = self.make_branch_and_tree(".")
170
181
        self.build_tree_contents([('.bzrignore', "myentry1\n")])
171
182
        tree.add([".bzrignore"])
172
183
        ignores.tree_ignores_add_patterns(tree, ["myentry2", "foo"])
173
 
        self.assertEquals("myentry1\nmyentry2\nfoo\n",
174
 
                          open(".bzrignore", 'r').read())
 
184
        self.assertPatternsEquals(["myentry1", "myentry2", "foo"])
175
185
 
176
186
    def test_adds_ending_newline(self):
177
187
        tree = self.make_branch_and_tree(".")
178
188
        self.build_tree_contents([('.bzrignore', "myentry1")])
179
189
        tree.add([".bzrignore"])
180
190
        ignores.tree_ignores_add_patterns(tree, ["myentry2"])
181
 
        self.assertEquals("myentry1\nmyentry2\n",
182
 
                          open(".bzrignore", 'r').read())
183
 
 
 
191
        self.assertPatternsEquals(["myentry1", "myentry2"])
 
192
        text = open(".bzrignore", 'r').read()
 
193
        self.assertTrue(text.endswith('\r\n') or
 
194
                        text.endswith('\n') or
 
195
                        text.endswith('\r'))
 
196
 
 
197
    def test_does_not_add_dupe(self):
 
198
        tree = self.make_branch_and_tree(".")
 
199
        self.build_tree_contents([('.bzrignore', "myentry\n")])
 
200
        tree.add([".bzrignore"])
 
201
        ignores.tree_ignores_add_patterns(tree, ["myentry"])
 
202
        self.assertPatternsEquals(["myentry"])
 
203
 
 
204
    def test_non_ascii(self):
 
205
        tree = self.make_branch_and_tree(".")
 
206
        self.build_tree_contents([('.bzrignore',
 
207
                                   u"myentry\u1234\n".encode('utf-8'))])
 
208
        tree.add([".bzrignore"])
 
209
        ignores.tree_ignores_add_patterns(tree, [u"myentry\u5678"])
 
210
        self.assertPatternsEquals([u"myentry\u1234".encode('utf-8'),
 
211
                                   u"myentry\u5678".encode('utf-8')])
 
212
 
 
213
    def test_crlf(self):
 
214
        tree = self.make_branch_and_tree(".")
 
215
        self.build_tree_contents([('.bzrignore', "myentry1\r\n")])
 
216
        tree.add([".bzrignore"])
 
217
        ignores.tree_ignores_add_patterns(tree, ["myentry2", "foo"])
 
218
        self.assertEquals(open('.bzrignore', 'rb').read(), 'myentry1\r\nmyentry2\r\nfoo\r\n')
 
219
        self.assertPatternsEquals(["myentry1", "myentry2", "foo"])