[Python-checkins] bpo-34318: Convert deprecation warnings to errors in assertRaises() etc. (GH-8623)

Serhiy Storchaka webhook-mailer at python.org
Sun Aug 19 03:00:15 EDT 2018


https://github.com/python/cpython/commit/77d5781835b6e0a132694ebadc22b1cbdb9913f8
commit: 77d5781835b6e0a132694ebadc22b1cbdb9913f8
branch: master
author: Serhiy Storchaka <storchaka at gmail.com>
committer: GitHub <noreply at github.com>
date: 2018-08-19T10:00:11+03:00
summary:

bpo-34318: Convert deprecation warnings to errors in assertRaises() etc. (GH-8623)

files:
A Misc/NEWS.d/next/Library/2018-08-02-14-43-42.bpo-34318.GneiXs.rst
M Lib/unittest/case.py
M Lib/unittest/test/test_case.py

diff --git a/Lib/unittest/case.py b/Lib/unittest/case.py
index c0170d182573..1faa6b641f2d 100644
--- a/Lib/unittest/case.py
+++ b/Lib/unittest/case.py
@@ -157,16 +157,11 @@ def handle(self, name, args, kwargs):
             if not _is_subtype(self.expected, self._base_type):
                 raise TypeError('%s() arg 1 must be %s' %
                                 (name, self._base_type_str))
-            if args and args[0] is None:
-                warnings.warn("callable is None",
-                              DeprecationWarning, 3)
-                args = ()
             if not args:
                 self.msg = kwargs.pop('msg', None)
                 if kwargs:
-                    warnings.warn('%r is an invalid keyword argument for '
-                                  'this function' % next(iter(kwargs)),
-                                  DeprecationWarning, 3)
+                    raise TypeError('%r is an invalid keyword argument for '
+                                    'this function' % (next(iter(kwargs)),))
                 return self
 
             callable_obj, *args = args
diff --git a/Lib/unittest/test/test_case.py b/Lib/unittest/test/test_case.py
index 6b3439781c9d..baabddd06f41 100644
--- a/Lib/unittest/test/test_case.py
+++ b/Lib/unittest/test/test_case.py
@@ -1222,7 +1222,7 @@ def Stub():
         with self.assertRaises(self.failureException):
             self.assertRaises(ExceptionMock, lambda: 0)
         # Failure when the function is None
-        with self.assertWarns(DeprecationWarning):
+        with self.assertRaises(TypeError):
             self.assertRaises(ExceptionMock, None)
         # Failure when another exception is raised
         with self.assertRaises(ExceptionMock):
@@ -1253,8 +1253,7 @@ def Stub():
             with self.assertRaises(ExceptionMock, msg='foobar'):
                 pass
         # Invalid keyword argument
-        with self.assertWarnsRegex(DeprecationWarning, 'foobar'), \
-             self.assertRaises(AssertionError):
+        with self.assertRaisesRegex(TypeError, 'foobar'):
             with self.assertRaises(ExceptionMock, foobar=42):
                 pass
         # Failure when another exception is raised
@@ -1295,7 +1294,7 @@ def Stub():
 
         self.assertRaisesRegex(ExceptionMock, re.compile('expect$'), Stub)
         self.assertRaisesRegex(ExceptionMock, 'expect$', Stub)
-        with self.assertWarns(DeprecationWarning):
+        with self.assertRaises(TypeError):
             self.assertRaisesRegex(ExceptionMock, 'expect$', None)
 
     def testAssertNotRaisesRegex(self):
@@ -1312,8 +1311,7 @@ def testAssertNotRaisesRegex(self):
             with self.assertRaisesRegex(Exception, 'expect', msg='foobar'):
                 pass
         # Invalid keyword argument
-        with self.assertWarnsRegex(DeprecationWarning, 'foobar'), \
-             self.assertRaises(AssertionError):
+        with self.assertRaisesRegex(TypeError, 'foobar'):
             with self.assertRaisesRegex(Exception, 'expect', foobar=42):
                 pass
 
@@ -1388,7 +1386,7 @@ def _runtime_warn():
         with self.assertRaises(self.failureException):
             self.assertWarns(RuntimeWarning, lambda: 0)
         # Failure when the function is None
-        with self.assertWarns(DeprecationWarning):
+        with self.assertRaises(TypeError):
             self.assertWarns(RuntimeWarning, None)
         # Failure when another warning is triggered
         with warnings.catch_warnings():
@@ -1433,8 +1431,7 @@ def _runtime_warn():
             with self.assertWarns(RuntimeWarning, msg='foobar'):
                 pass
         # Invalid keyword argument
-        with self.assertWarnsRegex(DeprecationWarning, 'foobar'), \
-             self.assertRaises(AssertionError):
+        with self.assertRaisesRegex(TypeError, 'foobar'):
             with self.assertWarns(RuntimeWarning, foobar=42):
                 pass
         # Failure when another warning is triggered
@@ -1475,7 +1472,7 @@ def _runtime_warn(msg):
             self.assertWarnsRegex(RuntimeWarning, "o+",
                                   lambda: 0)
         # Failure when the function is None
-        with self.assertWarns(DeprecationWarning):
+        with self.assertRaises(TypeError):
             self.assertWarnsRegex(RuntimeWarning, "o+", None)
         # Failure when another warning is triggered
         with warnings.catch_warnings():
@@ -1518,8 +1515,7 @@ def _runtime_warn(msg):
             with self.assertWarnsRegex(RuntimeWarning, 'o+', msg='foobar'):
                 pass
         # Invalid keyword argument
-        with self.assertWarnsRegex(DeprecationWarning, 'foobar'), \
-             self.assertRaises(AssertionError):
+        with self.assertRaisesRegex(TypeError, 'foobar'):
             with self.assertWarnsRegex(RuntimeWarning, 'o+', foobar=42):
                 pass
         # Failure when another warning is triggered
diff --git a/Misc/NEWS.d/next/Library/2018-08-02-14-43-42.bpo-34318.GneiXs.rst b/Misc/NEWS.d/next/Library/2018-08-02-14-43-42.bpo-34318.GneiXs.rst
new file mode 100644
index 000000000000..4df4fe30b97a
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2018-08-02-14-43-42.bpo-34318.GneiXs.rst
@@ -0,0 +1,7 @@
+:func:`~unittest.TestCase.assertRaises`,
+:func:`~unittest.TestCase.assertRaisesRegex`,
+:func:`~unittest.TestCase.assertWarns` and
+:func:`~unittest.TestCase.assertWarnsRegex` no longer success if the passed
+callable is None. They no longer ignore unknown keyword arguments in the
+context manager mode. A DeprecationWarning was raised in these cases
+since Python 3.5.



More information about the Python-checkins mailing list