Skip to content

Commit 29a8ae8

Browse files
serhiy-storchakamiss-islington
authored andcommitted
pythongh-135801: Add tests for filtering warnings by module (pythonGH-140240)
(cherry picked from commit fbf0843) Co-authored-by: Serhiy Storchaka <[email protected]>
1 parent 5513f6a commit 29a8ae8

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

Lib/test/test_warnings/__init__.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,85 @@ def test_once(self):
241241
42)
242242
self.assertEqual(len(w), 0)
243243

244+
def test_filter_module(self):
245+
MS_WINDOWS = (sys.platform == 'win32')
246+
with self.module.catch_warnings(record=True) as w:
247+
self.module.simplefilter('error')
248+
self.module.filterwarnings('always', module=r'package\.module\z')
249+
self.module.warn_explicit('msg', UserWarning, 'filename', 42,
250+
module='package.module')
251+
self.assertEqual(len(w), 1)
252+
with self.assertRaises(UserWarning):
253+
self.module.warn_explicit('msg', UserWarning, '/path/to/package/module', 42)
254+
with self.assertRaises(UserWarning):
255+
self.module.warn_explicit('msg', UserWarning, '/path/to/package/module.py', 42)
256+
257+
with self.module.catch_warnings(record=True) as w:
258+
self.module.simplefilter('error')
259+
self.module.filterwarnings('always', module='package')
260+
self.module.warn_explicit('msg', UserWarning, 'filename', 42,
261+
module='package.module')
262+
self.assertEqual(len(w), 1)
263+
with self.assertRaises(UserWarning):
264+
self.module.warn_explicit('msg', UserWarning, 'filename', 42,
265+
module='other.package.module')
266+
with self.assertRaises(UserWarning):
267+
self.module.warn_explicit('msg', UserWarning, '/path/to/otherpackage/module.py', 42)
268+
269+
with self.module.catch_warnings(record=True) as w:
270+
self.module.simplefilter('error')
271+
self.module.filterwarnings('always', module=r'/path/to/package/module\z')
272+
self.module.warn_explicit('msg', UserWarning, '/path/to/package/module', 42)
273+
self.assertEqual(len(w), 1)
274+
self.module.warn_explicit('msg', UserWarning, '/path/to/package/module.py', 42)
275+
self.assertEqual(len(w), 2)
276+
with self.assertRaises(UserWarning):
277+
self.module.warn_explicit('msg', UserWarning, '/PATH/TO/PACKAGE/MODULE', 42)
278+
if MS_WINDOWS:
279+
if self.module is py_warnings:
280+
self.module.warn_explicit('msg', UserWarning, r'/path/to/package/module.PY', 42)
281+
self.assertEqual(len(w), 3)
282+
with self.assertRaises(UserWarning):
283+
self.module.warn_explicit('msg', UserWarning, r'/path/to/package/module/__init__.py', 42)
284+
with self.assertRaises(UserWarning):
285+
self.module.warn_explicit('msg', UserWarning, r'/path/to/package/module.pyw', 42)
286+
with self.assertRaises(UserWarning):
287+
self.module.warn_explicit('msg', UserWarning, r'\path\to\package\module', 42)
288+
289+
with self.module.catch_warnings(record=True) as w:
290+
self.module.simplefilter('error')
291+
self.module.filterwarnings('always', module=r'/path/to/package/__init__\z')
292+
self.module.warn_explicit('msg', UserWarning, '/path/to/package/__init__.py', 42)
293+
self.assertEqual(len(w), 1)
294+
self.module.warn_explicit('msg', UserWarning, '/path/to/package/__init__', 42)
295+
self.assertEqual(len(w), 2)
296+
297+
if MS_WINDOWS:
298+
with self.module.catch_warnings(record=True) as w:
299+
self.module.simplefilter('error')
300+
self.module.filterwarnings('always', module=r'C:\\path\\to\\package\\module\z')
301+
self.module.warn_explicit('msg', UserWarning, r'C:\path\to\package\module', 42)
302+
self.assertEqual(len(w), 1)
303+
self.module.warn_explicit('msg', UserWarning, r'C:\path\to\package\module.py', 42)
304+
self.assertEqual(len(w), 2)
305+
if self.module is py_warnings:
306+
self.module.warn_explicit('msg', UserWarning, r'C:\path\to\package\module.PY', 42)
307+
self.assertEqual(len(w), 3)
308+
with self.assertRaises(UserWarning):
309+
self.module.warn_explicit('msg', UserWarning, r'C:\path\to\package\module.pyw', 42)
310+
with self.assertRaises(UserWarning):
311+
self.module.warn_explicit('msg', UserWarning, r'C:\PATH\TO\PACKAGE\MODULE', 42)
312+
with self.assertRaises(UserWarning):
313+
self.module.warn_explicit('msg', UserWarning, r'C:/path/to/package/module', 42)
314+
with self.assertRaises(UserWarning):
315+
self.module.warn_explicit('msg', UserWarning, r'C:\path\to\package\module\__init__.py', 42)
316+
317+
with self.module.catch_warnings(record=True) as w:
318+
self.module.simplefilter('error')
319+
self.module.filterwarnings('always', module=r'<unknown>\z')
320+
self.module.warn_explicit('msg', UserWarning, '', 42)
321+
self.assertEqual(len(w), 1)
322+
244323
def test_module_globals(self):
245324
with self.module.catch_warnings(record=True) as w:
246325
self.module.simplefilter("always", UserWarning)

0 commit comments

Comments
 (0)