]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-113267: Revert "gh-106584: Fix exit code for unittest in Python 3.12 (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sun, 4 Feb 2024 16:00:56 +0000 (17:00 +0100)
committerGitHub <noreply@github.com>
Sun, 4 Feb 2024 16:00:56 +0000 (16:00 +0000)
This reverts commit 8fc071345b50dd3de61ebeeaa287ccef21d061b2.
(cherry picked from commit ecabff98c41453f15ecd26ac255d531b571b9bc1)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Lib/test/test_unittest/test_discovery.py
Lib/test/test_unittest/test_skipping.py
Lib/unittest/case.py
Lib/unittest/result.py
Misc/NEWS.d/next/Library/2024-01-23-11-04-21.gh-issue-113267.xe_Pxe.rst [new file with mode: 0644]

index dcb72d73efceabb8a0027d9fc81af96f5066467d..004898ed43183485e2eb649ce3a94721e200a67d 100644 (file)
@@ -571,7 +571,7 @@ class TestDiscovery(unittest.TestCase):
         result = unittest.TestResult()
         suite.run(result)
         self.assertEqual(len(result.skipped), 1)
-        self.assertEqual(result.testsRun, 0)
+        self.assertEqual(result.testsRun, 1)
         self.assertEqual(import_calls, ['my_package'])
 
         # Check picklability
index 1a6af06d32b4339e0b91693aa2a0c2484d30e9fd..f146dcac18ecc092a51a8cb4c97e36d7b87bf90e 100644 (file)
@@ -103,16 +103,16 @@ class Test_TestSkipping(unittest.TestCase):
             result = LoggingResult(events)
             self.assertIs(suite.run(result), result)
             self.assertEqual(len(result.skipped), 1)
-            expected = ['addSkip', 'stopTest', 'startTest',
-                        'addSuccess', 'stopTest']
+            expected = ['startTest', 'addSkip', 'stopTest',
+                        'startTest', 'addSuccess', 'stopTest']
             self.assertEqual(events, expected)
-            self.assertEqual(result.testsRun, 1)
+            self.assertEqual(result.testsRun, 2)
             self.assertEqual(result.skipped, [(test_do_skip, "testing")])
             self.assertTrue(result.wasSuccessful())
 
             events = []
             result = test_do_skip.run()
-            self.assertEqual(events, ['startTestRun', 'addSkip',
+            self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip',
                                       'stopTest', 'stopTestRun'])
             self.assertEqual(result.skipped, [(test_do_skip, "testing")])
 
@@ -135,13 +135,13 @@ class Test_TestSkipping(unittest.TestCase):
         test = Foo("test_1")
         suite = unittest.TestSuite([test])
         self.assertIs(suite.run(result), result)
-        self.assertEqual(events, ['addSkip', 'stopTest'])
+        self.assertEqual(events, ['startTest', 'addSkip', 'stopTest'])
         self.assertEqual(result.skipped, [(test, "testing")])
         self.assertEqual(record, [])
 
         events = []
         result = test.run()
-        self.assertEqual(events, ['startTestRun', 'addSkip',
+        self.assertEqual(events, ['startTestRun', 'startTest', 'addSkip',
                                   'stopTest', 'stopTestRun'])
         self.assertEqual(result.skipped, [(test, "testing")])
         self.assertEqual(record, [])
index 811557498bb30eda9271b767518cbedbbb723b8e..001b640dc43ad69aa4ea7d304c5a667424d031f8 100644 (file)
@@ -606,6 +606,7 @@ class TestCase(object):
         else:
             stopTestRun = None
 
+        result.startTest(self)
         try:
             testMethod = getattr(self, self._testMethodName)
             if (getattr(self.__class__, "__unittest_skip__", False) or
@@ -616,9 +617,6 @@ class TestCase(object):
                 _addSkip(result, self, skip_why)
                 return result
 
-            # Increase the number of tests only if it hasn't been skipped
-            result.startTest(self)
-
             expecting_failure = (
                 getattr(self, "__unittest_expecting_failure__", False) or
                 getattr(testMethod, "__unittest_expecting_failure__", False)
index 9e56f658027f4de20168a67cfcbcbe89057d1d69..3ace0a5b7bf2efb209630c5a7f9f6b7aafc1ef7d 100644 (file)
@@ -97,12 +97,10 @@ class TestResult(object):
 
             sys.stdout = self._original_stdout
             sys.stderr = self._original_stderr
-            if self._stdout_buffer is not None:
-                self._stdout_buffer.seek(0)
-                self._stdout_buffer.truncate()
-            if self._stderr_buffer is not None:
-                self._stderr_buffer.seek(0)
-                self._stderr_buffer.truncate()
+            self._stdout_buffer.seek(0)
+            self._stdout_buffer.truncate()
+            self._stderr_buffer.seek(0)
+            self._stderr_buffer.truncate()
 
     def stopTestRun(self):
         """Called once after all tests are executed.
diff --git a/Misc/NEWS.d/next/Library/2024-01-23-11-04-21.gh-issue-113267.xe_Pxe.rst b/Misc/NEWS.d/next/Library/2024-01-23-11-04-21.gh-issue-113267.xe_Pxe.rst
new file mode 100644 (file)
index 0000000..ad8aaf9
--- /dev/null
@@ -0,0 +1,2 @@
+Revert changes in :gh:`106584` which made calls of ``TestResult`` methods
+``startTest()`` and ``stopTest()`` unbalanced.