summaryrefslogtreecommitdiff
path: root/tests/basics/with_raise.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-09-04 14:37:30 +1000
committerDamien George <damien.p.george@gmail.com>2018-09-04 14:37:30 +1000
commit4970e9bc8c05d3573580b960bc5f59fce0de1e89 (patch)
tree29b9873194ebe0f0c12810837ebf2923d37fd1a5 /tests/basics/with_raise.py
parentb14c705c180f10b52af95fbe2a76ff0c9d8c39d4 (diff)
tests/basics: Add test cases for context manager raising in enter/exit.
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)