comparison tests/test-extensions-wrapfunction.py @ 43076:2372284d9457

formatting: blacken the codebase This is using my patch to black (https://github.com/psf/black/pull/826) so we don't un-wrap collection literals. Done with: hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S # skip-blame mass-reformatting only # no-check-commit reformats foo_bar functions Differential Revision: https://phab.mercurial-scm.org/D6971
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:45:02 -0400
parents ac865f020b99
children 6000f5b25c9b
comparison
equal deleted inserted replaced
43075:57875cf423c9 43076:2372284d9457
1 from __future__ import absolute_import, print_function 1 from __future__ import absolute_import, print_function
2 2
3 from mercurial import extensions 3 from mercurial import extensions
4 4
5
5 def genwrapper(x): 6 def genwrapper(x):
6 def f(orig, *args, **kwds): 7 def f(orig, *args, **kwds):
7 return [x] + orig(*args, **kwds) 8 return [x] + orig(*args, **kwds)
9
8 f.x = x 10 f.x = x
9 return f 11 return f
12
10 13
11 def getid(wrapper): 14 def getid(wrapper):
12 return getattr(wrapper, 'x', '-') 15 return getattr(wrapper, 'x', '-')
13 16
17
14 wrappers = [genwrapper(i) for i in range(5)] 18 wrappers = [genwrapper(i) for i in range(5)]
19
15 20
16 class dummyclass(object): 21 class dummyclass(object):
17 def getstack(self): 22 def getstack(self):
18 return ['orig'] 23 return ['orig']
19 24
25
20 dummy = dummyclass() 26 dummy = dummyclass()
27
21 28
22 def batchwrap(wrappers): 29 def batchwrap(wrappers):
23 for w in wrappers: 30 for w in wrappers:
24 extensions.wrapfunction(dummy, 'getstack', w) 31 extensions.wrapfunction(dummy, 'getstack', w)
25 print('wrap %d: %s' % (getid(w), dummy.getstack())) 32 print('wrap %d: %s' % (getid(w), dummy.getstack()))
33
26 34
27 def batchunwrap(wrappers): 35 def batchunwrap(wrappers):
28 for w in wrappers: 36 for w in wrappers:
29 result = None 37 result = None
30 try: 38 try:
32 msg = str(dummy.getstack()) 40 msg = str(dummy.getstack())
33 except (ValueError, IndexError) as e: 41 except (ValueError, IndexError) as e:
34 msg = e.__class__.__name__ 42 msg = e.__class__.__name__
35 print('unwrap %s: %s: %s' % (getid(w), getid(result), msg)) 43 print('unwrap %s: %s: %s' % (getid(w), getid(result), msg))
36 44
45
37 batchwrap(wrappers + [wrappers[0]]) 46 batchwrap(wrappers + [wrappers[0]])
38 batchunwrap([(wrappers[i] if i is not None and i >= 0 else None) 47 batchunwrap(
39 for i in [3, None, 0, 4, 0, 2, 1, None]]) 48 [
49 (wrappers[i] if i is not None and i >= 0 else None)
50 for i in [3, None, 0, 4, 0, 2, 1, None]
51 ]
52 )
40 53
41 wrap0 = extensions.wrappedfunction(dummy, 'getstack', wrappers[0]) 54 wrap0 = extensions.wrappedfunction(dummy, 'getstack', wrappers[0])
42 wrap1 = extensions.wrappedfunction(dummy, 'getstack', wrappers[1]) 55 wrap1 = extensions.wrappedfunction(dummy, 'getstack', wrappers[1])
43 56
44 # Use them in a different order from how they were created to check that 57 # Use them in a different order from how they were created to check that
57 70
58 # Wrap callable object which has no __name__ 71 # Wrap callable object which has no __name__
59 class callableobj(object): 72 class callableobj(object):
60 def __call__(self): 73 def __call__(self):
61 return ['orig'] 74 return ['orig']
75
76
62 dummy.cobj = callableobj() 77 dummy.cobj = callableobj()
63 extensions.wrapfunction(dummy, 'cobj', wrappers[0]) 78 extensions.wrapfunction(dummy, 'cobj', wrappers[0])
64 print('wrap callable object', dummy.cobj()) 79 print('wrap callable object', dummy.cobj())