comparison tests/test_hooks.py @ 919:92bd7b3678ea

Add a changegroup hook to update svn metadata
author Brad Hall <bhall@fb.com>
date Thu, 07 Jun 2012 16:29:05 -0700
parents
children d741f536f23a
comparison
equal deleted inserted replaced
918:761a87134501 919:92bd7b3678ea
1 import sys
2 import test_util
3 import unittest
4
5 from mercurial import hg
6 from mercurial import commands
7
8 class TestHooks(test_util.TestBase):
9 def setUp(self):
10 super(TestHooks, self).setUp()
11
12 def _loadupdate(self, fixture_name, *args, **kwargs):
13 kwargs = kwargs.copy()
14 kwargs.update(stupid=False, noupdate=False)
15 repo, repo_path = self.load_and_fetch(fixture_name, *args, **kwargs)
16 return repo, repo_path
17
18 def test_updatemetahook(self):
19 repo, repo_path = self._loadupdate('single_rev.svndump')
20 state = repo.parents()
21 self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed'})
22 commands.pull(self.repo.ui, self.repo)
23
24 # Clone to a new repository and add a hook
25 new_wc_path = "%s-2" % self.wc_path
26 commands.clone(self.repo.ui, self.wc_path, new_wc_path)
27 newrepo = hg.repository(test_util.testui(), new_wc_path)
28 newrepo.ui.setconfig('hooks', 'changegroup.meta',
29 'python:hgsubversion.hooks.updatemeta.hook')
30
31 # Commit a rev that should trigger svn meta update
32 self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed Again'})
33 commands.pull(self.repo.ui, self.repo)
34
35 self.called = False
36 import hgsubversion.svncommands
37 oldupdatemeta = hgsubversion.svncommands.updatemeta
38 def _updatemeta(ui, repo, args=[]):
39 self.called = True
40 hgsubversion.svncommands.updatemeta = _updatemeta
41
42 # Pull and make sure our updatemeta function gets called
43 commands.pull(newrepo.ui, newrepo)
44 hgsubversion.svncommands.updatemeta = oldupdatemeta
45 self.assertTrue(self.called)
46
47 def suite():
48 return unittest.findTestCases(sys.modules[__name__])