Browse Source

tests: Add unit test for `Freezer.generateRuntimeFromStub`

rdb 2 years ago
parent
commit
f24a18f45e
1 changed files with 34 additions and 0 deletions
  1. 34 0
      tests/dist/test_FreezeTool.py

+ 34 - 0
tests/dist/test_FreezeTool.py

@@ -1,4 +1,6 @@
 from direct.dist.FreezeTool import Freezer, PandaModuleFinder
 from direct.dist.FreezeTool import Freezer, PandaModuleFinder
+import pytest
+import os
 import sys
 import sys
 
 
 
 
@@ -62,3 +64,35 @@ def test_Freezer_getModulePath_getModuleStar(tmp_path):
         assert freezer.getModuleStar("module3") == ['test']
         assert freezer.getModuleStar("module3") == ['test']
     finally:
     finally:
         sys.path = backup
         sys.path = backup
+
+
[email protected]("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)