File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66class FileLike (object ):
77 def __init__ (self ):
88 self .is_open = False
9+ self .was_open = False
10+ self .did_something = False
911
1012 def open (self ):
11- self .is_open = True
12-
13- def __enter__ (self ):
13+ self .was_open = False
1414 self .is_open = True
1515
1616 def close (self ):
1717 self .is_open = False
18+ self .was_open = True
19+
20+ def __enter__ (self ):
21+ self .open ()
1822
1923 def __exit__ (self ):
20- self .is_open = False
24+ self .close ()
25+
26+ def do_something (self ):
27+ self .did_something = True
28+ raise Exception ()
2129
2230
2331class ErrorHandlingTest (unittest .TestCase ):
@@ -45,7 +53,12 @@ def test_filelike_objects_are_closed_on_exception(self):
4553 filelike_object .open ()
4654 with self .assertRaises (Exception ):
4755 er .filelike_objects_are_closed_on_exception (filelike_object )
48- self .assertFalse (filelike_object .is_open )
56+ self .assertFalse (filelike_object .is_open ,
57+ 'filelike_object should be closed' )
58+ self .assertTrue (filelike_object .was_open ,
59+ 'filelike_object should have been opened' )
60+ self .assertTrue (filelike_object .did_something ,
61+ 'filelike_object should call did_something()' )
4962
5063
5164if __name__ == '__main__' :
Original file line number Diff line number Diff line change @@ -18,5 +18,8 @@ def handle_error_by_returning_tuple(input_data):
1818
1919def filelike_objects_are_closed_on_exception (filelike_object ):
2020 with filelike_object :
21- filelike_object .close ()
22- raise Exception ()
21+ try :
22+ filelike_object .do_something ()
23+ except Exception :
24+ filelike_object .close ()
25+ raise
You can’t perform that action at this time.
0 commit comments