From 0b9ab09879b1a1366b1345ea8ffab3010de93718 Mon Sep 17 00:00:00 2001 From: Evgeniy Alekseev Date: Wed, 20 Oct 2021 03:22:16 +0300 Subject: [PATCH] add patches to clean command --- src/ahriman/application/ahriman.py | 1 + src/ahriman/application/application.py | 6 +++++- src/ahriman/application/handlers/clean.py | 4 ++-- src/ahriman/core/repository/cleaner.py | 8 ++++++++ .../handlers/test_handler_clean.py | 1 + tests/ahriman/application/test_application.py | 19 ++++++++++++++----- tests/ahriman/core/repository/test_cleaner.py | 9 +++++++++ 7 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/ahriman/application/ahriman.py b/src/ahriman/application/ahriman.py index e991e17c..3603d729 100644 --- a/src/ahriman/application/ahriman.py +++ b/src/ahriman/application/ahriman.py @@ -300,6 +300,7 @@ def _set_repo_clean_parser(root: SubParserAction) -> argparse.ArgumentParser: parser.add_argument("--no-chroot", help="do not clear build chroot", action="store_true") parser.add_argument("--no-manual", help="do not clear directory with manually added packages", action="store_true") parser.add_argument("--no-packages", help="do not clear directory with built packages", action="store_true") + parser.add_argument("--no-patches", help="do not clear directory with patches", action="store_true") parser.set_defaults(handler=handlers.Clean, quiet=True, unsafe=True) return parser diff --git a/src/ahriman/application/application.py b/src/ahriman/application/application.py index e9fbeb58..1c910de3 100644 --- a/src/ahriman/application/application.py +++ b/src/ahriman/application/application.py @@ -162,7 +162,8 @@ class Application: for name in names: process_single(name) - def clean(self, no_build: bool, no_cache: bool, no_chroot: bool, no_manual: bool, no_packages: bool) -> None: + def clean(self, no_build: bool, no_cache: bool, no_chroot: bool, no_manual: bool, no_packages: bool, + no_patches: bool) -> None: """ run all clean methods. Warning: some functions might not be available under non-root :param no_build: do not clear directory with package sources @@ -170,6 +171,7 @@ class Application: :param no_chroot: do not clear build chroot :param no_manual: do not clear directory with manually added packages :param no_packages: do not clear directory with built packages + :param no_patches: do not clear directory with patches """ if not no_build: self.repository.clear_build() @@ -181,6 +183,8 @@ class Application: self.repository.clear_manual() if not no_packages: self.repository.clear_packages() + if not no_patches: + self.repository.clear_patches() def remove(self, names: Iterable[str]) -> None: """ diff --git a/src/ahriman/application/handlers/clean.py b/src/ahriman/application/handlers/clean.py index 9d6b8be9..7324de09 100644 --- a/src/ahriman/application/handlers/clean.py +++ b/src/ahriman/application/handlers/clean.py @@ -41,5 +41,5 @@ class Clean(Handler): :param configuration: configuration instance :param no_report: force disable reporting """ - Application(architecture, configuration, no_report).clean(args.no_build, args.no_cache, args.no_chroot, - args.no_manual, args.no_packages) + Application(architecture, configuration, no_report).clean( + args.no_build, args.no_cache, args.no_chroot, args.no_manual, args.no_packages, args.no_patches) diff --git a/src/ahriman/core/repository/cleaner.py b/src/ahriman/core/repository/cleaner.py index 62665a73..bdd8e7d4 100644 --- a/src/ahriman/core/repository/cleaner.py +++ b/src/ahriman/core/repository/cleaner.py @@ -76,3 +76,11 @@ class Cleaner(Properties): self.logger.info("clear built packages directory") for package in self.packages_built(): package.unlink() + + def clear_patches(self) -> None: + """ + clear directory with patches + """ + self.logger.info("clear patches directory") + for package in self.paths.patches.iterdir(): + shutil.rmtree(package) diff --git a/tests/ahriman/application/handlers/test_handler_clean.py b/tests/ahriman/application/handlers/test_handler_clean.py index 6b51eb01..8ee91491 100644 --- a/tests/ahriman/application/handlers/test_handler_clean.py +++ b/tests/ahriman/application/handlers/test_handler_clean.py @@ -17,6 +17,7 @@ def _default_args(args: argparse.Namespace) -> argparse.Namespace: args.no_chroot = False args.no_manual = False args.no_packages = False + args.no_patches = False return args diff --git a/tests/ahriman/application/test_application.py b/tests/ahriman/application/test_application.py index 985aa81f..78694c4b 100644 --- a/tests/ahriman/application/test_application.py +++ b/tests/ahriman/application/test_application.py @@ -212,7 +212,7 @@ def test_clean_build(application: Application, mocker: MockerFixture) -> None: must clean build directory """ clear_mock = mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_build") - application.clean(False, True, True, True, True) + application.clean(False, True, True, True, True, True) clear_mock.assert_called_once() @@ -221,7 +221,7 @@ def test_clean_cache(application: Application, mocker: MockerFixture) -> None: must clean cache directory """ clear_mock = mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_cache") - application.clean(True, False, True, True, True) + application.clean(True, False, True, True, True, True) clear_mock.assert_called_once() @@ -230,7 +230,7 @@ def test_clean_chroot(application: Application, mocker: MockerFixture) -> None: must clean chroot directory """ clear_mock = mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_chroot") - application.clean(True, True, False, True, True) + application.clean(True, True, False, True, True, True) clear_mock.assert_called_once() @@ -239,7 +239,7 @@ def test_clean_manual(application: Application, mocker: MockerFixture) -> None: must clean manual directory """ clear_mock = mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_manual") - application.clean(True, True, True, False, True) + application.clean(True, True, True, False, True, True) clear_mock.assert_called_once() @@ -248,7 +248,16 @@ def test_clean_packages(application: Application, mocker: MockerFixture) -> None must clean packages directory """ clear_mock = mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_packages") - application.clean(True, True, True, True, False) + application.clean(True, True, True, True, False, True) + clear_mock.assert_called_once() + + +def test_clean_patches(application: Application, mocker: MockerFixture) -> None: + """ + must clean packages directory + """ + clear_mock = mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_patches") + application.clean(True, True, True, True, True, False) clear_mock.assert_called_once() diff --git a/tests/ahriman/core/repository/test_cleaner.py b/tests/ahriman/core/repository/test_cleaner.py index 0cae5cb5..84e32996 100644 --- a/tests/ahriman/core/repository/test_cleaner.py +++ b/tests/ahriman/core/repository/test_cleaner.py @@ -82,3 +82,12 @@ def test_clear_packages(cleaner: Cleaner, mocker: MockerFixture) -> None: cleaner.clear_packages() Path.unlink.assert_has_calls([mock.call(), mock.call(), mock.call()]) + + +def test_clear_patches(cleaner: Cleaner, mocker: MockerFixture) -> None: + """ + must clear directory with patches + """ + _mock_clear(mocker) + cleaner.clear_patches() + _mock_clear_check()