From f24a18f45e1c71108689f94f5784dc3dd7bd06a8 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 14 Oct 2023 09:54:42 +0200 Subject: [PATCH] tests: Add unit test for `Freezer.generateRuntimeFromStub` --- tests/dist/test_FreezeTool.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/tests/dist/test_FreezeTool.py b/tests/dist/test_FreezeTool.py index 898c53e7e1..c9cfa364fc 100644 --- a/tests/dist/test_FreezeTool.py +++ b/tests/dist/test_FreezeTool.py @@ -1,4 +1,6 @@ from direct.dist.FreezeTool import Freezer, PandaModuleFinder +import pytest +import os import sys @@ -62,3 +64,35 @@ def test_Freezer_getModulePath_getModuleStar(tmp_path): assert freezer.getModuleStar("module3") == ['test'] finally: sys.path = backup + + +@pytest.mark.parametrize("use_console", (False, True)) +def test_Freezer_generateRuntimeFromStub(tmp_path, use_console): + try: + # If installed as a wheel + import panda3d_tools + bin_dir = os.path.dirname(panda3d_tools.__file__) + except: + import panda3d + bin_dir = os.path.join(os.path.dirname(os.path.dirname(panda3d.__file__)), 'bin') + + if sys.platform == 'win32': + suffix = '.exe' + else: + suffix = '' + + if not use_console: + stub_file = os.path.join(bin_dir, 'deploy-stubw' + suffix) + + if use_console or not os.path.isfile(stub_file): + stub_file = os.path.join(bin_dir, 'deploy-stub' + suffix) + + if not os.path.isfile(stub_file): + pytest.skip("Unable to find deploy-stub executable") + + target = str(tmp_path / 'stubtest') + + freezer = Freezer() + freezer.addModule('__main__', 'main.py', text='print("Hello world")') + freezer.done(addStartupModules=True) + freezer.generateRuntimeFromStub(target, open(stub_file, 'rb'), use_console)