]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-128770: raise warnings as errors in test suite - except for test_socket which...
authorThomas Grainger <tagrain@gmail.com>
Fri, 17 Jan 2025 11:39:16 +0000 (11:39 +0000)
committerGitHub <noreply@github.com>
Fri, 17 Jan 2025 11:39:16 +0000 (13:39 +0200)
Co-authored-by: sobolevn <mail@sobolevn.me>
Co-authored-by: Brett Cannon <brett@python.org>
Lib/test/libregrtest/main.py
Lib/test/test_pyrepl/test_pyrepl.py
Lib/test/test_socket.py

index dcbcc6790c68d8a993bc0427d1c62ce296be4d15..cd4d512771e05f76afeb9ba980bdf0187f907b19 100644 (file)
@@ -642,9 +642,9 @@ class Regrtest:
         if not sys.stdout.write_through:
             python_opts.append('-u')
 
-        # Add warnings filter 'default'
+        # Add warnings filter 'error'
         if 'default' not in sys.warnoptions:
-            python_opts.extend(('-W', 'default'))
+            python_opts.extend(('-W', 'error'))
 
         # Error on bytes/str comparison
         if sys.flags.bytes_warning < 2:
index f29a7ffbd7cafdff2d47370782e0205552d42301..113ea1d2fe709feb0bde393f64cd22f3dba18862 100644 (file)
@@ -1324,22 +1324,21 @@ class TestMain(ReplTestCase):
         if readline.backend != "editline":
             self.skipTest("GNU readline is not affected by this issue")
 
-        hfile = tempfile.NamedTemporaryFile()
-        self.addCleanup(unlink, hfile.name)
-        env = os.environ.copy()
-        env["PYTHON_HISTORY"] = hfile.name
-
-        env["PYTHON_BASIC_REPL"] = "1"
-        output, exit_code = self.run_repl("spam \nexit()\n", env=env)
-        self.assertEqual(exit_code, 0)
-        self.assertIn("spam ", output)
-        self.assertNotEqual(pathlib.Path(hfile.name).stat().st_size, 0)
-        self.assertIn("spam\\040", pathlib.Path(hfile.name).read_text())
-
-        env.pop("PYTHON_BASIC_REPL", None)
-        output, exit_code = self.run_repl("exit\n", env=env)
-        self.assertEqual(exit_code, 0)
-        self.assertNotIn("\\040", pathlib.Path(hfile.name).read_text())
+        with tempfile.NamedTemporaryFile() as hfile:
+            env = os.environ.copy()
+            env["PYTHON_HISTORY"] = hfile.name
+
+            env["PYTHON_BASIC_REPL"] = "1"
+            output, exit_code = self.run_repl("spam \nexit()\n", env=env)
+            self.assertEqual(exit_code, 0)
+            self.assertIn("spam ", output)
+            self.assertNotEqual(pathlib.Path(hfile.name).stat().st_size, 0)
+            self.assertIn("spam\\040", pathlib.Path(hfile.name).read_text())
+
+            env.pop("PYTHON_BASIC_REPL", None)
+            output, exit_code = self.run_repl("exit\n", env=env)
+            self.assertEqual(exit_code, 0)
+            self.assertNotIn("\\040", pathlib.Path(hfile.name).read_text())
 
     def test_keyboard_interrupt_after_isearch(self):
         output, exit_code = self.run_repl(["\x12", "\x03", "exit"])
index faf326d9164e1bbf8ad3ec8b7b154b1947a07660..7233847f37bf392a3ab37d73d6378cb849146db0 100644 (file)
@@ -1,7 +1,8 @@
 import unittest
+import warnings
 from test import support
 from test.support import (
-    is_apple, os_helper, refleak_helper, socket_helper, threading_helper
+    is_apple, os_helper, refleak_helper, socket_helper, threading_helper,
 )
 import _thread as thread
 import array
@@ -198,6 +199,24 @@ def socket_setdefaulttimeout(timeout):
         socket.setdefaulttimeout(old_timeout)
 
 
+@contextlib.contextmanager
+def downgrade_malformed_data_warning():
+    # This warning happens on macos and win, but does not always happen on linux.
+    if sys.platform not in {"win32", "darwin"}:
+        yield
+        return
+
+    with warnings.catch_warnings():
+        # TODO: gh-110012, we should investigate why this warning is happening
+        # and fix it properly.
+        warnings.filterwarnings(
+            action="always",
+            message=r"received malformed or improperly-truncated ancillary data",
+            category=RuntimeWarning,
+        )
+        yield
+
+
 HAVE_SOCKET_CAN = _have_socket_can()
 
 HAVE_SOCKET_CAN_ISOTP = _have_socket_can_isotp()
@@ -3946,8 +3965,9 @@ class SCMRightsTest(SendrecvmsgServerTimeoutBase):
         # mindata and maxdata bytes when received with buffer size
         # ancbuf, and that any complete file descriptor numbers are
         # valid.
-        msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock,
-                                                   len(MSG), ancbuf)
+        with downgrade_malformed_data_warning():  # TODO: gh-110012
+            msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock,
+                                                    len(MSG), ancbuf)
         self.assertEqual(msg, MSG)
         self.checkRecvmsgAddress(addr, self.cli_addr)
         self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC)
@@ -4298,8 +4318,9 @@ class RFC3542AncillaryTest(SendrecvmsgServerTimeoutBase):
         self.serv_sock.setsockopt(socket.IPPROTO_IPV6,
                                   socket.IPV6_RECVHOPLIMIT, 1)
         self.misc_event.set()
-        msg, ancdata, flags, addr = self.doRecvmsg(
-            self.serv_sock, len(MSG), socket.CMSG_LEN(SIZEOF_INT) - 1)
+        with downgrade_malformed_data_warning():  # TODO: gh-110012
+            msg, ancdata, flags, addr = self.doRecvmsg(
+                self.serv_sock, len(MSG), socket.CMSG_LEN(SIZEOF_INT) - 1)
 
         self.assertEqual(msg, MSG)
         self.checkRecvmsgAddress(addr, self.cli_addr)
@@ -4402,9 +4423,10 @@ class RFC3542AncillaryTest(SendrecvmsgServerTimeoutBase):
         self.serv_sock.setsockopt(socket.IPPROTO_IPV6,
                                   socket.IPV6_RECVTCLASS, 1)
         self.misc_event.set()
-        msg, ancdata, flags, addr = self.doRecvmsg(
-            self.serv_sock, len(MSG),
-            socket.CMSG_SPACE(SIZEOF_INT) + socket.CMSG_LEN(SIZEOF_INT) - 1)
+        with downgrade_malformed_data_warning():  # TODO: gh-110012
+            msg, ancdata, flags, addr = self.doRecvmsg(
+                self.serv_sock, len(MSG),
+                socket.CMSG_SPACE(SIZEOF_INT) + socket.CMSG_LEN(SIZEOF_INT) - 1)
 
         self.assertEqual(msg, MSG)
         self.checkRecvmsgAddress(addr, self.cli_addr)