Commit 22194505 authored by Martin Panter's avatar Martin Panter

Issue #27528: Document and test warning messages must match at beginning

parent 95f53c13
...@@ -141,14 +141,15 @@ the disposition of the match. Each entry is a tuple of the form (*action*, ...@@ -141,14 +141,15 @@ the disposition of the match. Each entry is a tuple of the form (*action*,
| | warnings, regardless of location | | | warnings, regardless of location |
+---------------+----------------------------------------------+ +---------------+----------------------------------------------+
* *message* is a string containing a regular expression that the warning message * *message* is a string containing a regular expression that the start of
must match (the match is compiled to always be case-insensitive). the warning message must match. The expression is compiled to always be
case-insensitive.
* *category* is a class (a subclass of :exc:`Warning`) of which the warning * *category* is a class (a subclass of :exc:`Warning`) of which the warning
category must be a subclass in order to match. category must be a subclass in order to match.
* *module* is a string containing a regular expression that the module name must * *module* is a string containing a regular expression that the module name must
match (the match is compiled to be case-sensitive). match. The expression is compiled to be case-sensitive.
* *lineno* is an integer that the line number where the warning occurred must * *lineno* is an integer that the line number where the warning occurred must
match, or ``0`` to match all line numbers. match, or ``0`` to match all line numbers.
......
...@@ -261,6 +261,18 @@ class FilterTests(BaseTest): ...@@ -261,6 +261,18 @@ class FilterTests(BaseTest):
self.assertEqual(str(w[-1].message), text) self.assertEqual(str(w[-1].message), text)
self.assertTrue(w[-1].category is UserWarning) self.assertTrue(w[-1].category is UserWarning)
def test_message_matching(self):
with original_warnings.catch_warnings(record=True,
module=self.module) as w:
self.module.simplefilter("ignore", UserWarning)
self.module.filterwarnings("error", "match", UserWarning)
self.assertRaises(UserWarning, self.module.warn, "match")
self.assertRaises(UserWarning, self.module.warn, "match prefix")
self.module.warn("suffix match")
self.assertEqual(w, [])
self.module.warn("something completely different")
self.assertEqual(w, [])
def test_mutate_filter_list(self): def test_mutate_filter_list(self):
class X: class X:
def match(self, a): def match(self, a):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment