summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_embed.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_embed.py')
-rw-r--r--Lib/test/test_embed.py105
1 files changed, 65 insertions, 40 deletions
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index c389df8..6b77a2d 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -285,6 +285,16 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
'coerce_c_locale_warn': 0,
'utf8_mode': 0,
}
+ ISOLATED_PRE_CONFIG = dict(DEFAULT_PRE_CONFIG,
+ configure_locale=0,
+ isolated=1,
+ use_environment=0,
+ utf8_mode=0,
+ dev_mode=0,
+ )
+ if MS_WINDOWS:
+ ISOLATED_PRE_CONFIG['legacy_windows_fs_encoding'] = 0
+
COPY_PRE_CONFIG = [
'dev_mode',
'isolated',
@@ -363,6 +373,24 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
'legacy_windows_stdio': 0,
})
+ PYTHON_CORE_CONFIG = dict(DEFAULT_CORE_CONFIG,
+ configure_c_stdio=1,
+ parse_argv=1,
+ )
+ ISOLATED_CORE_CONFIG = dict(DEFAULT_CORE_CONFIG,
+ isolated=1,
+ use_environment=0,
+ user_site_directory=0,
+ dev_mode=0,
+ install_signal_handlers=0,
+ use_hash_seed=0,
+ faulthandler=0,
+ tracemalloc=0,
+ pathconfig_warnings=0,
+ )
+ if MS_WINDOWS:
+ ISOLATED_CORE_CONFIG['legacy_windows_stdio'] = 0
+
# global config
DEFAULT_GLOBAL_CONFIG = {
'Py_HasFileSystemDefaultEncoding': 0,
@@ -410,8 +438,15 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
xoptions[opt] = True
return xoptions
- def get_expected_config(self, expected_preconfig, expected, env, add_path=None):
- expected = dict(self.DEFAULT_CORE_CONFIG, **expected)
+ def get_expected_config(self, expected_preconfig, expected, env, api,
+ add_path=None):
+ if api == "python":
+ default_config = self.PYTHON_CORE_CONFIG
+ elif api == "isolated":
+ default_config = self.ISOLATED_CORE_CONFIG
+ else:
+ default_config = self.DEFAULT_CORE_CONFIG
+ expected = dict(default_config, **expected)
code = textwrap.dedent('''
import json
@@ -521,8 +556,8 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
self.assertEqual(config['global_config'], expected)
- def check_config(self, testname, expected_config, expected_preconfig,
- add_path=None, stderr=None):
+ def check_config(self, testname, expected_config=None, expected_preconfig=None,
+ add_path=None, stderr=None, api="default"):
env = dict(os.environ)
# Remove PYTHON* environment variables to get deterministic environment
for key in list(env):
@@ -533,8 +568,18 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
env['PYTHONCOERCECLOCALE'] = '0'
env['PYTHONUTF8'] = '0'
- expected_preconfig = dict(self.DEFAULT_PRE_CONFIG, **expected_preconfig)
- expected_config = self.get_expected_config(expected_preconfig, expected_config, env, add_path)
+ if api == "isolated":
+ default_preconfig = self.ISOLATED_PRE_CONFIG
+ else:
+ default_preconfig = self.DEFAULT_PRE_CONFIG
+ if expected_preconfig is None:
+ expected_preconfig = {}
+ expected_preconfig = dict(default_preconfig, **expected_preconfig)
+ if expected_config is None:
+ expected_config = {}
+ expected_config = self.get_expected_config(expected_preconfig,
+ expected_config, env,
+ api, add_path)
for key in self.COPY_PRE_CONFIG:
if key not in expected_preconfig:
expected_preconfig[key] = expected_config[key]
@@ -677,76 +722,56 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
'dev_mode': 1,
'warnoptions': ['default'],
}
- self.check_config("init_dev_mode", config, preconfig)
+ self.check_config("init_dev_mode", config, preconfig, api="python")
def test_init_isolated_flag(self):
- preconfig = {}
config = {
'isolated': 1,
'use_environment': 0,
'user_site_directory': 0,
}
- self.check_config("init_isolated_flag", config, preconfig)
+ self.check_config("init_isolated_flag", config, api="python")
def test_preinit_isolated1(self):
# _PyPreConfig.isolated=1, _PyCoreConfig.isolated not set
- preconfig = {}
config = {
'isolated': 1,
'use_environment': 0,
'user_site_directory': 0,
}
- self.check_config("preinit_isolated1", config, preconfig)
+ self.check_config("preinit_isolated1", config)
def test_preinit_isolated2(self):
# _PyPreConfig.isolated=0, _PyCoreConfig.isolated=1
- preconfig = {}
config = {
'isolated': 1,
'use_environment': 0,
'user_site_directory': 0,
}
- self.check_config("preinit_isolated2", config, preconfig)
+ self.check_config("preinit_isolated2", config)
def test_init_isolated_config(self):
- preconfig = {
- 'configure_locale': 0,
- }
- config = {
- 'isolated': 1,
- 'use_environment': 0,
- 'user_site_directory': 0,
- 'install_signal_handlers': 0,
- 'pathconfig_warnings': 0,
- }
- self.check_config("init_isolated_config", config, preconfig)
+ self.check_config("init_isolated_config", api="isolated")
def test_init_python_config(self):
- preconfig = {}
- config = {
- 'configure_c_stdio': 1,
- 'parse_argv': 1,
- }
- self.check_config("init_python_config", config, preconfig)
+ self.check_config("init_python_config", api="python")
def test_init_dont_configure_locale(self):
# _PyPreConfig.configure_locale=0
preconfig = {
'configure_locale': 0,
}
- self.check_config("init_dont_configure_locale", {}, preconfig)
+ self.check_config("init_dont_configure_locale", {}, preconfig, api="python")
def test_init_read_set(self):
- preconfig = {}
core_config = {
'program_name': './init_read_set',
'executable': 'my_executable',
}
- self.check_config("init_read_set", core_config, preconfig,
+ self.check_config("init_read_set", core_config, api="python",
add_path="init_read_set_path")
def test_init_run_main(self):
- preconfig = {}
code = ('import _testinternalcapi, json; '
'print(json.dumps(_testinternalcapi.get_configs()))')
core_config = {
@@ -755,10 +780,9 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
'run_command': code + '\n',
'parse_argv': 1,
}
- self.check_config("init_run_main", core_config, preconfig)
+ self.check_config("init_run_main", core_config, api="python")
def test_init_main(self):
- preconfig = {}
code = ('import _testinternalcapi, json; '
'print(json.dumps(_testinternalcapi.get_configs()))')
core_config = {
@@ -768,25 +792,26 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
'parse_argv': 1,
'_init_main': 0,
}
- self.check_config("init_main", core_config, preconfig,
+ self.check_config("init_main", core_config, api="python",
stderr="Run Python code before _Py_InitializeMain")
def test_init_parse_argv(self):
core_config = {
+ 'parse_argv': 1,
'argv': ['-c', 'arg1', '-v', 'arg3'],
'program_name': './argv0',
- 'parse_argv': 1,
'run_command': 'pass\n',
'use_environment': 0,
}
- self.check_config("init_parse_argv", core_config, {})
+ self.check_config("init_parse_argv", core_config, api="python")
def test_init_dont_parse_argv(self):
core_config = {
+ 'parse_argv': 0,
'argv': ['./argv0', '-E', '-c', 'pass', 'arg1', '-v', 'arg3'],
'program_name': './argv0',
}
- self.check_config("init_dont_parse_argv", core_config, {})
+ self.check_config("init_dont_parse_argv", core_config, api="python")
if __name__ == "__main__":