mirror of
https://github.com/python/cpython.git
synced 2025-10-30 09:57:32 +00:00
Currently we freeze several modules into the runtime. For each of these modules it is essential to bootstrapping the runtime that they be frozen. Any other stdlib module that we later freeze into the runtime is not essential. We can just as well import from the .py file. This PR lets users explicitly choose which should be used, with the new "-X frozen_modules=[on|off]" CLI flag. The default is "off" for now. https://bugs.python.org/issue45020
30 lines
1,011 B
Python
30 lines
1,011 B
Python
"""Basic test of the frozen module (source is in Python/frozen.c)."""
|
|
|
|
# The Python/frozen.c source code contains a marshalled Python module
|
|
# and therefore depends on the marshal format as well as the bytecode
|
|
# format. If those formats have been changed then frozen.c needs to be
|
|
# updated.
|
|
#
|
|
# The test_importlib also tests this module but because those tests
|
|
# are much more complicated, it might be unclear why they are failing.
|
|
# Invalid marshalled data in frozen.c could case the interpreter to
|
|
# crash when __hello__ is imported.
|
|
|
|
import sys
|
|
import unittest
|
|
from test.support import captured_stdout, import_helper
|
|
|
|
|
|
class TestFrozen(unittest.TestCase):
|
|
def test_frozen(self):
|
|
name = '__hello__'
|
|
if name in sys.modules:
|
|
del sys.modules[name]
|
|
with import_helper.frozen_modules():
|
|
with captured_stdout() as out:
|
|
import __hello__
|
|
self.assertEqual(out.getvalue(), 'Hello world!\n')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|