Mercurial > kallithea
diff rhodecode/tests/vcs/test_getslice.py @ 2451:402a96fcfa22 beta
Added vcs testsuite for better integration tests + added fetching
of two new repos into test env for rhodecode
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 13 Jun 2012 23:27:33 +0200 |
parents | |
children | d7488551578e |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/tests/vcs/test_getslice.py Wed Jun 13 23:27:33 2012 +0200 @@ -0,0 +1,56 @@ +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()