diff --git a/src/ahriman/application/handlers/init.py b/src/ahriman/application/handlers/init.py index acdaa9c3..beed55da 100644 --- a/src/ahriman/application/handlers/init.py +++ b/src/ahriman/application/handlers/init.py @@ -39,4 +39,4 @@ class Init(Handler): :param architecture: repository architecture :param configuration: configuration instance """ - Application(architecture, configuration) + Application(architecture, configuration).repository.repo.init() diff --git a/src/ahriman/core/alpm/repo.py b/src/ahriman/core/alpm/repo.py index 6c83e481..077fd9ee 100644 --- a/src/ahriman/core/alpm/repo.py +++ b/src/ahriman/core/alpm/repo.py @@ -68,6 +68,16 @@ class Repo: cwd=self.paths.repository, logger=self.logger) + def init(self) -> None: + """ + create empty repository database + """ + Repo._check_output( + "repo-add", *self.sign_args, str(self.repo_path), + exception=None, + cwd=self.paths.repository, + logger=self.logger) + def remove(self, package: str, filename: Path) -> None: """ remove package from repository diff --git a/tests/ahriman/application/handlers/test_handler_init.py b/tests/ahriman/application/handlers/test_handler_init.py index 195365b2..4d70153c 100644 --- a/tests/ahriman/application/handlers/test_handler_init.py +++ b/tests/ahriman/application/handlers/test_handler_init.py @@ -11,6 +11,8 @@ def test_run(args: argparse.Namespace, configuration: Configuration, mocker: Moc must run command """ create_tree_mock = mocker.patch("ahriman.models.repository_paths.RepositoryPaths.create_tree") + init_mock = mocker.patch("ahriman.core.alpm.repo.Repo.init") Init.run(args, "x86_64", configuration) create_tree_mock.assert_called_once() + init_mock.assert_called_once() diff --git a/tests/ahriman/core/alpm/test_repo.py b/tests/ahriman/core/alpm/test_repo.py index e2b7a48f..c5db53f6 100644 --- a/tests/ahriman/core/alpm/test_repo.py +++ b/tests/ahriman/core/alpm/test_repo.py @@ -24,6 +24,17 @@ def test_repo_add(repo: Repo, mocker: MockerFixture) -> None: assert check_output_mock.call_args[0][0] == "repo-add" +def test_repo_init(repo: Repo, mocker: MockerFixture) -> None: + """ + must call repo-add with empty package list on repo initializing + """ + check_output_mock = mocker.patch("ahriman.core.alpm.repo.Repo._check_output") + + repo.init() + check_output_mock.assert_called_once() + assert check_output_mock.call_args[0][0] == "repo-add" + + def test_repo_remove(repo: Repo, mocker: MockerFixture) -> None: """ must call repo-remove on package addition