mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
resoolve dependencies by using local cache too (#107)
This commit is contained in:
parent
572880eb73
commit
a1d0e993a8
@ -142,8 +142,13 @@ class Application(ApplicationPackages, ApplicationRepository):
|
|||||||
|
|
||||||
while missing := missing_dependencies(with_dependencies.values()):
|
while missing := missing_dependencies(with_dependencies.values()):
|
||||||
for package_name, username in missing.items():
|
for package_name, username in missing.items():
|
||||||
package = Package.from_aur(package_name, self.repository.pacman, username)
|
if (source_dir := self.repository.paths.cache_for(package_name)).is_dir():
|
||||||
|
# there is local cache, load package from it
|
||||||
|
package = Package.from_build(source_dir, self.repository.architecture, username)
|
||||||
|
else:
|
||||||
|
package = Package.from_aur(package_name, self.repository.pacman, username)
|
||||||
with_dependencies[package.base] = package
|
with_dependencies[package.base] = package
|
||||||
|
|
||||||
# register package in local database
|
# register package in local database
|
||||||
self.database.remote_update(package)
|
self.database.remote_update(package)
|
||||||
self.repository.reporter.set_unknown(package)
|
self.repository.reporter.set_unknown(package)
|
||||||
|
@ -86,7 +86,11 @@ def test_with_dependencies(application: Application, package_ahriman: Package, p
|
|||||||
"python-installer": create_package_mock("python-installer"),
|
"python-installer": create_package_mock("python-installer"),
|
||||||
}
|
}
|
||||||
|
|
||||||
package_mock = mocker.patch("ahriman.models.package.Package.from_aur", side_effect=lambda *args: packages[args[0]])
|
mocker.patch("pathlib.Path.is_dir", autospec=True, side_effect=lambda p: p.name == "python")
|
||||||
|
package_aur_mock = mocker.patch("ahriman.models.package.Package.from_aur",
|
||||||
|
side_effect=lambda *args: packages[args[0]])
|
||||||
|
package_local_mock = mocker.patch("ahriman.models.package.Package.from_build",
|
||||||
|
side_effect=lambda *args: packages[args[0].name])
|
||||||
packages_mock = mocker.patch("ahriman.application.application.Application._known_packages",
|
packages_mock = mocker.patch("ahriman.application.application.Application._known_packages",
|
||||||
return_value={"devtools", "python-build", "python-pytest"})
|
return_value={"devtools", "python-build", "python-pytest"})
|
||||||
update_remote_mock = mocker.patch("ahriman.core.database.SQLite.remote_update")
|
update_remote_mock = mocker.patch("ahriman.core.database.SQLite.remote_update")
|
||||||
@ -94,11 +98,13 @@ def test_with_dependencies(application: Application, package_ahriman: Package, p
|
|||||||
|
|
||||||
result = application.with_dependencies([package_ahriman], process_dependencies=True)
|
result = application.with_dependencies([package_ahriman], process_dependencies=True)
|
||||||
assert {package.base: package for package in result} == packages
|
assert {package.base: package for package in result} == packages
|
||||||
package_mock.assert_has_calls([
|
package_aur_mock.assert_has_calls([
|
||||||
MockCall(package_python_schedule.base, application.repository.pacman, package_ahriman.packager),
|
MockCall(package_python_schedule.base, application.repository.pacman, package_ahriman.packager),
|
||||||
MockCall("python", application.repository.pacman, package_ahriman.packager),
|
|
||||||
MockCall("python-installer", application.repository.pacman, package_ahriman.packager),
|
MockCall("python-installer", application.repository.pacman, package_ahriman.packager),
|
||||||
], any_order=True)
|
], any_order=True)
|
||||||
|
package_local_mock.assert_has_calls([
|
||||||
|
MockCall(application.repository.paths.cache_for("python"), "x86_64", package_ahriman.packager),
|
||||||
|
], any_order=True)
|
||||||
packages_mock.assert_called_once_with()
|
packages_mock.assert_called_once_with()
|
||||||
|
|
||||||
update_remote_mock.assert_has_calls([
|
update_remote_mock.assert_has_calls([
|
||||||
|
Loading…
Reference in New Issue
Block a user