From cc1e6f47dd9838b066822162a607d2859c043aff Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Wed, 9 Sep 2026 19:16:30 -0400 Subject: refactor: unify flatpak targets with steam profiles --- tests/test_steam_service.py | 77 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tests/test_steam_service.py (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py new file mode 100644 index 0000000..849bb01 --- /dev/null +++ b/tests/test_steam_service.py @@ -0,0 +1,77 @@ +import sys +import types +import unittest +from pathlib import Path +from unittest.mock import Mock + + +sys.modules.setdefault( + "decky", + types.SimpleNamespace(DECKY_USER_HOME="/home/deck", logger=Mock()), +) +sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "py_modules")) + +from lsfg_vk.steam_service import SteamService, classify_shortcut_transport + + +class SteamTransportTests(unittest.TestCase): + def test_only_direct_canonical_flatpak_forms_are_classified(self): + self.assertEqual( + classify_shortcut_transport( + "/usr/bin/flatpak", + "run com.example.PCSX2 --fullscreen", + ), + {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, + ) + self.assertEqual( + classify_shortcut_transport( + "/usr/bin/flatpak run com.example.PCSX2", + "--fullscreen", + ), + {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, + ) + self.assertEqual( + classify_shortcut_transport( + "/usr/bin/bash", + "~/launch-game.sh --fullscreen", + ), + {"kind": "host"}, + ) + self.assertEqual( + classify_shortcut_transport( + "/usr/bin/flatpak", + "--user run com.example.PCSX2", + ), + {"kind": "host"}, + ) + self.assertEqual( + classify_shortcut_transport( + "/usr/bin/flatpak", + "run bash ~/launch-game.sh", + ), + {"kind": "host"}, + ) + + def test_shortcut_data_preserves_transport_inputs(self): + game = SteamService._shortcut_game( + { + "appid": 123456, + "AppName": "PCSX2 shortcut", + "Exe": "/usr/bin/flatpak", + "LaunchOptions": "run net.pcsx2.PCSX2 --fullscreen", + "StartDir": "/home/deck/Games", + } + ) + + self.assertEqual(game["appid"], "123456") + self.assertEqual(game["transport"], { + "kind": "flatpak", + "flatpakAppId": "net.pcsx2.PCSX2", + }) + self.assertEqual(game["executable"], "/usr/bin/flatpak") + self.assertEqual(game["arguments"], "run net.pcsx2.PCSX2 --fullscreen") + self.assertEqual(game["startDir"], "/home/deck/Games") + + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3 From 28ebc17785a8cca52f289b74261d1f310fd35904 Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Thu, 10 Sep 2026 07:08:19 -0400 Subject: fix: detect wrapped Flatpak shortcuts --- tests/test_steam_service.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py index 849bb01..9924186 100644 --- a/tests/test_steam_service.py +++ b/tests/test_steam_service.py @@ -51,6 +51,24 @@ class SteamTransportTests(unittest.TestCase): ), {"kind": "host"}, ) + self.assertEqual( + classify_shortcut_transport( + "~/.lsfg", + "run --branch=stable --arch=x86_64 com.example.PCSX2", + ), + {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, + ) + self.assertEqual( + classify_shortcut_transport( + "/home/deck/.lsfg", + "run com.example.PCSX2", + ), + {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, + ) + self.assertEqual( + classify_shortcut_transport("~/.lsfg", "--profile high"), + {"kind": "host"}, + ) def test_shortcut_data_preserves_transport_inputs(self): game = SteamService._shortcut_game( @@ -72,6 +90,21 @@ class SteamTransportTests(unittest.TestCase): self.assertEqual(game["arguments"], "run net.pcsx2.PCSX2 --fullscreen") self.assertEqual(game["startDir"], "/home/deck/Games") + def test_wrapped_flatpak_shortcut_remains_a_flatpak_target(self): + game = SteamService._shortcut_game( + { + "appid": 987654, + "AppName": "Wrapped Flatpak", + "Exe": "~/.lsfg", + "LaunchOptions": "run --branch=stable --arch=x86_64 com.example.Game", + } + ) + + self.assertEqual(game["transport"], { + "kind": "flatpak", + "flatpakAppId": "com.example.Game", + }) + if __name__ == "__main__": unittest.main() -- cgit v1.2.3 From 9902135e53be129bd6096d51d5e510ab298c1ae2 Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Thu, 10 Sep 2026 12:19:40 -0400 Subject: fix: handle bare Flatpak shortcut targets --- tests/test_steam_service.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py index 9924186..636c87f 100644 --- a/tests/test_steam_service.py +++ b/tests/test_steam_service.py @@ -23,6 +23,13 @@ class SteamTransportTests(unittest.TestCase): ), {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, ) + self.assertEqual( + classify_shortcut_transport( + "flatpak", + "run com.example.PCSX2 --fullscreen", + ), + {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, + ) self.assertEqual( classify_shortcut_transport( "/usr/bin/flatpak run com.example.PCSX2", -- cgit v1.2.3 From eb14f3b6fdb135e1c9fd608244aa67fc3eb6b662 Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Thu, 10 Sep 2026 15:47:27 -0400 Subject: test: cover explicit direct flatpak detection --- tests/test_steam_service.py | 99 +++++++++++---------------------------------- 1 file changed, 23 insertions(+), 76 deletions(-) (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py index 636c87f..719249d 100644 --- a/tests/test_steam_service.py +++ b/tests/test_steam_service.py @@ -11,73 +11,21 @@ sys.modules.setdefault( ) sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "py_modules")) -from lsfg_vk.steam_service import SteamService, classify_shortcut_transport +from lsfg_vk.steam_service import SteamService, is_direct_flatpak_shortcut -class SteamTransportTests(unittest.TestCase): - def test_only_direct_canonical_flatpak_forms_are_classified(self): - self.assertEqual( - classify_shortcut_transport( - "/usr/bin/flatpak", - "run com.example.PCSX2 --fullscreen", - ), - {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, - ) - self.assertEqual( - classify_shortcut_transport( - "flatpak", - "run com.example.PCSX2 --fullscreen", - ), - {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, - ) - self.assertEqual( - classify_shortcut_transport( - "/usr/bin/flatpak run com.example.PCSX2", - "--fullscreen", - ), - {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, - ) - self.assertEqual( - classify_shortcut_transport( - "/usr/bin/bash", - "~/launch-game.sh --fullscreen", - ), - {"kind": "host"}, - ) - self.assertEqual( - classify_shortcut_transport( - "/usr/bin/flatpak", - "--user run com.example.PCSX2", - ), - {"kind": "host"}, - ) - self.assertEqual( - classify_shortcut_transport( - "/usr/bin/flatpak", - "run bash ~/launch-game.sh", - ), - {"kind": "host"}, - ) - self.assertEqual( - classify_shortcut_transport( - "~/.lsfg", - "run --branch=stable --arch=x86_64 com.example.PCSX2", - ), - {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, - ) - self.assertEqual( - classify_shortcut_transport( - "/home/deck/.lsfg", - "run com.example.PCSX2", - ), - {"kind": "flatpak", "flatpakAppId": "com.example.PCSX2"}, - ) - self.assertEqual( - classify_shortcut_transport("~/.lsfg", "--profile high"), - {"kind": "host"}, - ) +class SteamShortcutTests(unittest.TestCase): + def test_only_direct_flatpak_targets_are_special(self): + self.assertTrue(is_direct_flatpak_shortcut("/usr/bin/flatpak")) + self.assertTrue(is_direct_flatpak_shortcut("flatpak")) + self.assertTrue(is_direct_flatpak_shortcut("/usr/bin/flatpak run com.example.Game")) + self.assertTrue(is_direct_flatpak_shortcut('~/.lsfg "/usr/bin/flatpak"')) + self.assertFalse(is_direct_flatpak_shortcut("/usr/bin/bash")) + self.assertFalse(is_direct_flatpak_shortcut("/home/deck/Emulation/tools/launchers/retroarch.sh")) + self.assertFalse(is_direct_flatpak_shortcut("/home/deck/Emulation/tools/launchers/ppsspp.sh")) + self.assertFalse(is_direct_flatpak_shortcut("/home/deck/AppImages/dusk.appimage")) - def test_shortcut_data_preserves_transport_inputs(self): + def test_shortcut_data_preserves_launch_shape_without_flatpak_identity(self): game = SteamService._shortcut_game( { "appid": 123456, @@ -89,28 +37,27 @@ class SteamTransportTests(unittest.TestCase): ) self.assertEqual(game["appid"], "123456") - self.assertEqual(game["transport"], { - "kind": "flatpak", - "flatpakAppId": "net.pcsx2.PCSX2", - }) + self.assertTrue(game["directFlatpak"]) + self.assertNotIn("transport", game) self.assertEqual(game["executable"], "/usr/bin/flatpak") self.assertEqual(game["arguments"], "run net.pcsx2.PCSX2 --fullscreen") self.assertEqual(game["startDir"], "/home/deck/Games") - def test_wrapped_flatpak_shortcut_remains_a_flatpak_target(self): + def test_emudeck_launcher_is_ordinary_non_steam(self): game = SteamService._shortcut_game( { "appid": 987654, - "AppName": "Wrapped Flatpak", - "Exe": "~/.lsfg", - "LaunchOptions": "run --branch=stable --arch=x86_64 com.example.Game", + "AppName": "1080 Snowboarding", + "Exe": '"/home/deck/Emulation/tools/launchers/retroarch.sh" -L core rom.z64', + "LaunchOptions": "", } ) - self.assertEqual(game["transport"], { - "kind": "flatpak", - "flatpakAppId": "com.example.Game", - }) + self.assertFalse(game["directFlatpak"]) + self.assertEqual( + game["executable"], + '"/home/deck/Emulation/tools/launchers/retroarch.sh" -L core rom.z64', + ) if __name__ == "__main__": -- cgit v1.2.3 From 9e5afad9226475bffe6f2cceb9e5405d16d17a65 Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Thu, 10 Sep 2026 15:54:01 -0400 Subject: test: retain released flatpak target recognition --- tests/test_steam_service.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py index 719249d..3f0283b 100644 --- a/tests/test_steam_service.py +++ b/tests/test_steam_service.py @@ -20,6 +20,8 @@ class SteamShortcutTests(unittest.TestCase): self.assertTrue(is_direct_flatpak_shortcut("flatpak")) self.assertTrue(is_direct_flatpak_shortcut("/usr/bin/flatpak run com.example.Game")) self.assertTrue(is_direct_flatpak_shortcut('~/.lsfg "/usr/bin/flatpak"')) + self.assertTrue(is_direct_flatpak_shortcut('~/lsfg "usr/bin/flatpak"')) + self.assertTrue(is_direct_flatpak_shortcut('~/.local/bin/mako-run "/usr/bin/flatpak"')) self.assertFalse(is_direct_flatpak_shortcut("/usr/bin/bash")) self.assertFalse(is_direct_flatpak_shortcut("/home/deck/Emulation/tools/launchers/retroarch.sh")) self.assertFalse(is_direct_flatpak_shortcut("/home/deck/Emulation/tools/launchers/ppsspp.sh")) -- cgit v1.2.3 From 7b9d1c604099dd21d6c710ca00dfd9b001afc172 Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Thu, 10 Sep 2026 16:41:00 -0400 Subject: test: keep steam shortcut discovery flatpak agnostic --- tests/test_steam_service.py | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py index 3f0283b..76cdf47 100644 --- a/tests/test_steam_service.py +++ b/tests/test_steam_service.py @@ -11,23 +11,11 @@ sys.modules.setdefault( ) sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "py_modules")) -from lsfg_vk.steam_service import SteamService, is_direct_flatpak_shortcut +from lsfg_vk.steam_service import SteamService class SteamShortcutTests(unittest.TestCase): - def test_only_direct_flatpak_targets_are_special(self): - self.assertTrue(is_direct_flatpak_shortcut("/usr/bin/flatpak")) - self.assertTrue(is_direct_flatpak_shortcut("flatpak")) - self.assertTrue(is_direct_flatpak_shortcut("/usr/bin/flatpak run com.example.Game")) - self.assertTrue(is_direct_flatpak_shortcut('~/.lsfg "/usr/bin/flatpak"')) - self.assertTrue(is_direct_flatpak_shortcut('~/lsfg "usr/bin/flatpak"')) - self.assertTrue(is_direct_flatpak_shortcut('~/.local/bin/mako-run "/usr/bin/flatpak"')) - self.assertFalse(is_direct_flatpak_shortcut("/usr/bin/bash")) - self.assertFalse(is_direct_flatpak_shortcut("/home/deck/Emulation/tools/launchers/retroarch.sh")) - self.assertFalse(is_direct_flatpak_shortcut("/home/deck/Emulation/tools/launchers/ppsspp.sh")) - self.assertFalse(is_direct_flatpak_shortcut("/home/deck/AppImages/dusk.appimage")) - - def test_shortcut_data_preserves_launch_shape_without_flatpak_identity(self): + def test_direct_flatpak_shortcut_is_ordinary_non_steam_metadata(self): game = SteamService._shortcut_game( { "appid": 123456, @@ -39,13 +27,15 @@ class SteamShortcutTests(unittest.TestCase): ) self.assertEqual(game["appid"], "123456") - self.assertTrue(game["directFlatpak"]) + self.assertEqual(game["name"], "PCSX2 shortcut") + self.assertTrue(game["nonSteam"]) + self.assertNotIn("directFlatpak", game) self.assertNotIn("transport", game) self.assertEqual(game["executable"], "/usr/bin/flatpak") self.assertEqual(game["arguments"], "run net.pcsx2.PCSX2 --fullscreen") self.assertEqual(game["startDir"], "/home/deck/Games") - def test_emudeck_launcher_is_ordinary_non_steam(self): + def test_emudeck_launcher_is_ordinary_non_steam_metadata(self): game = SteamService._shortcut_game( { "appid": 987654, @@ -55,11 +45,19 @@ class SteamShortcutTests(unittest.TestCase): } ) - self.assertFalse(game["directFlatpak"]) + self.assertEqual(game["appid"], "987654") + self.assertTrue(game["nonSteam"]) + self.assertNotIn("directFlatpak", game) self.assertEqual( game["executable"], '"/home/deck/Emulation/tools/launchers/retroarch.sh" -L core rom.z64', ) + self.assertEqual(game["arguments"], "") + + def test_shortcut_rejects_invalid_identity(self): + self.assertIsNone(SteamService._shortcut_game({"appid": 0, "AppName": "Bad"})) + self.assertIsNone(SteamService._shortcut_game({"appid": 1, "AppName": ""})) + self.assertIsNone(SteamService._shortcut_game("bad")) if __name__ == "__main__": -- cgit v1.2.3 From 252079e1df34329db1e3dc11c66c8c9d40a3a616 Mon Sep 17 00:00:00 2001 From: Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> Date: Thu, 10 Sep 2026 16:45:05 -0400 Subject: test: cover minimal steam shortcut metadata --- tests/test_steam_service.py | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py index 76cdf47..004ffb6 100644 --- a/tests/test_steam_service.py +++ b/tests/test_steam_service.py @@ -26,14 +26,11 @@ class SteamShortcutTests(unittest.TestCase): } ) - self.assertEqual(game["appid"], "123456") - self.assertEqual(game["name"], "PCSX2 shortcut") - self.assertTrue(game["nonSteam"]) - self.assertNotIn("directFlatpak", game) - self.assertNotIn("transport", game) - self.assertEqual(game["executable"], "/usr/bin/flatpak") - self.assertEqual(game["arguments"], "run net.pcsx2.PCSX2 --fullscreen") - self.assertEqual(game["startDir"], "/home/deck/Games") + self.assertEqual(game, { + "appid": "123456", + "name": "PCSX2 shortcut", + "nonSteam": True, + }) def test_emudeck_launcher_is_ordinary_non_steam_metadata(self): game = SteamService._shortcut_game( @@ -45,14 +42,11 @@ class SteamShortcutTests(unittest.TestCase): } ) - self.assertEqual(game["appid"], "987654") - self.assertTrue(game["nonSteam"]) - self.assertNotIn("directFlatpak", game) - self.assertEqual( - game["executable"], - '"/home/deck/Emulation/tools/launchers/retroarch.sh" -L core rom.z64', - ) - self.assertEqual(game["arguments"], "") + self.assertEqual(game, { + "appid": "987654", + "name": "1080 Snowboarding", + "nonSteam": True, + }) def test_shortcut_rejects_invalid_identity(self): self.assertIsNone(SteamService._shortcut_game({"appid": 0, "AppName": "Bad"})) -- cgit v1.2.3 From 81feb03288166755545401b9df2ff2c9bc3ae7d7 Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Fri, 11 Sep 2026 16:48:35 -0400 Subject: handle flatpak grey, id proton and exclusions --- tests/test_steam_service.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'tests/test_steam_service.py') diff --git a/tests/test_steam_service.py b/tests/test_steam_service.py index 004ffb6..75cdabf 100644 --- a/tests/test_steam_service.py +++ b/tests/test_steam_service.py @@ -15,7 +15,7 @@ from lsfg_vk.steam_service import SteamService class SteamShortcutTests(unittest.TestCase): - def test_direct_flatpak_shortcut_is_ordinary_non_steam_metadata(self): + def test_direct_flatpak_shortcut_is_marked(self): game = SteamService._shortcut_game( { "appid": 123456, @@ -30,6 +30,24 @@ class SteamShortcutTests(unittest.TestCase): "appid": "123456", "name": "PCSX2 shortcut", "nonSteam": True, + "isFlatpakShortcut": True, + }) + + def test_bare_flatpak_shortcut_is_marked(self): + game = SteamService._shortcut_game( + { + "appid": 654321, + "AppName": "Faugus shortcut", + "Exe": '"flatpak"', + "LaunchOptions": "run io.github.Faugus.faugus-launcher --game elliot", + } + ) + + self.assertEqual(game, { + "appid": "654321", + "name": "Faugus shortcut", + "nonSteam": True, + "isFlatpakShortcut": True, }) def test_emudeck_launcher_is_ordinary_non_steam_metadata(self): -- cgit v1.2.3