Mercurial > hgsubversion
view tests/test_hooks.py @ 1294:9a722b5246df
maps: cache hashes() for the revmap
This fix caches the hashes() results for revision map. For big
repos the revision map can be huge (>30MB) and this fix is saving us
some time (~0.7s per every subsequent call) by avoiding reversing rev
dictionary multiple times.
author | Mateusz Kwapich <mitrandir@fb.com> |
---|---|
date | Fri, 12 Dec 2014 16:32:34 -0800 |
parents | 20850abfb91a |
children | 4f1461428334 |
line wrap: on
line source
import sys import test_util import unittest from mercurial import hg from mercurial import commands class TestHooks(test_util.TestBase): def setUp(self): super(TestHooks, self).setUp() def _loadupdate(self, fixture_name, *args, **kwargs): kwargs = kwargs.copy() kwargs.update(noupdate=False) repo, repo_path = self.load_and_fetch(fixture_name, *args, **kwargs) return repo, repo_path def test_updatemetahook(self): repo, repo_path = self._loadupdate('single_rev.svndump') state = repo.parents() self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed'}) commands.pull(self.repo.ui, self.repo) # Clone to a new repository and add a hook new_wc_path = "%s-2" % self.wc_path commands.clone(self.repo.ui, self.wc_path, new_wc_path) newrepo = hg.repository(test_util.testui(), new_wc_path) newrepo.ui.setconfig('hooks', 'changegroup.meta', 'python:hgsubversion.hooks.updatemeta.hook') # Commit a rev that should trigger svn meta update self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed Again'}) commands.pull(self.repo.ui, self.repo) self.called = False import hgsubversion.svncommands oldupdatemeta = hgsubversion.svncommands.updatemeta def _updatemeta(ui, repo, args=[]): self.called = True hgsubversion.svncommands.updatemeta = _updatemeta # Pull and make sure our updatemeta function gets called commands.pull(newrepo.ui, newrepo) hgsubversion.svncommands.updatemeta = oldupdatemeta self.assertTrue(self.called)