diff options
author | Damien George <damien.p.george@gmail.com> | 2018-09-04 14:37:30 +1000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2018-09-04 14:37:30 +1000 |
commit | 4970e9bc8c05d3573580b960bc5f59fce0de1e89 (patch) | |
tree | 29b9873194ebe0f0c12810837ebf2923d37fd1a5 /tests/basics/with_raise.py | |
parent | b14c705c180f10b52af95fbe2a76ff0c9d8c39d4 (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.py | 44 |
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) |