]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-106300: Improve `assertRaises(Exception)` usages in tests (GH-106302)....
authorSerhiy Storchaka <storchaka@gmail.com>
Sat, 8 Jul 2023 08:22:33 +0000 (11:22 +0300)
committerGitHub <noreply@github.com>
Sat, 8 Jul 2023 08:22:33 +0000 (08:22 +0000)
(cherry picked from commit 6e6a4cd52332017b10c8d88fbbbfe015948093f4)

Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
Lib/test/test_abc.py
Lib/test/test_codecs.py
Lib/test/test_email/test_message.py
Lib/test/test_importlib/test_main.py
Lib/test/test_mailbox.py
Lib/test/test_shutil.py
Lib/unittest/test/testmock/testasync.py

index 1e7a0351db489d13c9577b42229b6aa239bcfbf6..ed2e0d160e3a8a059709a1999cc4684da9e64e3a 100644 (file)
@@ -448,15 +448,16 @@ def test_factory(abc_ABCMeta, abc_get_cache_token):
 
             # Also check that issubclass() propagates exceptions raised by
             # __subclasses__.
+            class CustomError(Exception): ...
             exc_msg = "exception from __subclasses__"
 
             def raise_exc():
-                raise Exception(exc_msg)
+                raise CustomError(exc_msg)
 
             class S(metaclass=abc_ABCMeta):
                 __subclasses__ = raise_exc
 
-            with self.assertRaisesRegex(Exception, exc_msg):
+            with self.assertRaisesRegex(CustomError, exc_msg):
                 issubclass(int, S)
 
         def test_subclasshook(self):
index 934e4bb347ef3f965a7b559ec5fff8795d4e1a1a..e170a30263f8ba1aa1c23eb2c33413ba152e5d65 100644 (file)
@@ -2823,15 +2823,16 @@ class TransformCodecTest(unittest.TestCase):
     def test_custom_zlib_error_is_wrapped(self):
         # Check zlib codec gives a good error for malformed input
         msg = "^decoding with 'zlib_codec' codec failed"
-        with self.assertRaisesRegex(Exception, msg) as failure:
+        with self.assertRaises(zlib.error) as failure:
             codecs.decode(b"hello", "zlib_codec")
         self.assertIsInstance(failure.exception.__cause__,
                                                 type(failure.exception))
 
     def test_custom_hex_error_is_wrapped(self):
         # Check hex codec gives a good error for malformed input
+        import binascii
         msg = "^decoding with 'hex_codec' codec failed"
-        with self.assertRaisesRegex(Exception, msg) as failure:
+        with self.assertRaises(binascii.Error) as failure:
             codecs.decode(b"hello", "hex_codec")
         self.assertIsInstance(failure.exception.__cause__,
                                                 type(failure.exception))
index 4c754bf40fc300826bf2fbbdd206c3b94f8e8477..d3f396f02e7a725cdf84411f6795f0e52af7dff7 100644 (file)
@@ -696,14 +696,16 @@ class TestEmailMessageBase:
             self.assertIsNone(part['Content-Disposition'])
 
     class _TestSetRaisingContentManager:
+        class CustomError(Exception):
+            pass
         def set_content(self, msg, content, *args, **kw):
-            raise Exception('test')
+            raise self.CustomError('test')
 
     def test_default_content_manager_for_add_comes_from_policy(self):
         cm = self._TestSetRaisingContentManager()
         m = self.message(policy=self.policy.clone(content_manager=cm))
         for method in ('add_related', 'add_alternative', 'add_attachment'):
-            with self.assertRaises(Exception) as ar:
+            with self.assertRaises(self._TestSetRaisingContentManager.CustomError) as ar:
                 getattr(m, method)('')
             self.assertEqual(str(ar.exception), 'test')
 
index d9d067c4b23d66fb7e56b5c947091051f3c27272..7ef442f3407c46bb576647d9e9049103f053f206 100644 (file)
@@ -56,7 +56,7 @@ class BasicTests(fixtures.DistInfoPkg, unittest.TestCase):
         dict(name=''),
     )
     def test_invalid_inputs_to_from_name(self, name):
-        with self.assertRaises(Exception):
+        with self.assertRaises(ValueError):
             Distribution.from_name(name)
 
 
index 07c2764dfd1b2f598e09dee0d1158b252e431923..90642a9a8a8100c7e7021c915d3e0018957c93f7 100644 (file)
@@ -116,10 +116,13 @@ class TestMailbox(TestBase):
         self.assertMailboxEmpty()
 
     def test_add_that_raises_leaves_mailbox_empty(self):
+        class CustomError(Exception): ...
+        exc_msg = "a fake error"
+
         def raiser(*args, **kw):
-            raise Exception("a fake error")
+            raise CustomError(exc_msg)
         support.patch(self, email.generator.BytesGenerator, 'flatten', raiser)
-        with self.assertRaises(Exception):
+        with self.assertRaisesRegex(CustomError, exc_msg):
             self._box.add(email.message_from_string("From: Alphöso"))
         self.assertEqual(len(self._box), 0)
         self._box.close()
index 9bf41453667ac4945539817265e7658e3638d9c0..bd82aa54368eb6059793dd76cd5055a9365e538c 100644 (file)
@@ -2451,7 +2451,7 @@ class _ZeroCopyFileTest(object):
     def test_same_file(self):
         self.addCleanup(self.reset)
         with self.get_files() as (src, dst):
-            with self.assertRaises(Exception):
+            with self.assertRaises((OSError, _GiveupOnFastCopy)):
                 self.zerocopy_fun(src, src)
         # Make sure src file is not corrupted.
         self.assertEqual(read_file(TESTFN, binary=True), self.FILEDATA)
index df260abde950baea3deeb61acb258874b0c80bbd..b7c5d6dba579f6c17e16be1fc426f016481d6fdf 100644 (file)
@@ -427,9 +427,10 @@ class AsyncArguments(IsolatedAsyncioTestCase):
         self.assertEqual(output, 10)
 
     async def test_add_side_effect_exception(self):
+        class CustomError(Exception): pass
         async def addition(var): pass
-        mock = AsyncMock(addition, side_effect=Exception('err'))
-        with self.assertRaises(Exception):
+        mock = AsyncMock(addition, side_effect=CustomError('side-effect'))
+        with self.assertRaisesRegex(CustomError, 'side-effect'):
             await mock(5)
 
     async def test_add_side_effect_coroutine(self):