소스 검색

tests: Fix running tests on Windows and with Python 2.7

rdb 2 년 전
부모
커밋
b2465c3b38
3개의 변경된 파일21개의 추가작업 그리고 14개의 파일을 삭제
  1. 4 0
      direct/src/dist/FreezeTool.py
  2. 10 9
      tests/dist/test_FreezeTool.py
  3. 7 5
      tests/showbase/test_Loader.py

+ 4 - 0
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:

+ 10 - 9
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")')

+ 7 - 5
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"