diff --git a/src/ahriman/application/handlers/handler.py b/src/ahriman/application/handlers/handler.py index e91de85e..b2849a70 100644 --- a/src/ahriman/application/handlers/handler.py +++ b/src/ahriman/application/handlers/handler.py @@ -21,8 +21,8 @@ from __future__ import annotations import argparse import logging -from multiprocessing import Pool +from multiprocessing import Pool from typing import Type from ahriman.application.lock import Lock diff --git a/tests/ahriman/application/conftest.py b/tests/ahriman/application/conftest.py index 18009794..2eb8d8b6 100644 --- a/tests/ahriman/application/conftest.py +++ b/tests/ahriman/application/conftest.py @@ -15,6 +15,10 @@ def application(configuration: Configuration, mocker: MockerFixture) -> Applicat @pytest.fixture -def lock(configuration: Configuration) -> Lock: - return Lock(argparse.Namespace(lock=None, force=False, unsafe=False, no_report=True), - "x86_64", configuration) +def args() -> argparse.Namespace: + return argparse.Namespace(lock=None, force=False, unsafe=False, no_report=True) + + +@pytest.fixture +def lock(args: argparse.Namespace, configuration: Configuration) -> Lock: + return Lock(args, "x86_64", configuration) diff --git a/tests/ahriman/application/handlers/test_handler.py b/tests/ahriman/application/handlers/test_handler.py new file mode 100644 index 00000000..3a07dc38 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler.py @@ -0,0 +1,27 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Handler +from ahriman.core.configuration import Configuration + + +def test_call(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must call inside lock + """ + mocker.patch("ahriman.application.handlers.Handler.run") + enter_mock = mocker.patch("ahriman.application.lock.Lock.__enter__") + exit_mock = mocker.patch("ahriman.application.lock.Lock.__exit__") + + assert Handler._call(args, "x86_64", configuration) + enter_mock.assert_called_once() + exit_mock.assert_called_once() + + +def test_call_exception(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must process exception + """ + mocker.patch("ahriman.application.lock.Lock.__enter__", side_effect=Exception()) + assert not Handler._call(args, "x86_64", configuration) diff --git a/tests/ahriman/application/handlers/test_handler_add.py b/tests/ahriman/application/handlers/test_handler_add.py new file mode 100644 index 00000000..671ff6ee --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_add.py @@ -0,0 +1,19 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Add +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + args.package = [] + args.without_dependencies = False + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.application.application.Application.add") + + Add.run(args, "x86_64", configuration) + application_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_clean.py b/tests/ahriman/application/handlers/test_handler_clean.py new file mode 100644 index 00000000..50555798 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_clean.py @@ -0,0 +1,22 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Clean +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + args.no_build = False + args.no_cache = False + args.no_chroot = False + args.no_manual = False + args.no_packages = False + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.application.application.Application.clean") + + Clean.run(args, "x86_64", configuration) + application_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_dump.py b/tests/ahriman/application/handlers/test_handler_dump.py new file mode 100644 index 00000000..c2ae9434 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_dump.py @@ -0,0 +1,17 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Dump +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.core.configuration.Configuration.dump") + + Dump.run(args, "x86_64", configuration) + application_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_rebuild.py b/tests/ahriman/application/handlers/test_handler_rebuild.py new file mode 100644 index 00000000..173e09b6 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_rebuild.py @@ -0,0 +1,19 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Rebuild +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + mocker.patch("pathlib.Path.mkdir") + application_packages_mock = mocker.patch("ahriman.core.repository.repository.Repository.packages") + application_mock = mocker.patch("ahriman.application.application.Application.update") + + Rebuild.run(args, "x86_64", configuration) + application_packages_mock.assert_called_once() + application_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_remove.py b/tests/ahriman/application/handlers/test_handler_remove.py new file mode 100644 index 00000000..5f9a22b2 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_remove.py @@ -0,0 +1,18 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Remove +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + args.package = [] + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.application.application.Application.remove") + + Remove.run(args, "x86_64", configuration) + application_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_report.py b/tests/ahriman/application/handlers/test_handler_report.py new file mode 100644 index 00000000..9dbba316 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_report.py @@ -0,0 +1,18 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Report +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + args.target = [] + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.application.application.Application.report") + + Report.run(args, "x86_64", configuration) + application_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_status.py b/tests/ahriman/application/handlers/test_handler_status.py new file mode 100644 index 00000000..8ded654e --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_status.py @@ -0,0 +1,22 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Status +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + args.ahriman = True + args.package = [] + args.without_dependencies = False + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.core.status.client.Client.get_self") + packages_mock = mocker.patch("ahriman.core.status.client.Client.get") + + Status.run(args, "x86_64", configuration) + application_mock.assert_called_once() + packages_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_sync.py b/tests/ahriman/application/handlers/test_handler_sync.py new file mode 100644 index 00000000..4926976e --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_sync.py @@ -0,0 +1,18 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Sync +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + args.target = [] + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.application.application.Application.sync") + + Sync.run(args, "x86_64", configuration) + application_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_update.py b/tests/ahriman/application/handlers/test_handler_update.py new file mode 100644 index 00000000..3de20521 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_update.py @@ -0,0 +1,40 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Update +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + args.package = [] + args.dry_run = False + args.no_aur = False + args.no_manual = False + args.no_vcs = False + mocker.patch("pathlib.Path.mkdir") + application_mock = mocker.patch("ahriman.application.application.Application.update") + updates_mock = mocker.patch("ahriman.application.application.Application.get_updates") + + Update.run(args, "x86_64", configuration) + application_mock.assert_called_once() + updates_mock.assert_called_once() + + +def test_run_dry_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run simplified command + """ + args.package = [] + args.dry_run = True + args.no_aur = False + args.no_manual = False + args.no_vcs = False + mocker.patch("pathlib.Path.mkdir") + updates_mock = mocker.patch("ahriman.application.application.Application.get_updates") + + Update.run(args, "x86_64", configuration) + updates_mock.assert_called_once() diff --git a/tests/ahriman/application/handlers/test_handler_web.py b/tests/ahriman/application/handlers/test_handler_web.py new file mode 100644 index 00000000..62f45f97 --- /dev/null +++ b/tests/ahriman/application/handlers/test_handler_web.py @@ -0,0 +1,19 @@ +import argparse + +from pytest_mock import MockerFixture + +from ahriman.application.handlers import Web +from ahriman.core.configuration import Configuration + + +def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None: + """ + must run command + """ + mocker.patch("pathlib.Path.mkdir") + setup_mock = mocker.patch("ahriman.web.web.setup_service") + run_mock = mocker.patch("ahriman.web.web.run_server") + + Web.run(args, "x86_64", configuration) + setup_mock.assert_called_once() + run_mock.assert_called_once()