Mercurial > public > mercurial-scm > hg
annotate tests/test-extensions-wrapfunction.py @ 31257:11831d755b51
merge: remove uses of manifest.matches
This gets rid of the manifest.matches calls in merge.py in favor of the new api.
This is part of getting rid of manifest.matches since it is O(manifest).
author | Durham Goode <durham@fb.com> |
---|---|
date | Tue, 07 Mar 2017 18:38:20 -0800 |
parents | 19578bb84731 |
children | 47e52f079a57 |
rev | line source |
---|---|
29765
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
1 from __future__ import absolute_import, print_function |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
2 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
3 from mercurial import extensions |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
4 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
5 def genwrapper(x): |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
6 def f(orig, *args, **kwds): |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
7 return [x] + orig(*args, **kwds) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
8 f.x = x |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
9 return f |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
10 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
11 def getid(wrapper): |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
12 return getattr(wrapper, 'x', '-') |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
13 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
14 wrappers = [genwrapper(i) for i in range(5)] |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
15 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
16 class dummyclass(object): |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
17 def getstack(self): |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
18 return ['orig'] |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
19 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
20 dummy = dummyclass() |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
21 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
22 def batchwrap(wrappers): |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
23 for w in wrappers: |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
24 extensions.wrapfunction(dummy, 'getstack', w) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
25 print('wrap %d: %s' % (getid(w), dummy.getstack())) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
26 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
27 def batchunwrap(wrappers): |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
28 for w in wrappers: |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
29 result = None |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
30 try: |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
31 result = extensions.unwrapfunction(dummy, 'getstack', w) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
32 msg = str(dummy.getstack()) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
33 except (ValueError, IndexError) as e: |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
34 msg = e.__class__.__name__ |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
35 print('unwrap %s: %s: %s' % (getid(w), getid(result), msg)) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
36 |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
37 batchwrap(wrappers + [wrappers[0]]) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
38 batchunwrap([(wrappers[i] if i >= 0 else None) |
19578bb84731
extensions: add unwrapfunction to undo wrapfunction
Jun Wu <quark@fb.com>
parents:
diff
changeset
|
39 for i in [3, None, 0, 4, 0, 2, 1, None]]) |