2018-01-17 14:23:44 +03:00
|
|
|
import test_hgsubversion_util
|
2012-06-08 03:29:05 +04:00
|
|
|
|
|
|
|
from mercurial import hg
|
|
|
|
from mercurial import commands
|
|
|
|
|
2018-01-17 14:23:44 +03:00
|
|
|
class TestHooks(test_hgsubversion_util.TestBase):
|
2012-06-08 03:29:05 +04:00
|
|
|
def setUp(self):
|
|
|
|
super(TestHooks, self).setUp()
|
|
|
|
|
|
|
|
def _loadupdate(self, fixture_name, *args, **kwargs):
|
|
|
|
kwargs = kwargs.copy()
|
2013-08-10 01:45:57 +04:00
|
|
|
kwargs.update(noupdate=False)
|
2012-06-08 03:29:05 +04:00
|
|
|
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')
|
|
|
|
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)
|
2018-01-17 14:23:44 +03:00
|
|
|
newrepo = hg.repository(test_hgsubversion_util.testui(), new_wc_path)
|
2012-06-08 03:29:05 +04:00
|
|
|
newrepo.ui.setconfig('hooks', 'changegroup.meta',
|
2018-01-11 03:20:54 +03:00
|
|
|
'python:hgext.hgsubversion.hooks.updatemeta.hook')
|
2012-06-08 03:29:05 +04:00
|
|
|
|
|
|
|
# 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
|
2018-01-11 03:20:54 +03:00
|
|
|
from hgext.hgsubversion import svncommands
|
|
|
|
oldupdatemeta = svncommands.updatemeta
|
2012-06-08 03:29:05 +04:00
|
|
|
def _updatemeta(ui, repo, args=[]):
|
|
|
|
self.called = True
|
2018-01-11 03:20:54 +03:00
|
|
|
svncommands.updatemeta = _updatemeta
|
2012-06-08 03:29:05 +04:00
|
|
|
|
|
|
|
# Pull and make sure our updatemeta function gets called
|
|
|
|
commands.pull(newrepo.ui, newrepo)
|
2018-01-11 03:20:54 +03:00
|
|
|
svncommands.updatemeta = oldupdatemeta
|
2012-06-08 03:29:05 +04:00
|
|
|
self.assertTrue(self.called)
|
2018-01-17 14:23:44 +03:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
import silenttestrunner
|
|
|
|
silenttestrunner.main(__name__)
|
|
|
|
|