Browse Source

mac: fix type of env vars passed to `Popen`

Fabian Peter Hammerle 4 years ago
parent
commit
0d16f173f0
2 changed files with 34 additions and 3 deletions
  1. 32 1
      tests/test_api.py
  2. 2 2
      tooncher/__init__.py

+ 32 - 1
tests/test_api.py

@@ -1,6 +1,7 @@
 import pathlib
 import shutil
 import subprocess
+import unittest.mock
 
 import pytest
 
@@ -17,7 +18,37 @@ def test_start_engine():
     )
     assert isinstance(process, subprocess.Popen)
     stdout, stderr = process.communicate()
-    assert b"" == stderr
+    assert not stderr
     env = stdout.strip().split(b"\n")
     assert b"TTR_GAMESERVER=gameserver" in env
     assert b"TTR_PLAYCOOKIE=cookie" in env
+
+
+def test_start_engine_mac():
+    app_support_path = "/Users/fabianpeter/Library/Application Support"
+    with unittest.mock.patch("subprocess.Popen") as popen_mock:
+        with unittest.mock.patch("sys.platform", "darwin"):
+            tooncher.start_engine(
+                engine_path=pathlib.PosixPath(
+                    app_support_path + "/Toontown Rewritten/Toontown Rewritten"
+                ),
+                gameserver="gameserver",
+                playcookie="cookie",
+                check=True,
+            )
+    popen_mock.assert_called_once_with(
+        args=[
+            "/Users/fabianpeter/Library/Application Support/Toontown Rewritten/Toontown Rewritten"
+        ],
+        check=True,
+        cwd=pathlib.PosixPath(
+            "/Users/fabianpeter/Library/Application Support/Toontown Rewritten"
+        ),
+        env={
+            "TTR_GAMESERVER": "gameserver",
+            "TTR_PLAYCOOKIE": "cookie",
+            "DYLD_LIBRARY_PATH": app_support_path
+            + "/Toontown Rewritten/Libraries.bundle",
+            "DYLD_FRAMEWORK_PATH": app_support_path + "/Toontown Rewritten/Frameworks",
+        },
+    )

+ 2 - 2
tooncher/__init__.py

@@ -25,8 +25,8 @@ def start_engine(
     }
     engine_path = engine_path.resolve()
     if sys.platform == "darwin":
-        env["DYLD_LIBRARY_PATH"] = engine_path.parent.joinpath("Libraries.bundle")
-        env["DYLD_FRAMEWORK_PATH"] = engine_path.parent.joinpath("Frameworks")
+        env["DYLD_LIBRARY_PATH"] = str(engine_path.parent.joinpath("Libraries.bundle"))
+        env["DYLD_FRAMEWORK_PATH"] = str(engine_path.parent.joinpath("Frameworks"))
     elif sys.platform == "linux" and "XAUTHORITY" in os.environ:
         # Fix for TTREngine reporting:
         # > :display:x11display(error): Could not open display ":0.0".