from__future__importwith_statementimportdatetimefrombaseimportBackendTestMixinfromconfimportSCM_TESTSfromrhodecode.lib.vcs.nodesimportFileNodefromrhodecode.lib.vcs.utils.compatimportunittestclassGetsliceTestCaseMixin(BackendTestMixin):@classmethoddef_get_commits(cls):start_date=datetime.datetime(2010,1,1,20)forxinxrange(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),],}deftest__getslice__last_item_is_tip(self):self.assertEqual(list(self.repo[-1:])[0],self.repo.get_changeset())deftest__getslice__respects_start_index(self):self.assertEqual(list(self.repo[2:]),[self.repo.get_changeset(rev)forrevinself.repo.revisions[2:]])deftest__getslice__respects_negative_start_index(self):self.assertEqual(list(self.repo[-2:]),[self.repo.get_changeset(rev)forrevinself.repo.revisions[-2:]])deftest__getslice__respects_end_index(self):self.assertEqual(list(self.repo[:2]),[self.repo.get_changeset(rev)forrevinself.repo.revisions[:2]])deftest__getslice__respects_negative_end_index(self):self.assertEqual(list(self.repo[:-2]),[self.repo.get_changeset(rev)forrevinself.repo.revisions[:-2]])# For each backend create test case classforaliasinSCM_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()