mirror of
https://github.com/python/cpython.git
synced 2026-05-14 16:38:19 -04:00
1eaa1169c5
If the marshal or bytecode formats get changed, frozen.c needs to be updated as well. It can be easy to miss this step and not doing so can cause test_importlib to crash in mysterious ways. Add an explict unit test to make it easier to track down the problem.
31 lines
970 B
Python
31 lines
970 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
|
|
from importlib import util
|
|
|
|
|
|
class TestFrozen(unittest.TestCase):
|
|
def test_frozen(self):
|
|
name = '__hello__'
|
|
if name in sys.modules:
|
|
del sys.modules[name]
|
|
with captured_stdout() as out:
|
|
import __hello__
|
|
self.assertEqual(out.getvalue(), 'Hello world!\n')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|