diff options
author | Martin Panter <vadmium+py@gmail.com> | 2016-07-19 02:26:38 (GMT) |
---|---|---|
committer | Martin Panter <vadmium+py@gmail.com> | 2016-07-19 02:26:38 (GMT) |
commit | 221945056da4540506ff2303c07324e60b234e57 (patch) | |
tree | 3878c19b9a34c4d45e788cc01ed1fe3c9bea70fd | |
parent | 95f53c13ce54a56313bc4ce5af738b907a454125 (diff) | |
download | cpython-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.rst | 7 | ||||
-rw-r--r-- | Lib/test/test_warnings/__init__.py | 12 |
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): |