diff --git a/direct/src/dist/FreezeTool.py b/direct/src/dist/FreezeTool.py index ce0aa1ad38..5d9d785e4e 100644 --- a/direct/src/dist/FreezeTool.py +++ b/direct/src/dist/FreezeTool.py @@ -1420,6 +1420,10 @@ class Freezer: fp = open(pathname, 'rb') stuff = ("", "rb", _PY_COMPILED) self.mf.load_module(mdef.moduleName, fp, pathname, stuff) + elif isinstance(mdef.text, bytes): + stuff = ("", "rb", _PY_SOURCE) + fp = io.BytesIO(mdef.text) + self.mf.load_module(mdef.moduleName, fp, pathname, stuff) else: stuff = ("", "rb", _PY_SOURCE) if mdef.text: diff --git a/tests/dist/test_FreezeTool.py b/tests/dist/test_FreezeTool.py index c9cfa364fc..31d8e05438 100644 --- a/tests/dist/test_FreezeTool.py +++ b/tests/dist/test_FreezeTool.py @@ -2,6 +2,8 @@ from direct.dist.FreezeTool import Freezer, PandaModuleFinder import pytest import os import sys +import subprocess +import platform def test_Freezer_moduleSuffixes(): @@ -16,24 +18,23 @@ def test_Freezer_getModulePath_getModuleStar(tmp_path): # Package 1 can be imported package1 = tmp_path / "package1" package1.mkdir() - (package1 / "submodule1.py").write_text("") - (package1 / "__init__.py").write_text("") + (package1 / "submodule1.py").write_text(u"") + (package1 / "__init__.py").write_text(u"") # Package 2 can not be imported package2 = tmp_path / "package2" package2.mkdir() - (package2 / "submodule2.py").write_text("") - (package2 / "__init__.py").write_text("raise ImportError\n") + (package2 / "submodule2.py").write_text(u"") + (package2 / "__init__.py").write_text(u"raise ImportError\n") # Module 1 can be imported - (tmp_path / "module1.py").write_text("") + (tmp_path / "module1.py").write_text(u"") # Module 2 can not be imported - (tmp_path / "module2.py").write_text("raise ImportError\n") + (tmp_path / "module2.py").write_text(u"raise ImportError\n") # Module 3 has a custom __path__ and __all__ - (tmp_path / "module3.py").write_text("__path__ = ['foobar']\n" - "__all__ = ['test']\n") + (tmp_path / "module3.py").write_text(u"__path__ = ['foobar']\n__all__ = ['test']\n") backup = sys.path try: @@ -90,7 +91,7 @@ def test_Freezer_generateRuntimeFromStub(tmp_path, use_console): if not os.path.isfile(stub_file): pytest.skip("Unable to find deploy-stub executable") - target = str(tmp_path / 'stubtest') + target = str(tmp_path / ('stubtest' + suffix)) freezer = Freezer() freezer.addModule('__main__', 'main.py', text='print("Hello world")') diff --git a/tests/showbase/test_Loader.py b/tests/showbase/test_Loader.py index 2414e0f385..2073803c65 100644 --- a/tests/showbase/test_Loader.py +++ b/tests/showbase/test_Loader.py @@ -73,7 +73,7 @@ def test_load_model_okmissing(loader): def test_loader_entry_points(tmp_path): # A dummy loader for .fnrgl files. - (tmp_path / "fnargle.py").write_text(""" + (tmp_path / "fnargle.py").write_text(u""" from panda3d.core import ModelRoot import sys @@ -89,18 +89,18 @@ class FnargleLoader: return ModelRoot("fnargle") """) (tmp_path / "fnargle.dist-info").mkdir() - (tmp_path / "fnargle.dist-info" / "METADATA").write_text(""" + (tmp_path / "fnargle.dist-info" / "METADATA").write_text(u""" Metadata-Version: 2.0 Name: fnargle Version: 1.0.0 """) - (tmp_path / "fnargle.dist-info" / "entry_points.txt").write_text(""" + (tmp_path / "fnargle.dist-info" / "entry_points.txt").write_text(u""" [panda3d.loaders] fnrgl = fnargle:FnargleLoader """) model_path = tmp_path / "test.fnrgl" - model_path.write_text("") + model_path.write_text(u"") if sys.version_info >= (3, 11): import sysconfig @@ -151,7 +151,9 @@ fnrgl = fnargle:FnargleLoader assert 'fnargle' in sys.modules # Now try loading a fnargle file - model = loader.load_model(model_path) + model_fn = Filename(model_path) + model_fn.make_true_case() + model = loader.load_model(model_fn) assert model is not None assert model.name == "fnargle"