Kaydet (Commit) 60599525 authored tarafından Serhiy Storchaka's avatar Serhiy Storchaka

Issue #23016: A warning no longer produces AttributeError when the program

is run with pythonw.exe.
üst 82c05a54
......@@ -631,6 +631,15 @@ class _WarningsTests(BaseTest, unittest.TestCase):
finally:
globals_dict['__file__'] = oldfile
def test_stderr_none(self):
rc, stdout, stderr = assert_python_ok("-c",
"import sys; sys.stderr = None; "
"import warnings; warnings.simplefilter('always'); "
"warnings.warn('Warning!')")
self.assertEqual(stdout, b'')
self.assertNotIn(b'Warning!', stderr)
self.assertNotIn(b'Error', stderr)
class WarningsDisplayTests(BaseTest):
......
......@@ -11,6 +11,9 @@ def showwarning(message, category, filename, lineno, file=None, line=None):
"""Hook to write a warning to a file; replace if you like."""
if file is None:
file = sys.stderr
if file is None:
# sys.stderr is None when ran with pythonw.exe - warnings get lost
return
try:
file.write(formatwarning(message, category, filename, lineno, line))
except OSError:
......
......@@ -39,6 +39,9 @@ Core and Builtins
Library
-------
- Issue #23016: A warning no longer produces an AttributeError when the program
is run with pythonw.exe.
- Issue #21775: shutil.copytree(): fix crash when copying to VFAT. An exception
handler assumed that that OSError objects always have a 'winerror' attribute.
That is not the case, so the exception handler itself raised AttributeError
......
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