From 17e810e6eded12ee9e2c15838c84c1ba3e7ae44e Mon Sep 17 00:00:00 2001 From: CPython Developers <> Date: Sat, 31 Jan 2026 19:37:50 -0500 Subject: [PATCH] Update test_frozen from v3.14.2-288-g06f9c8ca1c --- Lib/test/test_frozen.py | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Lib/test/test_frozen.py diff --git a/Lib/test/test_frozen.py b/Lib/test/test_frozen.py new file mode 100644 index 000000000..0b4a12bcf --- /dev/null +++ b/Lib/test/test_frozen.py @@ -0,0 +1,56 @@ +"""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 importlib.machinery +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(): + import __hello__ + with captured_stdout() as out: + __hello__.main() + self.assertEqual(out.getvalue(), 'Hello world!\n') + + def test_frozen_submodule_in_unfrozen_package(self): + with import_helper.CleanImport('__phello__', '__phello__.spam'): + with import_helper.frozen_modules(enabled=False): + import __phello__ + with import_helper.frozen_modules(enabled=True): + import __phello__.spam as spam + self.assertIs(spam, __phello__.spam) + self.assertIsNot(__phello__.__spec__.loader, + importlib.machinery.FrozenImporter) + self.assertIs(spam.__spec__.loader, + importlib.machinery.FrozenImporter) + + def test_unfrozen_submodule_in_frozen_package(self): + with import_helper.CleanImport('__phello__', '__phello__.spam'): + with import_helper.frozen_modules(enabled=True): + import __phello__ + with import_helper.frozen_modules(enabled=False): + import __phello__.spam as spam + self.assertIs(spam, __phello__.spam) + self.assertIs(__phello__.__spec__.loader, + importlib.machinery.FrozenImporter) + self.assertIsNot(spam.__spec__.loader, + importlib.machinery.FrozenImporter) + + +if __name__ == '__main__': + unittest.main()