[PATCH 02 of 27 clfilter V2] test: use proper subclassing in `test-issue2137.t`

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Oct 8 16:37:53 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1349703349 -7200
# Node ID c205fd08ffc2bfa2b557830bc0b16bfb0cf2c9f9
# Parent  3eb798404dbe22c6f6aa552d4196a1af5370d3a9
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 `extensions.wrapfunction` will prevent the
logic to propagate to the proxy class by the man of inheritance.

We changes the extension to use subclassing as expectable.

diff --git a/tests/test-issue2137.t b/tests/test-issue2137.t
--- a/tests/test-issue2137.t
+++ b/tests/test-issue2137.t
@@ -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


More information about the Mercurial-devel mailing list