@@ -2108,11 +2108,13 @@ def setUp(self):
21082108 self .result = TextTestResult (io .StringIO ())
21092109
21102110 def getvalue (self ):
2111+ assert isinstance (self .result .stream , io .StringIO )
21112112 return self .result .stream .getvalue ()
21122113
21132114 def test__init_sets_stream (self ):
2114- result = TextTestResult ("fp" )
2115- self .assertEqual ("fp" , result .stream )
2115+ stream = io .StringIO ()
2116+ result = TextTestResult (stream )
2117+ self .assertEqual (stream , result .stream )
21162118
21172119 def reset_output (self ):
21182120 self .result .stream = io .StringIO ()
@@ -2285,6 +2287,7 @@ def __init__(self, stream):
22852287
22862288 def addSuccess (self , test , details = None ):
22872289 super ().addSuccess (test , details )
2290+ assert self .stream is not None
22882291 self .stream .write ("CUSTOM_SUCCESS_MARKER\n " )
22892292
22902293 stream = io .StringIO ()
@@ -2954,8 +2957,14 @@ def check_outcome_details_to_exec_info(self, outcome, expected=None):
29542957 expected = outcome
29552958 details , _err_str = self .get_details_and_string ()
29562959 getattr (self .converter , outcome )(self , details = details )
2957- err = self .converter ._details_to_exc_info (details )
2958- self .assertEqual ([(expected , self , err )], self .result ._events )
2960+ expected_err = self .converter ._details_to_exc_info (details )
2961+ self .assertEqual (1 , len (self .result ._events ))
2962+ event_outcome , event_test , event_err = self .result ._events [0 ]
2963+ self .assertEqual (expected , event_outcome )
2964+ self .assertEqual (self , event_test )
2965+ # Compare exc type and value; traceback objects differ between calls
2966+ self .assertEqual (expected_err [:2 ], event_err [:2 ])
2967+ self .assertIsNotNone (event_err [2 ])
29592968
29602969 def check_outcome_details_to_nothing (self , outcome , expected = None ):
29612970 """Call an outcome with a details dict to be swallowed."""
@@ -3556,7 +3565,7 @@ def test_no_details(self):
35563565
35573566 def test_binary_content (self ):
35583567 content = content_from_stream (
3559- io .StringIO ( "foo" ), content_type = ContentType ("image" , "jpeg" )
3568+ io .BytesIO ( b "foo" ), content_type = ContentType ("image" , "jpeg" )
35603569 )
35613570 string = _details_to_str ({"attachment" : content })
35623571 self .assertThat (
@@ -3611,16 +3620,16 @@ def test_empty_attachment(self):
36113620 )
36123621
36133622 def test_lots_of_different_attachments (self ):
3614- def jpg (x ) :
3615- return content_from_stream (io .StringIO (x ), ContentType ("image" , "jpeg" ))
3623+ def jpg (x : bytes ) -> Content :
3624+ return content_from_stream (io .BytesIO (x ), ContentType ("image" , "jpeg" ))
36163625
36173626 attachments = {
36183627 "attachment" : text_content ("foo" ),
36193628 "attachment-1" : text_content ("traceback" ),
3620- "attachment-2" : jpg ("pic1" ),
3629+ "attachment-2" : jpg (b "pic1" ),
36213630 "attachment-3" : text_content ("bar" ),
36223631 "attachment-4" : text_content ("" ),
3623- "attachment-5" : jpg ("pic2" ),
3632+ "attachment-5" : jpg (b "pic2" ),
36243633 }
36253634 string = _details_to_str (attachments , special = "attachment-1" )
36263635 self .assertThat (
@@ -3648,7 +3657,7 @@ def setUp(self):
36483657 self .log = []
36493658 self .result = TestByTestResult (self .on_test )
36503659 now = iter (range (5 ))
3651- self .result ._now = lambda : next (now ) # type: ignore[method-assign]
3660+ self .result ._now = lambda : next (now ) # type: ignore[method-assign,assignment,return-value ]
36523661
36533662 def assertCalled (self , ** kwargs ):
36543663 defaults = {
0 commit comments