diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-09-29 23:58:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-29 23:58:57 (GMT) |
commit | c9ed9e6fc76323ed537fb79d4232bcd27d82c57e (patch) | |
tree | 32a06498ac936f1d1fded02332c6b5026b59032b /Lib/test/test_embed.py | |
parent | 19cd5951ec4480c7cfcbcc379b36902312cfb8b8 (diff) | |
download | cpython-c9ed9e6fc76323ed537fb79d4232bcd27d82c57e.zip cpython-c9ed9e6fc76323ed537fb79d4232bcd27d82c57e.tar.gz cpython-c9ed9e6fc76323ed537fb79d4232bcd27d82c57e.tar.bz2 |
bpo-38317: Fix PyConfig.warnoptions priority (GH-16478)
Fix warnings options priority: PyConfig.warnoptions has the highest
priority, as stated in the PEP 587.
* Document options order in PyConfig.warnoptions documentation.
* Make PyWideStringList_INIT macro private: replace "Py" prefix
with "_Py".
* test_embed: add test_init_warnoptions().
(cherry picked from commit fb4ae152a9930f0e00cae8b2807f534058cf341a)
Co-authored-by: Victor Stinner <vstinner@redhat.com>
Diffstat (limited to 'Lib/test/test_embed.py')
-rw-r--r-- | Lib/test/test_embed.py | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index ed2b96f..da79d7a 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -746,9 +746,9 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): 'cmdline_xoption', ], 'warnoptions': [ - 'config_warnoption', 'cmdline_warnoption', 'default::BytesWarning', + 'config_warnoption', ], 'run_command': 'pass\n', @@ -951,9 +951,9 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): 'faulthandler', ], 'warnoptions': [ - 'ignore:::config_warnoption', 'ignore:::cmdline_warnoption', 'ignore:::sysadd_warnoption', + 'ignore:::config_warnoption', ], } self.check_all_configs("test_init_sys_add", config, api=API_PYTHON) @@ -1267,6 +1267,30 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): self.assertEqual(Py_GetProgramFullPath(), config['executable']) self.assertEqual(Py_GetPythonHome(), config['home']) + def test_init_warnoptions(self): + # lowest to highest priority + warnoptions = [ + 'ignore:::PyConfig_Insert0', # PyWideStringList_Insert(0) + 'default', # PyConfig.dev_mode=1 + 'ignore:::env1', # PYTHONWARNINGS env var + 'ignore:::env2', # PYTHONWARNINGS env var + 'ignore:::cmdline1', # -W opt command line option + 'ignore:::cmdline2', # -W opt command line option + 'default::BytesWarning', # PyConfig.bytes_warnings=1 + 'ignore:::PySys_AddWarnOption1', # PySys_AddWarnOption() + 'ignore:::PySys_AddWarnOption2', # PySys_AddWarnOption() + 'ignore:::PyConfig_BeforeRead', # PyConfig.warnoptions + 'ignore:::PyConfig_AfterRead'] # PyWideStringList_Append() + preconfig = dict(allocator=PYMEM_ALLOCATOR_DEBUG) + config = { + 'dev_mode': 1, + 'faulthandler': 1, + 'bytes_warning': 1, + 'warnoptions': warnoptions, + } + self.check_all_configs("test_init_warnoptions", config, preconfig, + api=API_PYTHON) + class AuditingTests(EmbeddingTestsMixin, unittest.TestCase): def test_open_code_hook(self): |