~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_delta.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-01-15 16:31:04 UTC
  • mfrom: (3941.1.1 bzr.integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090115163104-30i51kcr1zepm2f7
(vila) Allows deltas to be filtered by log formatters

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
import os
18
 
from StringIO import StringIO
 
18
from cStringIO import StringIO
19
19
 
20
20
from bzrlib import (
21
21
    delta as _mod_delta,
 
22
    revision as _mod_revision,
22
23
    tests,
23
24
    )
24
25
 
187
188
                           exe_change=False)
188
189
 
189
190
 
190
 
class TestChangesFrom (tests.TestCaseWithTransport):
 
191
class TestChangesFrom(tests.TestCaseWithTransport):
191
192
 
192
193
    def show_string(self, delta, *args,  **kwargs):
193
194
        to_file = StringIO()
238
239
                           True, False)], delta.renamed)
239
240
        self.assertTrue(delta.has_changed())
240
241
        self.assertTrue(delta.touches_file_id('file-id'))
 
242
 
 
243
 
 
244
class TestDeltaShow(tests.TestCaseWithTransport):
 
245
 
 
246
    def _get_delta(self):
 
247
        # We build the delta from a real tree to avoid depending on internal
 
248
        # implementation details.
 
249
        wt = self.make_branch_and_tree('branch')
 
250
        self.build_tree_contents([('branch/f1', '1\n'),
 
251
                                  ('branch/f2', '2\n'),
 
252
                                  ('branch/f3', '3\n'),
 
253
                                  ('branch/f4', '4\n'),
 
254
                                  ('branch/dir/',),
 
255
                                 ])
 
256
        wt.add(['f1', 'f2', 'f3', 'f4', 'dir'],
 
257
               ['f1-id', 'f2-id', 'f3-id', 'f4-id', 'dir-id'])
 
258
        wt.commit('commit one', rev_id='1')
 
259
 
 
260
        long_status = """added:
 
261
  dir/
 
262
  f1
 
263
  f2
 
264
  f3
 
265
  f4
 
266
"""
 
267
        short_status = """A  dir/
 
268
A  f1
 
269
A  f2
 
270
A  f3
 
271
A  f4
 
272
"""
 
273
 
 
274
        repo = wt.branch.repository
 
275
        d = wt.changes_from(repo.revision_tree(_mod_revision.NULL_REVISION))
 
276
        return d, long_status, short_status
 
277
 
 
278
    def test_delta_show_short_status_no_filter(self):
 
279
        d, long_status, short_status = self._get_delta()
 
280
        out = StringIO()
 
281
        d.show(out, short_status=True)
 
282
        self.assertEquals(short_status, out.getvalue())
 
283
 
 
284
    def test_delta_show_long_status_no_filter(self):
 
285
        d, long_status, short_status = self._get_delta()
 
286
        out = StringIO()
 
287
        d.show(out, short_status=False)
 
288
        self.assertEquals(long_status, out.getvalue())
 
289
 
 
290
    def test_delta_show_no_filter(self):
 
291
        d, long_status, short_status = self._get_delta()
 
292
        out = StringIO()
 
293
        def not_a_filter(path, file_id):
 
294
            return True
 
295
        d.show(out, short_status=True, filter=not_a_filter)
 
296
        self.assertEquals(short_status, out.getvalue())
 
297
 
 
298
    def test_delta_show_short_status_single_file_filter(self):
 
299
        d, long_status, short_status = self._get_delta()
 
300
        out = StringIO()
 
301
        def only_f2(path, file_id):
 
302
            return path == 'f2'
 
303
        d.show(out, short_status=True, filter=only_f2)
 
304
        self.assertEquals("A  f2\n", out.getvalue())
 
305
 
 
306
    def test_delta_show_long_status_single_file_filter(self):
 
307
        d, long_status, short_status = self._get_delta()
 
308
        out = StringIO()
 
309
        def only_f2(path, file_id):
 
310
            return path == 'f2'
 
311
        d.show(out, short_status=False, filter=only_f2)
 
312
        self.assertEquals("added:\n  f2\n", out.getvalue())
 
313
 
 
314
    def test_delta_show_short_status_single_file_id_filter(self):
 
315
        d, long_status, short_status = self._get_delta()
 
316
        out = StringIO()
 
317
        def only_f2_id(path, file_id):
 
318
            return file_id == 'f2-id'
 
319
        d.show(out, short_status=True, filter=only_f2_id)
 
320
        self.assertEquals("A  f2\n", out.getvalue())
 
321