diff --git a/src/ahriman/core/alpm/repo.py b/src/ahriman/core/alpm/repo.py index 85da514e..c4a78f0e 100644 --- a/src/ahriman/core/alpm/repo.py +++ b/src/ahriman/core/alpm/repo.py @@ -66,7 +66,7 @@ class Repo(LazyLogging): path(Path): path to archive to add """ check_output( - "repo-add", *self.sign_args, "--remove", str(self.repo_path), str(path), + "repo-add", *self.sign_args, "-R", str(self.repo_path), str(path), exception=BuildError.from_process(path.name), cwd=self.paths.repository, logger=self.logger, @@ -76,13 +76,8 @@ class Repo(LazyLogging): """ create empty repository database. It just calls add with empty arguments """ - # since pacman-6.1.0 repo-add doesn't create empty database in case if no packages supplied - # this code creates empty files instead - if self.repo_path.exists(): - return # database is already created, skip this part - - self.repo_path.touch(exist_ok=True) - (self.paths.repository / f"{self.name}.db").symlink_to(self.repo_path) + check_output("repo-add", *self.sign_args, str(self.repo_path), + cwd=self.paths.repository, logger=self.logger, user=self.uid) def remove(self, package: str, filename: Path) -> None: """ diff --git a/tests/ahriman/core/alpm/test_repo.py b/tests/ahriman/core/alpm/test_repo.py index 03714216..db52b1e3 100644 --- a/tests/ahriman/core/alpm/test_repo.py +++ b/tests/ahriman/core/alpm/test_repo.py @@ -26,28 +26,13 @@ def test_repo_add(repo: Repo, mocker: MockerFixture) -> None: def test_repo_init(repo: Repo, mocker: MockerFixture) -> None: """ - must create empty database files + must call repo-add with empty package list on repo initializing """ - mocker.patch("pathlib.Path.exists", return_value=False) - touch_mock = mocker.patch("pathlib.Path.touch") - symlink_mock = mocker.patch("pathlib.Path.symlink_to") + check_output_mock = mocker.patch("ahriman.core.alpm.repo.check_output") repo.init() - touch_mock.assert_called_once_with(exist_ok=True) - symlink_mock.assert_called_once_with(repo.repo_path) - - -def test_repo_init_skip(repo: Repo, mocker: MockerFixture) -> None: - """ - must do not create files if database already exists - """ - mocker.patch("pathlib.Path.exists", return_value=True) - touch_mock = mocker.patch("pathlib.Path.touch") - symlink_mock = mocker.patch("pathlib.Path.symlink_to") - - repo.init() - touch_mock.assert_not_called() - symlink_mock.assert_not_called() + check_output_mock.assert_called_once() # it will be checked later + assert check_output_mock.call_args[0][0] == "repo-add" def test_repo_remove(repo: Repo, mocker: MockerFixture) -> None: