diff options
| author | Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> | 2026-09-10 15:55:03 -0400 |
|---|---|---|
| committer | Kurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com> | 2026-09-10 15:55:03 -0400 |
| commit | 8a74b326b65d56808cf3ddb464e55ab0d1a45074 (patch) | |
| tree | a7bdb5d77f996ac30d2e26b87262821ccf12e851 | |
| parent | 9e5afad9226475bffe6f2cceb9e5405d16d17a65 (diff) | |
| download | decky-lsfg-vk-8a74b326b65d56808cf3ddb464e55ab0d1a45074.tar.gz decky-lsfg-vk-8a74b326b65d56808cf3ddb464e55ab0d1a45074.zip | |
test: cover flatpak cleanup on plugin uninstall
| -rw-r--r-- | tests/test_plugin_migration.py | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/tests/test_plugin_migration.py b/tests/test_plugin_migration.py index a392f85..ab036b0 100644 --- a/tests/test_plugin_migration.py +++ b/tests/test_plugin_migration.py @@ -6,7 +6,7 @@ from unittest.mock import Mock class PluginMigrationTests(unittest.TestCase): - def test_migration_only_runs_decky_path_migrations(self): + def _load_plugin(self): decky = types.SimpleNamespace( DECKY_HOME="/decky", DECKY_USER_HOME="/home/deck", @@ -19,10 +19,24 @@ class PluginMigrationTests(unittest.TestCase): previous_tomllib = sys.modules.get("tomllib") sys.modules["decky"] = decky sys.modules["tomllib"] = types.SimpleNamespace(loads=Mock()) - try: - sys.path.insert(0, "py_modules") - from lsfg_vk.plugin import Plugin + sys.path.insert(0, "py_modules") + from lsfg_vk.plugin import Plugin + return Plugin, decky, previous_decky, previous_tomllib + def _restore(self, previous_decky, previous_tomllib): + sys.path.remove("py_modules") + if previous_decky is None: + sys.modules.pop("decky", None) + else: + sys.modules["decky"] = previous_decky + if previous_tomllib is None: + sys.modules.pop("tomllib", None) + else: + sys.modules["tomllib"] = previous_tomllib + + def test_migration_only_runs_decky_path_migrations(self): + Plugin, decky, previous_decky, previous_tomllib = self._load_plugin() + try: plugin = Plugin.__new__(Plugin) plugin.installation_service = Mock() plugin.flatpak_service = Mock() @@ -33,17 +47,24 @@ class PluginMigrationTests(unittest.TestCase): decky.migrate_settings.assert_called_once() decky.migrate_runtime.assert_called_once() plugin.installation_service.install.assert_not_called() - plugin.flatpak_service.migrate_v2.assert_not_called() + plugin.flatpak_service.prepare_app.assert_not_called() + finally: + self._restore(previous_decky, previous_tomllib) + + def test_uninstall_cleans_owned_flatpak_state(self): + Plugin, _decky, previous_decky, previous_tomllib = self._load_plugin() + try: + plugin = Plugin.__new__(Plugin) + plugin.installation_service = Mock() + plugin.flatpak_service = Mock() + plugin.flatpak_service.remove_plugin_owned_environment.return_value = {"success": True} + + asyncio.run(plugin._uninstall()) + + plugin.flatpak_service.remove_plugin_owned_environment.assert_called_once_with() + plugin.installation_service.cleanup_on_uninstall.assert_called_once_with() finally: - sys.path.remove("py_modules") - if previous_decky is None: - sys.modules.pop("decky", None) - else: - sys.modules["decky"] = previous_decky - if previous_tomllib is None: - sys.modules.pop("tomllib", None) - else: - sys.modules["tomllib"] = previous_tomllib + self._restore(previous_decky, previous_tomllib) if __name__ == "__main__": |
