Mercurial > hg
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')]) |