diff 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
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/tests/test_hooks.py
@@ -0,0 +1,48 @@
+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(stupid=False, 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)
+
+def suite():
+    return unittest.findTestCases(sys.modules[__name__])