mirror of
https://github.com/python/cpython
synced 2026-09-29 10:30:29 +03:00
Issue #20355: -W command line options now have higher priority than the PYTHONWARNINGS environment variable. Patch by Arfrever.
This commit is contained in:
parent
7fae75a415
commit
6999441d62
3 changed files with 35 additions and 3 deletions
|
|
@ -5,7 +5,7 @@ from io import StringIO
|
|||
import sys
|
||||
import unittest
|
||||
from test import support
|
||||
from test.script_helper import assert_python_ok
|
||||
from test.script_helper import assert_python_ok, assert_python_failure
|
||||
|
||||
from test import warning_tests
|
||||
|
||||
|
|
@ -748,7 +748,19 @@ class EnvironmentVariableTests(BaseTest):
|
|||
"import sys; sys.stdout.write(str(sys.warnoptions))",
|
||||
PYTHONWARNINGS="ignore::DeprecationWarning")
|
||||
self.assertEqual(stdout,
|
||||
b"['ignore::UnicodeWarning', 'ignore::DeprecationWarning']")
|
||||
b"['ignore::DeprecationWarning', 'ignore::UnicodeWarning']")
|
||||
|
||||
def test_conflicting_envvar_and_command_line(self):
|
||||
rc, stdout, stderr = assert_python_failure("-Werror::DeprecationWarning", "-c",
|
||||
"import sys, warnings; sys.stdout.write(str(sys.warnoptions)); "
|
||||
"warnings.warn('Message', DeprecationWarning)",
|
||||
PYTHONWARNINGS="default::DeprecationWarning")
|
||||
self.assertEqual(stdout,
|
||||
b"['default::DeprecationWarning', 'error::DeprecationWarning']")
|
||||
self.assertEqual(stderr.splitlines(),
|
||||
[b"Traceback (most recent call last):",
|
||||
b" File \"<string>\", line 1, in <module>",
|
||||
b"DeprecationWarning: Message"])
|
||||
|
||||
@unittest.skipUnless(sys.getfilesystemencoding() != 'ascii',
|
||||
'requires non-ascii filesystemencoding')
|
||||
|
|
|
|||
|
|
@ -10,6 +10,9 @@ Release date: TBA
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #20355: -W command line options now have higher priority than the
|
||||
PYTHONWARNINGS environment variable. Patch by Arfrever.
|
||||
|
||||
- Issue #21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.
|
||||
|
||||
- Issue #20904: Support setting FPU precision on m68k.
|
||||
|
|
|
|||
|
|
@ -343,6 +343,8 @@ Py_Main(int argc, wchar_t **argv)
|
|||
int version = 0;
|
||||
int saw_unbuffered_flag = 0;
|
||||
PyCompilerFlags cf;
|
||||
PyObject *warning_option = NULL;
|
||||
PyObject *warning_options = NULL;
|
||||
|
||||
cf.cf_flags = 0;
|
||||
|
||||
|
|
@ -465,7 +467,15 @@ Py_Main(int argc, wchar_t **argv)
|
|||
break;
|
||||
|
||||
case 'W':
|
||||
PySys_AddWarnOption(_PyOS_optarg);
|
||||
if (warning_options == NULL)
|
||||
warning_options = PyList_New(0);
|
||||
if (warning_options == NULL)
|
||||
Py_FatalError("failure in handling of -W argument");
|
||||
warning_option = PyUnicode_FromWideChar(_PyOS_optarg, -1);
|
||||
if (warning_option == NULL)
|
||||
Py_FatalError("failure in handling of -W argument");
|
||||
PyList_Append(warning_options, warning_option);
|
||||
Py_DECREF(warning_option);
|
||||
break;
|
||||
|
||||
case 'X':
|
||||
|
|
@ -559,6 +569,12 @@ Py_Main(int argc, wchar_t **argv)
|
|||
PyMem_RawFree(buf);
|
||||
}
|
||||
#endif
|
||||
if (warning_options != NULL) {
|
||||
Py_ssize_t i;
|
||||
for (i = 0; i < PyList_GET_SIZE(warning_options); i++) {
|
||||
PySys_AddWarnOptionUnicode(PyList_GET_ITEM(warning_options, i));
|
||||
}
|
||||
}
|
||||
|
||||
if (command == NULL && module == NULL && _PyOS_optind < argc &&
|
||||
wcscmp(argv[_PyOS_optind], L"-") != 0)
|
||||
|
|
@ -652,6 +668,7 @@ Py_Main(int argc, wchar_t **argv)
|
|||
Py_SetProgramName(argv[0]);
|
||||
#endif
|
||||
Py_Initialize();
|
||||
Py_XDECREF(warning_options);
|
||||
|
||||
if (!Py_QuietFlag && (Py_VerboseFlag ||
|
||||
(command == NULL && filename == NULL &&
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue