summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Panter <vadmium+py@gmail.com>2016-07-19 02:26:38 (GMT)
committerMartin Panter <vadmium+py@gmail.com>2016-07-19 02:26:38 (GMT)
commit221945056da4540506ff2303c07324e60b234e57 (patch)
tree3878c19b9a34c4d45e788cc01ed1fe3c9bea70fd
parent95f53c13ce54a56313bc4ce5af738b907a454125 (diff)
downloadcpython-221945056da4540506ff2303c07324e60b234e57.zip
cpython-221945056da4540506ff2303c07324e60b234e57.tar.gz
cpython-221945056da4540506ff2303c07324e60b234e57.tar.bz2
Issue #27528: Document and test warning messages must match at beginning
-rw-r--r--Doc/library/warnings.rst7
-rw-r--r--Lib/test/test_warnings/__init__.py12
2 files changed, 16 insertions, 3 deletions
diff --git a/Doc/library/warnings.rst b/Doc/library/warnings.rst
index 5212131..37f6874 100644
--- a/Doc/library/warnings.rst
+++ b/Doc/library/warnings.rst
@@ -141,14 +141,15 @@ the disposition of the match. Each entry is a tuple of the form (*action*,
| | warnings, regardless of location |
+---------------+----------------------------------------------+
-* *message* is a string containing a regular expression that the warning message
- must match (the match is compiled to always be case-insensitive).
+* *message* is a string containing a regular expression that the start of
+ 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 must be a subclass in order to match.
* *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
match, or ``0`` to match all line numbers.
diff --git a/Lib/test/test_warnings/__init__.py b/Lib/test/test_warnings/__init__.py
index a33404e..84a6fb5 100644
--- a/Lib/test/test_warnings/__init__.py
+++ b/Lib/test/test_warnings/__init__.py
@@ -261,6 +261,18 @@ class FilterTests(BaseTest):
self.assertEqual(str(w[-1].message), text)
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):
class X:
def match(self, a):