Mercurial > kallithea
view rhodecode/tests/vcs/test_getslice.py @ 2995:32471bd1f4ee beta
Implemented generation of changesets based
on whole diff instead of per file diff. That
can give a big speed improvement for large changesets in
repositories with large history.
- improved handling of binary files
- show renames of binary files
- implemented new diff limit functionality
- unify diff generation between hg and git
- Added binary indicators for changed files,
- added diff lib tests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 05 Nov 2012 19:57:29 +0100 |
parents | 402a96fcfa22 |
children | d7488551578e |
line wrap: on
line source
from __future__ import with_statement import datetime from base import BackendTestMixin from conf import SCM_TESTS from rhodecode.lib.vcs.nodes import FileNode from rhodecode.lib.vcs.utils.compat import unittest class GetsliceTestCaseMixin(BackendTestMixin): @classmethod def _get_commits(cls): start_date = datetime.datetime(2010, 1, 1, 20) for x in xrange(5): yield { 'message': 'Commit %d' % x, 'author': 'Joe Doe <joe.doe@example.com>', 'date': start_date + datetime.timedelta(hours=12 * x), 'added': [ FileNode('file_%d.txt' % x, content='Foobar %d' % x), ], } def test__getslice__last_item_is_tip(self): self.assertEqual(list(self.repo[-1:])[0], self.repo.get_changeset()) def test__getslice__respects_start_index(self): self.assertEqual(list(self.repo[2:]), [self.repo.get_changeset(rev) for rev in self.repo.revisions[2:]]) def test__getslice__respects_negative_start_index(self): self.assertEqual(list(self.repo[-2:]), [self.repo.get_changeset(rev) for rev in self.repo.revisions[-2:]]) def test__getslice__respects_end_index(self): self.assertEqual(list(self.repo[:2]), [self.repo.get_changeset(rev) for rev in self.repo.revisions[:2]]) def test__getslice__respects_negative_end_index(self): self.assertEqual(list(self.repo[:-2]), [self.repo.get_changeset(rev) for rev in self.repo.revisions[:-2]]) # For each backend create test case class for alias in SCM_TESTS: attrs = { 'backend_alias': alias, } cls_name = ''.join(('%s getslice test' % alias).title().split()) bases = (GetsliceTestCaseMixin, unittest.TestCase) globals()[cls_name] = type(cls_name, bases, attrs) if __name__ == '__main__': unittest.main()