Add ULWGL_ID to dict

- Also, update the test to check for expected environment variables in the dictionary. Notably, when a valid ULWGL_ID is set, the STEAM_COMPAT_ID and related env var should be the stripped ULWGL_ID.
This commit is contained in:
R1kaB3rN 2024-02-12 18:20:15 -08:00
parent d5772c0eb3
commit 14b323e3dc
No known key found for this signature in database
2 changed files with 135 additions and 1 deletions

View File

@ -287,6 +287,7 @@ def main() -> None: # noqa: D103
"STEAM_RUNTIME_LIBRARY_PATH": "", "STEAM_RUNTIME_LIBRARY_PATH": "",
"STORE": "", "STORE": "",
"PROTON_VERB": "", "PROTON_VERB": "",
"ULWGL_ID": "",
} }
command: List[str] = [] command: List[str] = []
args: Union[Namespace, Tuple[str, List[str]]] = parse_args() args: Union[Namespace, Tuple[str, List[str]]] = parse_args()

View File

@ -680,10 +680,105 @@ class TestGameLauncher(unittest.TestCase):
"Expected PROTON_VERB to be set", "Expected PROTON_VERB to be set",
) )
def test_set_env_id(self):
"""Test set_env.
Verify that environment variables (dictionary) are set after calling set_env when passing a valid ULWGL_ID
When a valid ULWGL_ID is set, the STEAM_COMPAT_APP_ID variables should be the stripped ULWGL_ID
"""
result = None
test_str = "foo"
ulwgl_id = "ulwgl-271590"
# Replicate the usage WINEPREFIX= PROTONPATH= GAMEID= STORE= PROTON_VERB= ulwgl_run foo.exe
with patch("sys.argv", ["", self.test_exe]):
os.environ["WINEPREFIX"] = self.test_file
os.environ["PROTONPATH"] = self.test_file
os.environ["GAMEID"] = ulwgl_id
os.environ["STORE"] = test_str
os.environ["PROTON_VERB"] = self.test_verb
# Args
result = ulwgl_run.parse_args()
self.assertIsInstance(result, tuple, "Expected a tuple")
self.assertIsInstance(result[0], str, "Expected a string")
self.assertIsInstance(result[1], list, "Expected a list as options")
self.assertEqual(
result[0], "./tmp.WMYQiPb9A/foo", "Expected EXE to be unexpanded"
)
self.assertFalse(
result[1], "Expected an empty list when passing no options"
)
# Check
ulwgl_run.check_env(self.env)
# Prefix
ulwgl_run.setup_pfx(self.env["WINEPREFIX"])
# Env
result = ulwgl_run.set_env(self.env, result[0:])
self.assertTrue(result is self.env, "Expected the same reference")
path_exe = Path(self.test_exe).expanduser().as_posix()
path_file = Path(self.test_file).expanduser().as_posix()
# After calling set_env all paths should be expanded POSIX form
self.assertEqual(self.env["EXE"], path_exe, "Expected EXE to be expanded")
self.assertEqual(self.env["STORE"], test_str, "Expected STORE to be set")
self.assertEqual(
self.env["PROTONPATH"], path_file, "Expected PROTONPATH to be set"
)
self.assertEqual(
self.env["WINEPREFIX"], path_file, "Expected WINEPREFIX to be set"
)
self.assertEqual(self.env["GAMEID"], ulwgl_id, "Expected GAMEID to be set")
self.assertEqual(
self.env["PROTON_VERB"],
self.test_verb,
"Expected PROTON_VERB to be set",
)
# ULWGL
self.assertEqual(
self.env["ULWGL_ID"],
self.env["GAMEID"],
"Expected ULWGL_ID to be GAMEID",
)
self.assertEqual(self.env["ULWGL_ID"], ulwgl_id, "Expected ULWGL_ID")
# Should be stripped -- everything after the hyphen
self.assertEqual(
self.env["STEAM_COMPAT_APP_ID"],
ulwgl_id[ulwgl_id.find("-") + 1 :],
"Expected STEAM_COMPAT_APP_ID to be the stripped ULWGL_ID",
)
self.assertEqual(
self.env["SteamAppId"],
self.env["STEAM_COMPAT_APP_ID"],
"Expected SteamAppId to be STEAM_COMPAT_APP_ID",
)
self.assertEqual(
self.env["SteamGameId"],
self.env["SteamAppId"],
"Expected SteamGameId to be STEAM_COMPAT_APP_ID",
)
# PATHS
self.assertEqual(
self.env["STEAM_COMPAT_SHADER_PATH"],
self.env["STEAM_COMPAT_DATA_PATH"] + "/shadercache",
"Expected STEAM_COMPAT_SHADER_PATH to be set",
)
self.assertEqual(
self.env["STEAM_COMPAT_TOOL_PATHS"],
self.env["PROTONPATH"] + ":" + Path(__file__).parent.as_posix(),
"Expected STEAM_COMPAT_TOOL_PATHS to be set",
)
self.assertEqual(
self.env["STEAM_COMPAT_MOUNTS"],
self.env["STEAM_COMPAT_TOOL_PATHS"],
"Expected STEAM_COMPAT_MOUNTS to be set",
)
def test_set_env(self): def test_set_env(self):
"""Test set_env. """Test set_env.
Ensure no failures and verify that $EXE Verify that environment variables (dictionary) are set after calling set_env
""" """
result = None result = None
test_str = "foo" test_str = "foo"
@ -732,6 +827,44 @@ class TestGameLauncher(unittest.TestCase):
self.test_verb, self.test_verb,
"Expected PROTON_VERB to be set", "Expected PROTON_VERB to be set",
) )
# ULWGL
self.assertEqual(
self.env["ULWGL_ID"],
self.env["GAMEID"],
"Expected ULWGL_ID to be GAMEID",
)
self.assertEqual(
self.env["STEAM_COMPAT_APP_ID"],
"0",
"Expected STEAM_COMPAT_APP_ID to be 0",
)
self.assertEqual(
self.env["SteamAppId"],
self.env["STEAM_COMPAT_APP_ID"],
"Expected SteamAppId to be STEAM_COMPAT_APP_ID",
)
self.assertEqual(
self.env["SteamGameId"],
self.env["SteamAppId"],
"Expected SteamGameId to be STEAM_COMPAT_APP_ID",
)
# PATHS
self.assertEqual(
self.env["STEAM_COMPAT_SHADER_PATH"],
self.env["STEAM_COMPAT_DATA_PATH"] + "/shadercache",
"Expected STEAM_COMPAT_SHADER_PATH to be set",
)
self.assertEqual(
self.env["STEAM_COMPAT_TOOL_PATHS"],
self.env["PROTONPATH"] + ":" + Path(__file__).parent.as_posix(),
"Expected STEAM_COMPAT_TOOL_PATHS to be set",
)
self.assertEqual(
self.env["STEAM_COMPAT_MOUNTS"],
self.env["STEAM_COMPAT_TOOL_PATHS"],
"Expected STEAM_COMPAT_MOUNTS to be set",
)
def test_setup_pfx_symlinks(self): def test_setup_pfx_symlinks(self):
"""Test _setup_pfx for valid symlinks. """Test _setup_pfx for valid symlinks.