@@ -161,6 +161,58 @@ class Foo(Mixin, unittest.TestCase):
161161 self .assertEqual (result .skipped , [(test , "testing" )])
162162 self .assertEqual (record , [])
163163
164+ def test_skip_in_setup (self ):
165+ class Foo (unittest .TestCase ):
166+ def setUp (self ):
167+ self .skipTest ("skip" )
168+ def test_skip_me (self ):
169+ self .fail ("shouldn't come here" )
170+ events = []
171+ result = LoggingResult (events )
172+ test = Foo ("test_skip_me" )
173+ self .assertIs (test .run (result ), result )
174+ self .assertEqual (events , ['startTest' , 'addSkip' , 'stopTest' ])
175+ self .assertEqual (result .skipped , [(test , "skip" )])
176+
177+ def test_skip_in_cleanup (self ):
178+ class Foo (unittest .TestCase ):
179+ def test_skip_me (self ):
180+ pass
181+ def tearDown (self ):
182+ self .skipTest ("skip" )
183+ events = []
184+ result = LoggingResult (events )
185+ test = Foo ("test_skip_me" )
186+ self .assertIs (test .run (result ), result )
187+ self .assertEqual (events , ['startTest' , 'addSkip' , 'stopTest' ])
188+ self .assertEqual (result .skipped , [(test , "skip" )])
189+
190+ def test_failure_and_skip_in_cleanup (self ):
191+ class Foo (unittest .TestCase ):
192+ def test_skip_me (self ):
193+ self .fail ("fail" )
194+ def tearDown (self ):
195+ self .skipTest ("skip" )
196+ events = []
197+ result = LoggingResult (events )
198+ test = Foo ("test_skip_me" )
199+ self .assertIs (test .run (result ), result )
200+ self .assertEqual (events , ['startTest' , 'addSkip' , 'addFailure' , 'stopTest' ])
201+ self .assertEqual (result .skipped , [(test , "skip" )])
202+
203+ def test_skipping_and_fail_in_cleanup (self ):
204+ class Foo (unittest .TestCase ):
205+ def test_skip_me (self ):
206+ self .skipTest ("skip" )
207+ def tearDown (self ):
208+ self .fail ("fail" )
209+ events = []
210+ result = LoggingResult (events )
211+ test = Foo ("test_skip_me" )
212+ self .assertIs (test .run (result ), result )
213+ self .assertEqual (events , ['startTest' , 'addSkip' , 'addFailure' , 'stopTest' ])
214+ self .assertEqual (result .skipped , [(test , "skip" )])
215+
164216 def test_expected_failure (self ):
165217 class Foo (unittest .TestCase ):
166218 @unittest .expectedFailure
@@ -172,7 +224,9 @@ def test_die(self):
172224 self .assertIs (test .run (result ), result )
173225 self .assertEqual (events ,
174226 ['startTest' , 'addExpectedFailure' , 'stopTest' ])
227+ self .assertFalse (result .failures )
175228 self .assertEqual (result .expectedFailures [0 ][0 ], test )
229+ self .assertFalse (result .unexpectedSuccesses )
176230 self .assertTrue (result .wasSuccessful ())
177231
178232 def test_expected_failure_with_wrapped_class (self ):
@@ -187,7 +241,9 @@ def test_1(self):
187241 self .assertIs (test .run (result ), result )
188242 self .assertEqual (events ,
189243 ['startTest' , 'addExpectedFailure' , 'stopTest' ])
244+ self .assertFalse (result .failures )
190245 self .assertEqual (result .expectedFailures [0 ][0 ], test )
246+ self .assertFalse (result .unexpectedSuccesses )
191247 self .assertTrue (result .wasSuccessful ())
192248
193249 def test_expected_failure_with_wrapped_subclass (self ):
@@ -205,7 +261,9 @@ class Bar(Foo):
205261 self .assertIs (test .run (result ), result )
206262 self .assertEqual (events ,
207263 ['startTest' , 'addExpectedFailure' , 'stopTest' ])
264+ self .assertFalse (result .failures )
208265 self .assertEqual (result .expectedFailures [0 ][0 ], test )
266+ self .assertFalse (result .unexpectedSuccesses )
209267 self .assertTrue (result .wasSuccessful ())
210268
211269 def test_expected_failure_subtests (self ):
@@ -229,8 +287,48 @@ def test_die(self):
229287 self .assertEqual (events ,
230288 ['startTest' , 'addSubTestSuccess' ,
231289 'addExpectedFailure' , 'stopTest' ])
290+ self .assertFalse (result .failures )
232291 self .assertEqual (len (result .expectedFailures ), 1 )
233292 self .assertIs (result .expectedFailures [0 ][0 ], test )
293+ self .assertFalse (result .unexpectedSuccesses )
294+ self .assertTrue (result .wasSuccessful ())
295+
296+ def test_expected_failure_and_fail_in_cleanup (self ):
297+ class Foo (unittest .TestCase ):
298+ @unittest .expectedFailure
299+ def test_die (self ):
300+ self .fail ("help me!" )
301+ def tearDown (self ):
302+ self .fail ("bad tearDown" )
303+ events = []
304+ result = LoggingResult (events )
305+ test = Foo ("test_die" )
306+ self .assertIs (test .run (result ), result )
307+ self .assertEqual (events ,
308+ ['startTest' , 'addFailure' , 'stopTest' ])
309+ self .assertEqual (len (result .failures ), 1 )
310+ self .assertIn ('AssertionError: bad tearDown' , result .failures [0 ][1 ])
311+ self .assertFalse (result .expectedFailures )
312+ self .assertFalse (result .unexpectedSuccesses )
313+ self .assertFalse (result .wasSuccessful ())
314+
315+ def test_expected_failure_and_skip_in_cleanup (self ):
316+ class Foo (unittest .TestCase ):
317+ @unittest .expectedFailure
318+ def test_die (self ):
319+ self .fail ("help me!" )
320+ def tearDown (self ):
321+ self .skipTest ("skip" )
322+ events = []
323+ result = LoggingResult (events )
324+ test = Foo ("test_die" )
325+ self .assertIs (test .run (result ), result )
326+ self .assertEqual (events ,
327+ ['startTest' , 'addSkip' , 'stopTest' ])
328+ self .assertFalse (result .failures )
329+ self .assertFalse (result .expectedFailures )
330+ self .assertFalse (result .unexpectedSuccesses )
331+ self .assertEqual (result .skipped , [(test , "skip" )])
234332 self .assertTrue (result .wasSuccessful ())
235333
236334 def test_unexpected_success (self ):
@@ -245,6 +343,7 @@ def test_die(self):
245343 self .assertEqual (events ,
246344 ['startTest' , 'addUnexpectedSuccess' , 'stopTest' ])
247345 self .assertFalse (result .failures )
346+ self .assertFalse (result .expectedFailures )
248347 self .assertEqual (result .unexpectedSuccesses , [test ])
249348 self .assertFalse (result .wasSuccessful ())
250349
@@ -269,9 +368,48 @@ def test_die(self):
269368 'addSubTestSuccess' , 'addSubTestSuccess' ,
270369 'addUnexpectedSuccess' , 'stopTest' ])
271370 self .assertFalse (result .failures )
371+ self .assertFalse (result .expectedFailures )
272372 self .assertEqual (result .unexpectedSuccesses , [test ])
273373 self .assertFalse (result .wasSuccessful ())
274374
375+ def test_unexpected_success_and_fail_in_cleanup (self ):
376+ class Foo (unittest .TestCase ):
377+ @unittest .expectedFailure
378+ def test_die (self ):
379+ pass
380+ def tearDown (self ):
381+ self .fail ("bad tearDown" )
382+ events = []
383+ result = LoggingResult (events )
384+ test = Foo ("test_die" )
385+ self .assertIs (test .run (result ), result )
386+ self .assertEqual (events ,
387+ ['startTest' , 'addFailure' , 'stopTest' ])
388+ self .assertEqual (len (result .failures ), 1 )
389+ self .assertIn ('AssertionError: bad tearDown' , result .failures [0 ][1 ])
390+ self .assertFalse (result .expectedFailures )
391+ self .assertFalse (result .unexpectedSuccesses )
392+ self .assertFalse (result .wasSuccessful ())
393+
394+ def test_unexpected_success_and_skip_in_cleanup (self ):
395+ class Foo (unittest .TestCase ):
396+ @unittest .expectedFailure
397+ def test_die (self ):
398+ pass
399+ def tearDown (self ):
400+ self .skipTest ("skip" )
401+ events = []
402+ result = LoggingResult (events )
403+ test = Foo ("test_die" )
404+ self .assertIs (test .run (result ), result )
405+ self .assertEqual (events ,
406+ ['startTest' , 'addSkip' , 'stopTest' ])
407+ self .assertFalse (result .failures )
408+ self .assertFalse (result .expectedFailures )
409+ self .assertFalse (result .unexpectedSuccesses )
410+ self .assertEqual (result .skipped , [(test , "skip" )])
411+ self .assertTrue (result .wasSuccessful ())
412+
275413 def test_skip_doesnt_run_setup (self ):
276414 class Foo (unittest .TestCase ):
277415 wasSetUp = False
0 commit comments