summaryrefslogtreecommitdiff
path: root/tests/basics/with_raise.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/with_raise.py')
-rw-r--r--tests/basics/with_raise.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/basics/with_raise.py b/tests/basics/with_raise.py
new file mode 100644
index 000000000..67eab09b4
--- /dev/null
+++ b/tests/basics/with_raise.py
@@ -0,0 +1,44 @@
+# test with when context manager raises in __enter__/__exit__
+
+class CtxMgr:
+ def __init__(self, id):
+ self.id = id
+
+ def __enter__(self):
+ print("__enter__", self.id)
+ if 10 <= self.id < 20:
+ raise Exception('enter', self.id)
+ return self
+
+ def __exit__(self, a, b, c):
+ print("__exit__", self.id, repr(a), repr(b))
+ if 15 <= self.id < 25:
+ raise Exception('exit', self.id)
+
+# no raising
+try:
+ with CtxMgr(1):
+ pass
+except Exception as e:
+ print(e)
+
+# raise in enter
+try:
+ with CtxMgr(10):
+ pass
+except Exception as e:
+ print(e)
+
+# raise in enter and exit
+try:
+ with CtxMgr(15):
+ pass
+except Exception as e:
+ print(e)
+
+# raise in exit
+try:
+ with CtxMgr(20):
+ pass
+except Exception as e:
+ print(e)