tests/test-ctxmanager.py
changeset 32279 68c43a416585
parent 28801 441491aba8c3
equal deleted inserted replaced
32278:7c3ef55dedbe 32279:68c43a416585
    53                                  ('exit', 'b'), ('exit', 'a')])
    53                                  ('exit', 'b'), ('exit', 'a')])
    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         with self.assertRaises(ctxerror):
    59             with util.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)
       
    64         self.assertEqual(trace, [('enter', 'a'), ('raise', 'b'), ('exit', 'a')])
    63         self.assertEqual(trace, [('enter', 'a'), ('raise', 'b'), ('exit', 'a')])
    65 
    64 
    66     def test_raise_on_exit(self):
    65     def test_raise_on_exit(self):
    67         trace = []
    66         trace = []
    68         addtrace = trace.append
    67         addtrace = trace.append
    69         def go():
    68         with self.assertRaises(ctxerror):
    70             with util.ctxmanager(ctxmgr('a', addtrace),
    69             with util.ctxmanager(ctxmgr('a', addtrace),
    71                                  lambda: raise_on_exit('b', addtrace)) as c:
    70                                  lambda: raise_on_exit('b', addtrace)) as c:
    72                 c.enter()
    71                 c.enter()
    73                 addtrace('running')
    72                 addtrace('running')
    74         self.assertRaises(ctxerror, go)
       
    75         self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'), 'running',
    73         self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'), 'running',
    76                                  ('raise', 'b'), ('exit', 'a')])
    74                                  ('raise', 'b'), ('exit', 'a')])
    77 
    75 
    78 if __name__ == '__main__':
    76 if __name__ == '__main__':
    79     silenttestrunner.main(__name__)
    77     silenttestrunner.main(__name__)