comparison tests/test-ctxmanager.py @ 28801:441491aba8c3

test-ctxmanager: stop direct symbol import of mercurial.util
author Yuya Nishihara <yuya@tcha.org>
date Tue, 05 Apr 2016 23:13:52 +0900
parents 4a7dc29bfad8
children 68c43a416585
comparison
equal deleted inserted replaced
28800:544908ae36ce 28801:441491aba8c3
1 from __future__ import absolute_import 1 from __future__ import absolute_import
2 2
3 import silenttestrunner 3 import silenttestrunner
4 import unittest 4 import unittest
5 5
6 from mercurial.util import ctxmanager 6 from mercurial import util
7 7
8 class contextmanager(object): 8 class contextmanager(object):
9 def __init__(self, name, trace): 9 def __init__(self, name, trace):
10 self.name = name 10 self.name = name
11 self.entered = False 11 self.entered = False
42 42
43 class test_ctxmanager(unittest.TestCase): 43 class test_ctxmanager(unittest.TestCase):
44 def test_basics(self): 44 def test_basics(self):
45 trace = [] 45 trace = []
46 addtrace = trace.append 46 addtrace = trace.append
47 with ctxmanager(ctxmgr('a', addtrace), ctxmgr('b', addtrace)) as c: 47 with util.ctxmanager(ctxmgr('a', addtrace), ctxmgr('b', addtrace)) as c:
48 a, b = c.enter() 48 a, b = c.enter()
49 c.atexit(addtrace, ('atexit', 'x')) 49 c.atexit(addtrace, ('atexit', 'x'))
50 c.atexit(addtrace, ('atexit', 'y')) 50 c.atexit(addtrace, ('atexit', 'y'))
51 self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'), 51 self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'),
52 ('atexit', 'y'), ('atexit', 'x'), 52 ('atexit', 'y'), ('atexit', 'x'),
54 54
55 def test_raise_on_enter(self): 55 def test_raise_on_enter(self):
56 trace = [] 56 trace = []
57 addtrace = trace.append 57 addtrace = trace.append
58 def go(): 58 def go():
59 with ctxmanager(ctxmgr('a', addtrace), 59 with util.ctxmanager(ctxmgr('a', addtrace),
60 lambda: raise_on_enter('b', addtrace)) as c: 60 lambda: raise_on_enter('b', addtrace)) as c:
61 c.enter() 61 c.enter()
62 addtrace('unreachable') 62 addtrace('unreachable')
63 self.assertRaises(ctxerror, go) 63 self.assertRaises(ctxerror, go)
64 self.assertEqual(trace, [('enter', 'a'), ('raise', 'b'), ('exit', 'a')]) 64 self.assertEqual(trace, [('enter', 'a'), ('raise', 'b'), ('exit', 'a')])
65 65
66 def test_raise_on_exit(self): 66 def test_raise_on_exit(self):
67 trace = [] 67 trace = []
68 addtrace = trace.append 68 addtrace = trace.append
69 def go(): 69 def go():
70 with ctxmanager(ctxmgr('a', addtrace), 70 with util.ctxmanager(ctxmgr('a', addtrace),
71 lambda: raise_on_exit('b', addtrace)) as c: 71 lambda: raise_on_exit('b', addtrace)) as c:
72 c.enter() 72 c.enter()
73 addtrace('running') 73 addtrace('running')
74 self.assertRaises(ctxerror, go) 74 self.assertRaises(ctxerror, go)
75 self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'), 'running', 75 self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'), 'running',
76 ('raise', 'b'), ('exit', 'a')]) 76 ('raise', 'b'), ('exit', 'a')])