[PATCH 2 of 4 clfilter] test: use proper subclassing in `test-issue2137.t`

Pierre-Yves David pierre-yves.david at ens-lyon.org
Tue Oct 16 16:20:14 CDT 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at ens-lyon.org>
# Date 1350421927 -7200
# Node ID 004e3ec9205a28be51e00a0e1b78eaee64d0a699
# Parent  65e7dd7689c4078c077c3356421e966a6a8d5dbb
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.

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