https://github.com/python/cpython/commit/fbf0843e39e01ec8a8295f6475065b08053f13dd
commit: fbf0843e39e01ec8a8295f6475065b08053f13dd
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2025-10-17T14:21:39+03:00
summary:
gh-135801: Add tests for filtering warnings by module (GH-140240)
files:
M Lib/test/test_warnings/__init__.py
diff --git a/Lib/test/test_warnings/__init__.py
b/Lib/test/test_warnings/__init__.py
index 260fae8fe243b6..157852cfa91007 100644
--- a/Lib/test/test_warnings/__init__.py
+++ b/Lib/test/test_warnings/__init__.py
@@ -241,6 +241,85 @@ def test_once(self):
42)
self.assertEqual(len(w), 0)
+ def test_filter_module(self):
+ MS_WINDOWS = (sys.platform == 'win32')
+ with self.module.catch_warnings(record=True) as w:
+ self.module.simplefilter('error')
+ self.module.filterwarnings('always', module=r'package\.module\z')
+ self.module.warn_explicit('msg', UserWarning, 'filename', 42,
+ module='package.module')
+ self.assertEqual(len(w), 1)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
'/path/to/package/module', 42)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
'/path/to/package/module.py', 42)
+
+ with self.module.catch_warnings(record=True) as w:
+ self.module.simplefilter('error')
+ self.module.filterwarnings('always', module='package')
+ self.module.warn_explicit('msg', UserWarning, 'filename', 42,
+ module='package.module')
+ self.assertEqual(len(w), 1)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning, 'filename', 42,
+ module='other.package.module')
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
'/path/to/otherpackage/module.py', 42)
+
+ with self.module.catch_warnings(record=True) as w:
+ self.module.simplefilter('error')
+ self.module.filterwarnings('always',
module=r'/path/to/package/module\z')
+ self.module.warn_explicit('msg', UserWarning,
'/path/to/package/module', 42)
+ self.assertEqual(len(w), 1)
+ self.module.warn_explicit('msg', UserWarning,
'/path/to/package/module.py', 42)
+ self.assertEqual(len(w), 2)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
'/PATH/TO/PACKAGE/MODULE', 42)
+ if MS_WINDOWS:
+ if self.module is py_warnings:
+ self.module.warn_explicit('msg', UserWarning,
r'/path/to/package/module.PY', 42)
+ self.assertEqual(len(w), 3)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
r'/path/to/package/module/__init__.py', 42)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
r'/path/to/package/module.pyw', 42)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
r'\path\to\package\module', 42)
+
+ with self.module.catch_warnings(record=True) as w:
+ self.module.simplefilter('error')
+ self.module.filterwarnings('always',
module=r'/path/to/package/__init__\z')
+ self.module.warn_explicit('msg', UserWarning,
'/path/to/package/__init__.py', 42)
+ self.assertEqual(len(w), 1)
+ self.module.warn_explicit('msg', UserWarning,
'/path/to/package/__init__', 42)
+ self.assertEqual(len(w), 2)
+
+ if MS_WINDOWS:
+ with self.module.catch_warnings(record=True) as w:
+ self.module.simplefilter('error')
+ self.module.filterwarnings('always',
module=r'C:\\path\\to\\package\\module\z')
+ self.module.warn_explicit('msg', UserWarning,
r'C:\path\to\package\module', 42)
+ self.assertEqual(len(w), 1)
+ self.module.warn_explicit('msg', UserWarning,
r'C:\path\to\package\module.py', 42)
+ self.assertEqual(len(w), 2)
+ if self.module is py_warnings:
+ self.module.warn_explicit('msg', UserWarning,
r'C:\path\to\package\module.PY', 42)
+ self.assertEqual(len(w), 3)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
r'C:\path\to\package\module.pyw', 42)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
r'C:\PATH\TO\PACKAGE\MODULE', 42)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
r'C:/path/to/package/module', 42)
+ with self.assertRaises(UserWarning):
+ self.module.warn_explicit('msg', UserWarning,
r'C:\path\to\package\module\__init__.py', 42)
+
+ with self.module.catch_warnings(record=True) as w:
+ self.module.simplefilter('error')
+ self.module.filterwarnings('always', module=r'<unknown>\z')
+ self.module.warn_explicit('msg', UserWarning, '', 42)
+ self.assertEqual(len(w), 1)
+
def test_module_globals(self):
with self.module.catch_warnings(record=True) as w:
self.module.simplefilter("always", UserWarning)
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]