mirror of
https://github.com/python/cpython.git
synced 2025-07-12 13:55:34 +00:00
Issue #10372: Import the warnings module only after the IO library is
initialized, so as to avoid bootstrap issues with the '-W' option.
This commit is contained in:
parent
81c87c5e9a
commit
cf9f98034a
3 changed files with 30 additions and 8 deletions
|
@ -6,6 +6,7 @@ import sys
|
||||||
import unittest
|
import unittest
|
||||||
import subprocess
|
import subprocess
|
||||||
from test import support
|
from test import support
|
||||||
|
from test.script_helper import assert_python_ok
|
||||||
|
|
||||||
from test import warning_tests
|
from test import warning_tests
|
||||||
|
|
||||||
|
@ -393,6 +394,22 @@ class WCmdLineTests(unittest.TestCase):
|
||||||
self.module._setoption('error::Warning::0')
|
self.module._setoption('error::Warning::0')
|
||||||
self.assertRaises(UserWarning, self.module.warn, 'convert to error')
|
self.assertRaises(UserWarning, self.module.warn, 'convert to error')
|
||||||
|
|
||||||
|
def test_improper_option(self):
|
||||||
|
# Same as above, but check that the message is printed out when
|
||||||
|
# the interpreter is executed. This also checks that options are
|
||||||
|
# actually parsed at all.
|
||||||
|
rc, out, err = assert_python_ok("-Wxxx", "-c", "pass")
|
||||||
|
self.assertIn(b"Invalid -W option ignored: invalid action: 'xxx'", err)
|
||||||
|
|
||||||
|
def test_warnings_bootstrap(self):
|
||||||
|
# Check that the warnings module does get loaded when -W<some option>
|
||||||
|
# is used (see issue #10372 for an example of silent bootstrap failure).
|
||||||
|
rc, out, err = assert_python_ok("-Wi", "-c",
|
||||||
|
"import sys; sys.modules['warnings'].warn('foo', RuntimeWarning)")
|
||||||
|
# '-Wi' was observed
|
||||||
|
self.assertFalse(out.strip())
|
||||||
|
self.assertNotIn(b'RuntimeWarning', err)
|
||||||
|
|
||||||
class CWCmdLineTests(BaseTest, WCmdLineTests):
|
class CWCmdLineTests(BaseTest, WCmdLineTests):
|
||||||
module = c_warnings
|
module = c_warnings
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.2 Alpha 4?
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #10372: Import the warnings module only after the IO library is
|
||||||
|
initialized, so as to avoid bootstrap issues with the '-W' option.
|
||||||
|
|
||||||
- Issue #10293: Remove obsolete field in the PyMemoryView structure,
|
- Issue #10293: Remove obsolete field in the PyMemoryView structure,
|
||||||
unused undocumented value PyBUF_SHADOW, and strangely-looking code in
|
unused undocumented value PyBUF_SHADOW, and strangely-looking code in
|
||||||
PyMemoryView_GetContiguous.
|
PyMemoryView_GetContiguous.
|
||||||
|
|
|
@ -299,19 +299,21 @@ Py_InitializeEx(int install_sigs)
|
||||||
if (install_sigs)
|
if (install_sigs)
|
||||||
initsigs(); /* Signal handling stuff, including initintr() */
|
initsigs(); /* Signal handling stuff, including initintr() */
|
||||||
|
|
||||||
/* Initialize warnings. */
|
|
||||||
if (PySys_HasWarnOptions()) {
|
|
||||||
PyObject *warnings_module = PyImport_ImportModule("warnings");
|
|
||||||
if (!warnings_module)
|
|
||||||
PyErr_Clear();
|
|
||||||
Py_XDECREF(warnings_module);
|
|
||||||
}
|
|
||||||
|
|
||||||
initmain(); /* Module __main__ */
|
initmain(); /* Module __main__ */
|
||||||
if (initstdio() < 0)
|
if (initstdio() < 0)
|
||||||
Py_FatalError(
|
Py_FatalError(
|
||||||
"Py_Initialize: can't initialize sys standard streams");
|
"Py_Initialize: can't initialize sys standard streams");
|
||||||
|
|
||||||
|
/* Initialize warnings. */
|
||||||
|
if (PySys_HasWarnOptions()) {
|
||||||
|
PyObject *warnings_module = PyImport_ImportModule("warnings");
|
||||||
|
if (warnings_module == NULL) {
|
||||||
|
fprintf(stderr, "'import warnings' failed; traceback:\n");
|
||||||
|
PyErr_Print();
|
||||||
|
}
|
||||||
|
Py_XDECREF(warnings_module);
|
||||||
|
}
|
||||||
|
|
||||||
if (!Py_NoSiteFlag)
|
if (!Py_NoSiteFlag)
|
||||||
initsite(); /* Module site */
|
initsite(); /* Module site */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue