summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2021-10-25 21:26:41 (GMT)
committerGitHub <noreply@github.com>2021-10-25 21:26:41 (GMT)
commit6afb285ff0790471a6858e44f85d143f07fda70c (patch)
tree4e8505fe17c108c8a58aecea7111775b59a66b29 /Lib
parent2b8677a3cd855eb3a579894c64588eab0e006269 (diff)
downloadcpython-6afb285ff0790471a6858e44f85d143f07fda70c.zip
cpython-6afb285ff0790471a6858e44f85d143f07fda70c.tar.gz
cpython-6afb285ff0790471a6858e44f85d143f07fda70c.tar.bz2
bpo-45020: Add tests for the -X "frozen_modules" option. (gh-28997)
We hadn't explicitly added any tests for this, so here they are. https://bugs.python.org/issue45020
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_cmd_line.py15
-rw-r--r--Lib/test/test_embed.py24
2 files changed, 39 insertions, 0 deletions
diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py
index 1dc8c45..86ee274 100644
--- a/Lib/test/test_cmd_line.py
+++ b/Lib/test/test_cmd_line.py
@@ -123,6 +123,21 @@ class CmdLineTest(unittest.TestCase):
else:
self.assertEqual(err, b'')
+ def test_xoption_frozen_modules(self):
+ tests = {
+ ('=on', 'FrozenImporter'),
+ ('=off', 'SourceFileLoader'),
+ ('=', 'FrozenImporter'),
+ ('', 'FrozenImporter'),
+ }
+ for raw, expected in tests:
+ cmd = ['-X', f'frozen_modules{raw}',
+ #'-c', 'import os; print(os.__spec__.loader.__name__, end="")']
+ '-c', 'import os; print(os.__spec__.loader, end="")']
+ with self.subTest(raw):
+ res = assert_python_ok(*cmd)
+ self.assertRegex(res.out.decode('utf-8'), expected)
+
def test_run_module(self):
# Test expected operation of the '-m' switch
# Switch needs an argument
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 4186f01..7858f68 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -1466,6 +1466,30 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
self.run_embedded_interpreter("test_get_argc_argv")
# ignore output
+ def test_init_use_frozen_modules(self):
+ tests = {
+ ('=on', 1),
+ ('=off', 0),
+ ('=', 1),
+ ('', 1),
+ }
+ for raw, expected in tests:
+ optval = f'frozen_modules{raw}'
+ config = {
+ 'parse_argv': 2,
+ 'argv': ['-c'],
+ 'orig_argv': ['./argv0', '-X', optval, '-c', 'pass'],
+ 'program_name': './argv0',
+ 'run_command': 'pass\n',
+ 'use_environment': 1,
+ 'xoptions': [optval],
+ 'use_frozen_modules': expected,
+ }
+ env = {'TESTFROZEN': raw[1:]} if raw else None
+ with self.subTest(repr(raw)):
+ self.check_all_configs("test_init_use_frozen_modules", config,
+ api=API_PYTHON, env=env)
+
class SetConfigTests(unittest.TestCase):
def test_set_config(self):