From 664448d81f41c5fa971d8523a71b0f19e76cc136 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 19 Sep 2021 15:24:38 +0300 Subject: bpo-30856: Update TestResult early, without buffering in _Outcome (GH-28180) TestResult methods addFailure(), addError(), addSkip() and addSubTest() are now called immediately after raising an exception in test or finishing a subtest. Previously they were called only after finishing the test clean up. --- Lib/unittest/test/test_case.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'Lib/unittest/test/test_case.py') diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py index 156b252912..ee4c0b354f 100644 --- a/Lib/unittest/test/test_case.py +++ b/Lib/unittest/test/test_case.py @@ -197,8 +197,8 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): super(Foo, self).test() raise RuntimeError('raised by Foo.test') - expected = ['startTest', 'setUp', 'test', 'tearDown', - 'addError', 'stopTest'] + expected = ['startTest', 'setUp', 'test', + 'addError', 'tearDown', 'stopTest'] Foo(events).run(result) self.assertEqual(events, expected) @@ -216,7 +216,7 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): raise RuntimeError('raised by Foo.test') expected = ['startTestRun', 'startTest', 'setUp', 'test', - 'tearDown', 'addError', 'stopTest', 'stopTestRun'] + 'addError', 'tearDown', 'stopTest', 'stopTestRun'] Foo(events).run() self.assertEqual(events, expected) @@ -236,8 +236,8 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): super(Foo, self).test() self.fail('raised by Foo.test') - expected = ['startTest', 'setUp', 'test', 'tearDown', - 'addFailure', 'stopTest'] + expected = ['startTest', 'setUp', 'test', + 'addFailure', 'tearDown', 'stopTest'] Foo(events).run(result) self.assertEqual(events, expected) @@ -252,7 +252,7 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): self.fail('raised by Foo.test') expected = ['startTestRun', 'startTest', 'setUp', 'test', - 'tearDown', 'addFailure', 'stopTest', 'stopTestRun'] + 'addFailure', 'tearDown', 'stopTest', 'stopTestRun'] events = [] Foo(events).run() self.assertEqual(events, expected) @@ -353,10 +353,10 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): def test_run_call_order__subtests(self): events = [] result = LoggingResult(events) - expected = ['startTest', 'setUp', 'test', 'tearDown', + expected = ['startTest', 'setUp', 'test', 'addSubTestFailure', 'addSubTestSuccess', 'addSubTestFailure', 'addSubTestFailure', - 'addSubTestSuccess', 'addError', 'stopTest'] + 'addSubTestSuccess', 'addError', 'tearDown', 'stopTest'] self._check_call_order__subtests(result, events, expected) def test_run_call_order__subtests_legacy(self): @@ -364,8 +364,8 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): # text execution stops after the first subtest failure. events = [] result = LegacyLoggingResult(events) - expected = ['startTest', 'setUp', 'test', 'tearDown', - 'addFailure', 'stopTest'] + expected = ['startTest', 'setUp', 'test', + 'addFailure', 'tearDown', 'stopTest'] self._check_call_order__subtests(result, events, expected) def _check_call_order__subtests_success(self, result, events, expected_events): @@ -386,9 +386,9 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): result = LoggingResult(events) # The 6 subtest successes are individually recorded, in addition # to the whole test success. - expected = (['startTest', 'setUp', 'test', 'tearDown'] + expected = (['startTest', 'setUp', 'test'] + 6 * ['addSubTestSuccess'] - + ['addSuccess', 'stopTest']) + + ['tearDown', 'addSuccess', 'stopTest']) self._check_call_order__subtests_success(result, events, expected) def test_run_call_order__subtests_success_legacy(self): @@ -413,8 +413,8 @@ class Test_TestCase(unittest.TestCase, TestEquality, TestHashing): self.fail('failure') self.fail('failure') - expected = ['startTest', 'setUp', 'test', 'tearDown', - 'addSubTestFailure', 'stopTest'] + expected = ['startTest', 'setUp', 'test', + 'addSubTestFailure', 'tearDown', 'stopTest'] Foo(events).run(result) self.assertEqual(events, expected) -- cgit v1.2.1