mirror of
https://github.com/python/cpython.git
synced 2025-12-15 21:44:50 +00:00
The _warnings module did not properly handle cases where strings were not being
passed in as the message to use for a warning. Fixed along with making the code more robust against other errors where return values were not checked. Closes issue 3639. Code review by Benjamin Peterson.
This commit is contained in:
parent
ec92e181fb
commit
54bd41d81b
3 changed files with 25 additions and 5 deletions
|
|
@ -202,6 +202,16 @@ class WarnTests(unittest.TestCase):
|
|||
self.assertEqual(str(w.message), text)
|
||||
self.assert_(w.category is UserWarning)
|
||||
|
||||
# Issue 3639
|
||||
def test_warn_nonstandard_types(self):
|
||||
# warn() should handle non-standard types without issue.
|
||||
for ob in (Warning, None, 42):
|
||||
with support.catch_warning(self.module) as w:
|
||||
self.module.warn(ob)
|
||||
# Don't directly compare objects since
|
||||
# ``Warning() != Warning()``.
|
||||
self.assertEquals(str(w.message), str(UserWarning(ob)))
|
||||
|
||||
def test_filename(self):
|
||||
with warnings_state(self.module):
|
||||
with support.catch_warning(self.module) as w:
|
||||
|
|
@ -315,7 +325,6 @@ class WarnTests(unittest.TestCase):
|
|||
self.module.warn_explicit,
|
||||
None, Warning, None, 1, registry=42)
|
||||
|
||||
|
||||
class CWarnTests(BaseTest, WarnTests):
|
||||
module = c_warnings
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue