tests: Add unit test for `Freezer.generateRuntimeFromStub`

This commit is contained in:
rdb 2023-10-14 09:54:42 +02:00
parent bf456baa35
commit f24a18f45e
1 changed files with 34 additions and 0 deletions

View File

@ -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)