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.
--- 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