Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
gh-135801: Add tests for filtering warnings by module (GH-140240)
(cherry picked from commit fbf0843)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
  • Loading branch information
serhiy-storchaka authored and miss-islington committed Oct 17, 2025
commit c9451566a7d7e45859d0f8018b5c1e6e57ed52c3
79 changes: 79 additions & 0 deletions Lib/test/test_warnings/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,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 original_warnings.catch_warnings(record=True,
module=self.module) as w:
Expand Down
Loading