From 6ab0be6f9a5a3305e18bc0390742c38ef44d31bf Mon Sep 17 00:00:00 2001 From: nbenedek Date: Fri, 7 Apr 2023 03:03:27 +0200 Subject: [PATCH] shaarli: Completely uninstall app * remove data directory when app is uninstalled Tests: 1. Install and configure the app 2. Reinstall app and confirm the initial setup page is shown Signed-off-by: nbenedek [sunil: Update docstrings, make uninstall fail-safe] [sunil: Fix uninstall test by setting up after reinstall] Signed-off-by: Sunil Mohan Adapa Reviewed-by: Sunil Mohan Adapa --- plinth/modules/shaarli/__init__.py | 7 ++++++- plinth/modules/shaarli/privileged.py | 12 ++++++++++++ plinth/modules/shaarli/tests/test_functional.py | 5 +++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 plinth/modules/shaarli/privileged.py diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index ed7f054f2..5d78ed37a 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -12,7 +12,7 @@ from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.package import Packages -from . import manifest +from . import manifest, privileged _description = [ _('Shaarli allows you to save and share bookmarks.'), @@ -69,3 +69,8 @@ class ShaarliApp(app_module.App): """Install and configure the app.""" super().setup(old_version) self.enable() + + def uninstall(self): + """De-configure and uninstall the app.""" + super().uninstall() + privileged.uninstall() diff --git a/plinth/modules/shaarli/privileged.py b/plinth/modules/shaarli/privileged.py new file mode 100644 index 000000000..fc26a3ce6 --- /dev/null +++ b/plinth/modules/shaarli/privileged.py @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +"""Configure Shaarli.""" + +import shutil + +from plinth.actions import privileged + + +@privileged +def uninstall(): + """Remove Shaarli's data directory.""" + shutil.rmtree('/var/lib/shaarli/data', ignore_errors=True) diff --git a/plinth/modules/shaarli/tests/test_functional.py b/plinth/modules/shaarli/tests/test_functional.py index 3622245c1..4a1cb4fdf 100644 --- a/plinth/modules/shaarli/tests/test_functional.py +++ b/plinth/modules/shaarli/tests/test_functional.py @@ -74,3 +74,8 @@ class TestShaarliApp(functional.BaseAppTests): assert len(links) > 0 # TODO: Test deleting bookmarks. + + def test_uninstall(self, session_browser): + """After uninstall test, after installing run initial setup.""" + super().test_uninstall(session_browser) + self._shaarli_is_setup(session_browser)