1class ProtectedSection:
2 def __init__(self, log=(), suppress=()):
3 self.log = log
4 self.suppress = suppress
5 self.exception = None
6
7 def __enter__(self):
8 return self
9
10 def __exit__(self, exc_type, exc_val, exc_tb):
11 if exc_type:
12 if exc_type in self.log:
13 self.exception = exc_val
14 return True
15 elif exc_type in self.suppress:
16 return True
17 return False
.F
======================================================================
FAIL: test_special_cases (test.TestSolution.test_special_cases)
Test special cases to show you that you missed something.
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 128, in test_special_cases
self.assertIsNone(cm.exception)
AssertionError: ZeroDivisionError('division by zero') is not None
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)
f | 1 | class ProtectedSection: | f | 1 | class ProtectedSection: |
t | 2 | def __init__(self, log = (), suppress = ()): | t | 2 | def __init__(self, log=(), suppress=()): |
3 | self.log = log | 3 | self.log = log | ||
4 | self.suppress = suppress | 4 | self.suppress = suppress | ||
5 | self.exception = None | 5 | self.exception = None | ||
6 | 6 | ||||
7 | def __enter__(self): | 7 | def __enter__(self): | ||
8 | return self | 8 | return self | ||
9 | 9 | ||||
10 | def __exit__(self, exc_type, exc_val, exc_tb): | 10 | def __exit__(self, exc_type, exc_val, exc_tb): | ||
11 | if exc_type: | 11 | if exc_type: | ||
12 | if exc_type in self.log: | 12 | if exc_type in self.log: | ||
13 | self.exception = exc_val | 13 | self.exception = exc_val | ||
14 | return True | 14 | return True | ||
15 | elif exc_type in self.suppress: | 15 | elif exc_type in self.suppress: | ||
16 | return True | 16 | return True | ||
17 | return False | 17 | return False |
Legends | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|