tests/test-ctxmanager.py
branchstable
changeset 33572 857876ebaed4
parent 33202 c1994c986d77
parent 33571 9a944e908ecf
child 33573 9e0fea06ae2c
--- a/tests/test-ctxmanager.py	Wed Jul 05 11:24:22 2017 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-from __future__ import absolute_import
-
-import silenttestrunner
-import unittest
-
-from mercurial import util
-
-class contextmanager(object):
-    def __init__(self, name, trace):
-        self.name = name
-        self.entered = False
-        self.exited = False
-        self.trace = trace
-
-    def __enter__(self):
-        self.entered = True
-        self.trace(('enter', self.name))
-        return self
-
-    def __exit__(self, exc_type, exc_val, exc_tb):
-        self.exited = exc_type, exc_val, exc_tb
-        self.trace(('exit', self.name))
-
-    def __repr__(self):
-        return '<ctx %r>' % self.name
-
-class ctxerror(Exception):
-    pass
-
-class raise_on_enter(contextmanager):
-    def __enter__(self):
-        self.trace(('raise', self.name))
-        raise ctxerror(self.name)
-
-class raise_on_exit(contextmanager):
-    def __exit__(self, exc_type, exc_val, exc_tb):
-        self.trace(('raise', self.name))
-        raise ctxerror(self.name)
-
-def ctxmgr(name, trace):
-    return lambda: contextmanager(name, trace)
-
-class test_ctxmanager(unittest.TestCase):
-    def test_basics(self):
-        trace = []
-        addtrace = trace.append
-        with util.ctxmanager(ctxmgr('a', addtrace), ctxmgr('b', addtrace)) as c:
-            a, b = c.enter()
-            c.atexit(addtrace, ('atexit', 'x'))
-            c.atexit(addtrace, ('atexit', 'y'))
-        self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'),
-                                 ('atexit', 'y'), ('atexit', 'x'),
-                                 ('exit', 'b'), ('exit', 'a')])
-
-    def test_raise_on_enter(self):
-        trace = []
-        addtrace = trace.append
-        def go():
-            with util.ctxmanager(ctxmgr('a', addtrace),
-                                 lambda: raise_on_enter('b', addtrace)) as c:
-                c.enter()
-                addtrace('unreachable')
-        self.assertRaises(ctxerror, go)
-        self.assertEqual(trace, [('enter', 'a'), ('raise', 'b'), ('exit', 'a')])
-
-    def test_raise_on_exit(self):
-        trace = []
-        addtrace = trace.append
-        def go():
-            with util.ctxmanager(ctxmgr('a', addtrace),
-                                 lambda: raise_on_exit('b', addtrace)) as c:
-                c.enter()
-                addtrace('running')
-        self.assertRaises(ctxerror, go)
-        self.assertEqual(trace, [('enter', 'a'), ('enter', 'b'), 'running',
-                                 ('raise', 'b'), ('exit', 'a')])
-
-if __name__ == '__main__':
-    silenttestrunner.main(__name__)