test: use proper subclassing in `test-issue2137.t`.
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Tue, 16 Oct 2012 23:12:07 +0200
changeset 17802 a421459b83c0
parent 17801 03554dfc7ced
child 17803 1479572db256
test: use proper subclassing in `test-issue2137.t`. To use changelog filtering on the repository, we plan to use "proxy" object that perfectly mock a repository but with a filtered changelog. Altering the `repo.commit` function using `extensions.wrapfunction` will prevent the logic to propagate to the proxy class by the mean of inheritance. We changes the extension to use subclassing as expectable.
tests/test-issue2137.t
--- a/tests/test-issue2137.t	Thu Oct 18 00:44:32 2012 +0200
+++ b/tests/test-issue2137.t	Tue Oct 16 23:12:07 2012 +0200
@@ -12,15 +12,15 @@
   > from mercurial import extensions, node, revlog
   > 
   > def reposetup(ui, repo):
-  >     def wrapcommit(orig, *args, **kwargs):
-  >         result = orig(*args, **kwargs)
-  >         tip1 = node.short(repo.changelog.tip())
-  >         tip2 = node.short(repo.lookup(tip1))
-  >         assert tip1 == tip2
-  >         ui.write('new tip: %s\n' % tip1)
-  >         return result
-  > 
-  >     extensions.wrapfunction(repo, 'commit', wrapcommit)
+  >     class wraprepo(repo.__class__):
+  >         def commit(self, *args, **kwargs):
+  >             result = super(wraprepo, self).commit(*args, **kwargs)
+  >             tip1 = node.short(repo.changelog.tip())
+  >             tip2 = node.short(repo.lookup(tip1))
+  >             assert tip1 == tip2
+  >             ui.write('new tip: %s\n' % tip1)
+  >             return result
+  >     repo.__class__ = wraprepo
   > 
   > def extsetup(ui):
   >     revlog._maxinline = 8             # split out 00changelog.d early