from__future__importwith_statementimportdatetimefromrhodecode.tests.vcs.baseimportBackendTestMixinfromrhodecode.tests.vcs.confimportSCM_TESTSfromrhodecode.lib.vcs.nodesimportFileNodefromrhodecode.lib.vcs.utils.compatimportunittestclassGetitemTestCaseMixin(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__getitem__last_item_is_tip(self):self.assertEqual(self.repo[-1],self.repo.get_changeset())deftest__getitem__returns_correct_items(self):changesets=[self.repo[x]forxinxrange(len(self.repo.revisions))]self.assertEqual(changesets,list(self.repo.get_changesets()))# For each backend create test case classforaliasinSCM_TESTS:attrs={'backend_alias':alias,}cls_name=''.join(('%s getitem test'%alias).title().split())bases=(GetitemTestCaseMixin,unittest.TestCase)globals()[cls_name]=type(cls_name,bases,attrs)if__name__=='__main__':unittest.main()